If you've been thinking about getting into 3D printing, or upgrading from a smaller machine, the Creality K1 Max 2025 3D printer, currently discounted as part of the company's Halloween sale, combines a generous build area with fast printing speeds and AI-assisted features.
The K1 Max is particularly appealing if you've outgrown a smaller 3D printer or want to tackle more ambitious projects without spending hours waiting for each print to complete. We tested out the 2023 model and came away highly impressed with its speed and accuracy.
• Best for: Hobbyists, makers, designers, and small businesses that want to create larger models, prototypes, and functional parts.
• The deal: The Creality K1 Max 2025 3D printer is $549 (was $899) at Creality Store.
K1 Max 2025 AI Fast 3D Printer: was $899 now $549
This enclosed 3D printer offers 600mm/s maximum printing speed, 300mm cubed build volume, AI LiDAR, camera monitoring, automatic leveling, 300°C nozzle, dual-gear extrusion, Wi-Fi connectivity, and power-loss recovery for projects.View Deal
In his four-and-a-half-star review, our expert Alastair said: "The Creality K1 Max offers an impressive blend of innovation, speed, and quality... The machine's AI-driven capabilities certainly set a new standard in handling complex designs, while the extensive material compatibility and decent build volume make it an ideal solution for all levels of 3D print enthusiasts."
He added that "The K1 Max offers something new and completely refined. The enclosed design, network operation, AI monitoring and print quality make it stand out", describing the machine as "close to perfect".
Price context & historical valueCreality Store has reduced the price of the K1 Max 2025 3D printer from $899 to $549 as part of its Halloween sale, saving you a huge $350. We've seen it on sale for a few dollars cheaper in the past, but this is a great deal and one I'd definitely recommend.
Should you buy it?✅ Buy the Creality K1 Max 2025 if...
You want to create larger 3D prints, work on detailed prototypes, or move beyond the limitations of a smaller printer. It's also worth considering if automatic bed leveling and AI-assisted monitoring appeal to you.
❌ Skip the Creality K1 Max 2025 if...
You only plan to print small objects occasionally. A compact, less expensive printer may be more than enough.
Private Internet Access (PIA) has announced the addition of 10 new locations to its server network, building on recent expansions by adding servers in the Americas, the Middle East, Africa, and Australia.
The announcement follows the addition of 15 new locations in September 2026 and forms part of a larger effort to improve and expand the Colorado-based VPN’s server network.
The full list of new locations includes:
PIA says the new locations include some virtual servers, writing in the announcement: “Virtual server locations allow us to offer our users more locations while ensuring they meet our strict privacy and security standards”.
Virtual servers are employed by all major consumer VPNs and are considered as safe and reliable as on-site servers if properly managed.
As we recently covered, previous expansions have focused on the Caribbean, Central and Southeast Asia, with new dedicated streaming servers in Europe and the Americas.
According to PIA, these recent expansions bring the total number of locations in its network to 170 locations across 104 countries and territories.
However, our independent tracking suggests the firm might be speaking a little too modestly about its total number of locations – our testing suggests PIA currently offers 176 server locations in 112 countries.
More curiously, our numbers match what PIA's Windows app shows too, so it seems PIA's press release isn't quite showing just how vast its improvements have been in recent months.
Like most consumer VPNs, PIA leans towards North America and Europe with its server network, offering 69 locations in the former and 50 in the latter.
Asia comes in third with 33 locations to choose from, while South America, Oceania and Africa get nine, eight, and seven locations respectively.
PIA is certainly no slouch when it comes to choice of server locations, but it still falls behind industry leaders like NordVPN (225 locations in 150 countries) and ExpressVPN (196 locations in 113 countries).
Why does having more VPN server locations matter? The ability to connect to more locations across the globe is one of the factors we look for when choosing the best VPNsAs our Private Internet Access review details, PIA fills a niche for budget-conscious users looking for solid privacy tools and customization – and by expanding its server network, PIA has made itself even easier to recommend for a wider range of potential users.
For certain use cases, a VPN is only as strong as its server network. Users hoping to stream high-definition video over a VPN will look for options with dedicated streaming servers, and those wanting to access content in other countries while travelling will opt for a VPN with plenty of server locations across the globe.
Multiple locations within the same country or region are also welcome – if a VPN has multiple servers in, say, California, users have options if one starts lagging or goes offline altogether.
The five options in our list of the best VPNs all offer a large, varied server network, with some offering dedicated locations for streaming and gaming
Though it is one of the best cheap VPNs, PIA doesn’t rank in our main list just yet – but continued expansion of its network is sure to make this budget-friendly option a stronger contender.
If you're building a NAS or running out of room on your existing one, you'll know that high-capacity hard drives can be expensive. But one I'd definitely consider is the 16TB Seagate IronWolf, which is tailored for adding more space for backups, media libraries, or shared files.
Ideal for NAS owners, home server enthusiasts, content creators, and small businesses needing large amounts of always-accessible storage, the 16TB Seagate IronWolf NAS hard drive is $671 (was $790) at Newegg.
Unlike an ordinary desktop hard drive, the IronWolf NAS is designed to operate continuously in NAS systems that remain powered on throughout the day and night. The drive uses conventional magnetic recording (CMR), useful in RAID configurations, and it spins at 7200 RPM and includes a 256MB cache.
Today's best Seagate NAS drive deal16TB IronWolf NAS Hard Drive: was $789.75 now $670.99
The 16TB Seagate NAS drive features 7200 RPM performance, 256MB cache, SATA 6Gbps connectivity, CMR recording, rotational vibration sensors, AgileArray optimization, IronWolf Health Management, and 24/7 operational support capabilities.View Deal
While we haven't tested the 16TB capacity drive, we have gone hands-on with the 8TB Seagate Ironwolf. We scored it 4 stars in our review, and Seagate NAS drives have always proved reliable in our tests - although the skyrocketing component prices are starting to bite now.
16TB of hard drive space is enough to comfortably store thousands of high-resolution photographs, large video libraries, computer backups, and shared documents.
Seagate's AgileArray technology helps optimize performance in multi-bay NAS systems, while rotational vibration sensors help maintain stability. There's also IronWolf Health Management, which provides monitoring and diagnostic information on compatible devices.
The 180TB/year workload rating makes the drive suitable for demanding home and small-business environments.
Price Context & Historical ValueNewegg is selling the 16TB Seagate IronWolf for $670.99, down from $789.75. That's a saving of $118.76, or approximately 15%, bringing the cost to around $41.94 per terabyte. This is far from the cheapest it's every been however, as we've seen it as low as $579.99 in the past year, and even cheaper when it first came out. But that's the component cost crisis for you, pushing up prices even on HDDs.
Should you buy it?✅ Buy the 16TB Seagate IronWolf NAS hard drive if...
You own a NAS and need more room for backups, media files, or shared storage. The combination of 16TB capacity, CMR recording, and NAS-specific features make this a practical upgrade.
❌ Skip the 16TB Seagate IronWolf NAS hard drive if...
You only need a small amount of additional storage or want a portable drive that connects directly to your computer. You should also look for an SSD if transfer speed is your main priority.
For technology teams, connecting telemetry has traditionally been seen as a route to greater visibility. The assumption is straightforward: the more information available about what is happening across an environment, the easier it should be to understand problems and respond to them.
But as modern technology environments have grown in scale and complexity, that equation no longer looks quite so simple and teams have found themselves dealing with fragmented telemetry and unclear signals. It now takes longer to understand what’s gone wrong, and even longer to fix it. And to add to the challenge further, the cost of storing and processing all this telemetry and data continues to be on the rise.
This is prompting organizations to reconsider where the problem should be addressed. Rather than collecting everything and attempting to make sense of it later, attention is shifting towards improving telemetry earlier in its lifecycle. Filtering, enriching and directing it from the outset can make the information reaching teams more relevant and ultimately easier to act on.
More data doesn’t always mean better insightThe volume of telemetry available isn’t the fundamental issue. Its quality is. As AI-driven capabilities become deeply embedded in software delivery and operations, the quality of observability telemetry becomes even more important. Collecting telemetry without filtering out what isn’t needed can leave employees spending more time managing information than extracting value from it.
Fragmentation makes this even more challenging. With data sitting across several tools and agents, each of which generates varied forms of signal and alert. When an outage occurs, teams may then need to piece together inconsistent information from across those tools before they can understand the root-cause of the problem. Consuming valuable time while the impact on the business continues to grow.
There is also a significant financial cost attached to this approach. Processing and storing telemetry and data at scale requires considerable resources, particularly when organizations are retaining information that contributes more noise than insight. In the traditional sense, this isn’t a technology problem. It’s a telemetry and data quality concern, and the longer it’s ignored, the worse it usually gets.
Rethinking where telemetry is processedOne way organizations are responding is by moving intelligence further upstream in the technology stack. In practice, that means making decisions about telemetry earlier – filtering out what isn’t useful, enriching important information and routing meaningful telemetry before it reaches downstream systems.
Teams are beginning to collect, process and route relevant observability telemetry in real-time before it is ingested into downstream systems. As a result, there is a less volume to handle, reduced expenses and cleaner telemetry to deal with since only the relevant signals are sent downstream.
Open standards such as OpenTelemtry are making it increasingly possible to take this approach across complex environments. They allow teams to gather telemetry consistently without being dependent on a particular vendor or set of tools. That flexibility is particularly valuable when working with intricate, distributed systems that span several clouds, security and storage platforms.
Furthermore, as environments continue to evolve, it makes adapting to them that much easier.
AI needs reliable information to make reliable decisionsThe implications become particularly important as organizations introduce more AI-powered capabilities into their operations. AI systems depend on accurate, contextualized telemetry and data to produce insights and automate decisions.
Teams are not only slowed down by incomplete or cluttered telemetry, but it’s this simple: poor quality telemetry leads to poor quality insights. When those insights are applied to large-scale automated decision-making, the margin for error drastically lowers.
The same principle applies to trust. Teams responsible for automated systems need to understand what has happened and explain why decisions about performance or security have been made. Doing so becomes much more difficult when those decisions are based on inconsistent information.
And this requirement for confidence matters far beyond just the technical teams. As senior management and board members are being increasingly asked to support AI-driven decision making, they need to trust the information those decisions are built upon. Credible, consistent telemetry and data can make that conversation much simpler.
The operational advantages are also evident. Teams can work quicker if they aren’t continuously battling erratic telemetry and data. They spend less time on manual research, detect issues early, and automate with greater confidence.
A strong telemetry and data foundation and a unified, context-driven platform not only enhance daily operations but also increases the successes of the AI-powered capabilities the organization invests in over time.
Quality has to be built in from the beginningUltimately, faster innovation and better customer outcomes depend on organizations having useful telemetry and signals available when they are needed. The good news is that it doesn't require starting from scratch, it's about making choices early in the telemetry lifecycle.
By introducing intelligence at that stage, teams can improve the quality of what ultimately reaches their observability platforms and ensure it can scale as their environments grow. The advantage will not come from simply collecting more. It will come from ensuring the telemetry an organization does collect is relevant, trustworthy and ready to support action.
We've featured the best business intelligence platform.
This article was produced as part of TechRadar Pro Perspectives, our channel to feature the best and brightest minds in the technology industry today.
The views expressed here are those of the author and are not necessarily those of TechRadarPro or Future plc. If you are interested in contributing find out more here: https://www.techradar.com/pro/perspectives-how-to-submit
I've been reporting on AI for a year and a half now. Throughout that time, I’ve regularly visited Reddit's r/isthisAI community. This is where people share suspicious photos, videos and messages and ask other users to help them work out whether they're real or AI-generated.
I find it fascinating to see where AI is showing up in everyday life. But some of the posts are also pretty worrying. I've seen people questioning whether photos of damage to rental properties have been faked, whether someone their relative is dating actually exists, whether an ultrasound is real or whether the adorable puppy they're about to buy is just an illusion.
Of course, scams and deception like these have been around for years. But what's worrying is how AI can make them much both easier to pull off and harder to spot. I became so interested in this that I even ran my own series of tests, trying to create fake certificates, fossils and receipts to see whether ChatGPT would stop me. Most of the time, it didn’t.
While plenty of us have got used to questioning what we see online, not everyone knows just how convincing AI-generated content has become. That might be particularly true of friends and family who are less familiar with the technology.
So I've picked out some of the most worrying examples I've come across, along with a few practical ways to protect yourself and the people you care about. Because I think we could all benefit from knowing a little more about how AI can be used to deceive us.
1. Rental property damage(Image credit: Reddit)I've seen quite a few posts questioning whether AI has been used to fake damage to rental properties, like cracked floor tiles, stained rugs and, most recently, an overflowing toilet.
The concern is that landlords or holiday rental hosts could use manipulated photos to claim that guests and renters have caused damage and demand money to cover repairs.
Some of the examples I've seen are surprisingly convincing and I think the reason they're so difficult to spot is that much of the surrounding room looks perfectly normal. It's only the supposed damage that's suspicious.
I recommend taking plenty of photos when you arrive at a holiday rental, and again before you leave. That way, if you're ever accused of causing damage you don't recognize, you've got your own evidence to back you up.
2. Fake notices, warnings and announcements(Image credit: Reddit)I've seen a lot of suspicious notices circulating online over the past few months. Everything from warnings supposedly issued by schools and councils to missing pet posters and strange announcements pinned to noticeboards.
Granted, I've also seen plenty of bizarre notices in the wild that are real. But AI makes it incredibly easy to create convincing fakes and even the little details that might once have given them away, like handwritten text, marker pen or crumpled paper, are becoming more realistic.
The problem is that these notices often look like something someone has photographed them in passing, which can make them feel more authentic too. This notice about a drinking bottle is one example that really stumped Reddit for a while but turned out to be AI.
If you see an alarming warning or announcement, especially one that's being widely shared on social media, try to find its original source first. If it claims to come from a school, council or organization, then check whether they've published it through their official channels.
3. Real-world events(Image credit: Reddit)This is one of the most disturbing uses of AI-generated imagery I've come across recently. We've all seen fake images of things that never happened. But I've also noticed more images and videos circulating that claim to show events that genuinely took place.
Which I think makes them particularly misleading. Someone might check whether an incident really happened, find that it did, so then they'd assume the accompanying photos must be authentic too. One particularly upsetting example involved AI-generated images claiming to show a tragic incident at a Yorkshire wildlife park. These images can spread quickly because they're attached to stories people are already interested in.
If you come across dramatic images of a breaking news story, check whether they're being used by reputable news organizations or have been published by an official source. And remember that confirming an event happened doesn't automatically confirm that every photo or video claiming to show it is real.
4. Romance scams(Image credit: Reddit)This is one of the most upsetting sort of scams I've noticed on r/isthisAI. People regularly post photographs of someone their parent, grandparent or other relative has met online, asking whether the person actually exists. There are people worried about their aunts, their dads and their friends' grandparents.
A familiar pattern is someone claiming to work overseas or travel constantly, often with a convincing looking photo at an airport or in a workplace. Eventually, there tends to be a medical emergency or a problem accessing money so they ask for financial help.
Of course, romance scams have existed for decades. But AI-generated photos, messages and even video can give scammers more ways to build a believable identity. The difficult part is that people can become very emotionally invested in these relationships. Being told that someone they've fallen for might not exist can be incredibly painful and I’ve been surprised to read anecdotes of people still not believing their concerned loved ones even when they’re shown irrefutable evidence.
If you're worried about a friend or relative, try to approach the conversation gently. Encourage them to verify the person's identity independently, be wary of excuses for never meeting in person and, above all, never send money to someone whose identity they can't establish.
5. Pet scams(Image credit: Reddit)Who doesn't love an adorable puppy photo? And that's exactly why these scams can be so effective. I've seen people on Reddit questioning whether photographs of dogs they're thinking of buying are AI-generated. In one example, someone was worried their mother was being scammed. In another, someone was trying to buy a puppy through Facebook but they were concerned some of the details in photos of the cute little guy didn’t quite add up.
The danger is that a realistic-looking photograph can help convince someone that a puppy exists and is available to buy, even when the seller isn't legitimate. Scammers might then ask for deposits or delivery fees before disappearing.
For me, this is an important point to get across to friends and family. Rather than focusing entirely on spotting telltale details in AI-generated images, look at what someone is asking you to do. Are they demanding money upfront and inventing reasons for extra charges? They should raise major red flags.
Always try to see a puppy in person before paying, and check the seller's credentials. A convincing photo, no matter how cute, isn’t a guarantee that an animal is available to buy. It’s not even a guarantee that it exists.
6. Scoring political points with misinformation(Image credit: Reddit)I'd hope most people are now aware that AI-generated images are often used to spread political misinformation. But judging by some of the things that still circulate on social media, there's plenty of reason to be concerned.
I've seen posts questioning whether political images are genuine, including this example shared by an Ohio conservative political action committee's Facebook page.
These images can be particularly effective when they reinforce something that someone already believes. Which means that if a picture appears to confirm your opinion of a politician, protest or political movement, you might be less inclined to question it.
My advice is to be especially suspicious of images that provoke an immediate emotional reaction, whether that's outrage, fear or even satisfaction. Look for the original source, check whether credible news organizations have verified the claim and resist the temptation to share something simply because it seems believable.
7. Fake documents, like medical photos, receipts and plane tickets(Image credit: Reddit)Another category I've noticed involves people questioning whether documents or photographs have been created to support a lie. For example, one Reddit user asked whether their ex had used AI to create a fake plane ticket and another wanted to know if an ultrasound had been faked with AI.
This is particularly interesting to me because I ran my own experiment to see whether ChatGPT would help me create fake evidence, including receipts and certificates. And in many cases, it did.
Documents that once might have required some really good Photoshop skills can now be much easier to fabricate. And as AI gets better at producing convincing text and layouts, spotting a fake simply by looking at it is becoming way less reliable.
If someone sends you a document as proof of something important, think about whether there's another way to verify it. For example, a booking reference may be something you can check directly with the relevant company. And a photograph of a medical document should never be treated as definitive proof of someone's health or circumstances either.
How to check if something is AIWe've got a more in-depth guide to spotting convincing AI images, deepfakes and scams, but there are a few simple things worth remembering.
Firstly, you can try reverse image searching suspicious photos with Google Lens. You can also check where a story or image originally came from and verify any claims through independent sources.
There are also tools that can help. Google recently expanded access to its SynthID Detector, which can identify invisible watermarks in AI-generated content from some AI tools, but not all of them. Just remember that if it doesn't detect a watermark, that doesn't necessarily mean something is real either.
But I think the most useful thing we can teach our friends and family is to look beyond whether something looks like AI and ask a more important question: What is someone trying to get me to believe or do?
Because whether it's a fake puppy or an urgent request for money from an attractive stranger, that's often the biggest warning sign. And the one we should pay the most attention to as it becomes even harder to distinguish what’s AI from what’s real.
Since the release of ChatGPT in late 2022, AI developers have entered into a frenzied arms race of hyperscaler data center build outs, silicon development, and huge power grid expansions.
The level of investment made by AI developers is unlike anything that has been seen (or spent) before. But a key question that IT leaders, investors, and enthusiasts keep asking is how will all this investment be paid for?
New analysis by Marin Ivezic, Founder of Applied Quantum, has found that the math really isn’t adding up. In order to justify the colossal investment, AI would need to generate approximately $2.5 trillion in annual revenue. Current estimates aren’t even close.
AI must replace 250 million jobsOptimistic estimates put AI’s current revenues at between $150 billion and $250 billion per year, which is a multi-trillion shortfall.
Ivezic theorizes that AI would need to replace or deliver the equivalent productivity gains of 250 million full-time jobs in order to meet the $2.5 trillion revenue requirement - assuming each full-time employee costs $100,000.
The $2.5 trillion investment can be broken down into the $1.5 trillion already spent on hardware investments since 2022, with a subsequent $1 trillion being spent on additional investments every year. But there is one small problem: the US only has 159 million nonfarm jobs.
The infrastructure providers are also having difficulties reckoning with spending. High-performance AI chips are made obsolete around every five years, but the data centers infrastructure they are installed in is expected to last around 20 years - resulting in enormous depreciation costs. This problem is what Ivezic calls the ‘50-Cent Rule’; providers must generate around 50 cents in annual revenue for every single dollar they invest.
This is compounded by AI models that become cheaper to use but deliver far superior capabilities over previous models. GPT-4-class capability models for example have dropped in price 100-fold since 2022, but the costs borne by infrastructure providers have not dropped at all - and are rising instead - making it even harder for them to make a return on their initial investment.
This is a concerning development that echoes the dot-com bubble, Ivezic says. Similarly to how providers are footing the bill for the underlying AI infrastructure, telecommunications companies spent a fortune laying the fiber networks that powered the dot-com boom. Those telecommunications companies could not claw back their investment and - in the famous case of Global Crossing - went bankrupt.
The point Ivezic makes is that the companies that built on the infrastructure made a fortune, while those who funded the buildout were left holding astronomical investment costs without a way out.
This $2.5 trillion of investment eventually needs to be paid, and the entire infrastructure market rests atop this bubble. AI is getting cheaper, more advanced, and businesses are finding new ways to leverage the technology. But growth requires stability - and resting on a bubble is anything but stable.
The Marshall Bromley 150 is the newest, and smallest model in its line, packing party-ready sound into a compact cube-shaped cabinet. Despite its diminutive stature, this Bluetooth speaker is pretty mighty, boasting a 200W power output with a single woofer and dual full-range drivers. But is it any good?
Well, I’ve spent many an hour putting the Marshall Bromley 150 through its paces, listening to countless tunes, messing around with its various features, and testing out its stage-inspired lighting. So here’s how I’d rate it after extensive use.
I’ve been really impressed with Marshall’s Bromley models to date, which easily compete with some of the best Bluetooth speakers around. They’ve provided ultra-deep, punchy bass that never subdues other sounds along the frequency range, look absolutely spectacular, and have great battery life to boot. And the Bromley 150 is no different.
(Image credit: Future)Let’s start with sound quality. As you might expect from a party speaker (although it's not always a given), the Bromley 150’s low-end output is the main event. It provides the sort of bass that you feel in your soul — it's deliciously rich, palpable, and almost earth-shaking. And for a speaker of this size, that's impressive.
For instance, when tuning into Cowboy Killer by Kyle Walker and Nate Katz, deep bass hit with tremendous impact while remaining regimented, resulting in a powerful yet controlled listening experience. Even then, the raw power of the Bromley 150’s dynamic bass didn’t come at the expense of sounds elsewhere in the frequency range — higher-pitched drums were precise and expressive and keys in the mid-range were well-defined and clear in the mix.
Even tracks with rippling sub bass translated beautifully onto the Marshall Bromley 150. It can extend down to 42Hz, and handles the lowest frequencies with immense confidence, producing full-sounding low-end audio.
With more vocal-heavy tracks, the Bromley 150 continues to perform well. In Black Eye by Allie X, vocals were clear in the mix and drums in the treble sounded pleasantly forward, with a satisfyingly rapid decay for an energized, refined sound. I’d argue that vocals in the mid-range lacked the texture and detail that I’ve heard from some speakers at this price-point, though.
When I listened to some funk tracks, I similarly felt that electric guitars didn’t always sound as well-separated and defined as I’ve experienced elsewhere. But mids are still weighted nicely, and certainly sound clean and clear. There’s also no LDAC on board for higher-res Bluetooth listening — something that featured on the Marshall Acton IV and Marshall Stanmore IV. But then again, this is a party speaker, so the focus is understandably more on impact than insight.
One more note on sound. Marshall has continued to wow me with its True Stereophonic 360-degree sound, and this works well even on the small Bromley 150, with its impressive bass output and clean highs being retained, even from the rear or the side. This works even better here than on some larger rivals I’ve tested, like Sony’s ULT Tower 7, for instance.
(Image credit: Future)Anyway, let’s move onto the next big attraction: the Bromley 150’s design. The Bromley 150 is a true beauty. It has an amp-inspired aesthetic, with quality faux-leather, stunning golden details, and premium-feeling control knobs. It also feels really robust and hardy, and comes with an IP55 rating, protecting it against high-pressure jets of water and dust ingress — that’s above average for a party speaker of this ilk.
The stage-light-style LEDs are to die for as well. They look so much classier than the RGB LEDs you’ll see on most party speakers, and mirror the deluxe aura of the Bromley 150 to perfection. Marshall has told me in the past that it considered leaving lights out of its party speakers entirely, as it wasn’t sure if it would suit the luxurious vibe it wanted to show off. But I’m glad they found a solution. There are various modes you can choose between too, and if you want to conserve battery life, you can switch them off entirely.
On top of that, the Bromley 150 is far smaller and lighter than its sibling models, and has a luxurious built-in handle that makes it very easy to take from A to B. While it could easily be a statement piece you could leave in your apartment or living room, being able to easily take it outdoors or on the go is a big bonus.
When it comes to features, the Bromley 150 hits most of the right notes too. First of all, it has an impeccable battery life of 40 hours, which will get you through multiple parties with ease. The battery is also fully replaceable and easy to remove — in fact multiple parts are replaceable, which only adds to the longevity of this speaker.
Other features such as Auracast connectivity for multi-speaker pairing and mic inputs for instrument or karaoke sessions are also most welcome, and make the speaker into a versatile party machine. There are a few other inputs, including USB-C and 3.5mm if you want to experience lossless audio. It would’ve been great to see RCA on the Bromley 150 for DJ controllers and turntables, though, especially as this was on the larger Bromley models.
My biggest gripe with this speaker, though, is its underwhelming companion app. This model is still using the old Marshall Bluetooth companion software, and it’s simply too basic. Here, you can tune into an Auracast broadcast, customize the M-button (to display stroboscope lighting, activate low volume mode, or do nothing), and set a power off timer… but that’s all.
You can’t make any alterations remotely to EQ, despite there being physical bass and treble dials and no way to alter effects for karaoke or instruments, meaning you always have to be by the speaker to make changes. The lack of depth is a bit disappointing, and I’m hoping this will be addressed in the future, potentially by migrating this model onto the more advanced Marshall app, used by the Marshall Heston 120 and Marshall Heston 60 soundbars, as well as the Homeline speakers.
The major question is, however, is the Marshall Bromley 150 worth the money? Well, I have to be honest and tell you that this is an expensive Bluetooth speaker. It comes in at $499.99 / £399.99 / AU$699 — more than you’d pay for significantly more powerful models like the Sony ULT Tower 5, for instance. However, I think it still earns its price-tag overall.
This is a premium product, not just in its sound, but in its design. Yes, you’re paying for a party speaker, but this is a statement piece in equal parts. It performs fantastically well across the board, and with replicable parts, this speaker is an investment that should serve you well for many years to come. If you want great sound at a more affordable price-point, you really can’t go wrong with the Sony ULT Tower 5, but for a compact party speaker that’s oozing with style, then the Marshall Bromley 150 is the ideal pick.
(Image credit: Future)Marshall Bromley 150 review: price & release dateThe Marshall Bromley 150 was released in October 2026, just over one year after Marshall launched its first ever party speaker, the Bromley 750. It has a list price of $499.99 / £399.99 / AU$699, meaning it firmly sits in the premium category for a speaker of this size. By comparison the much larger and more powerful Sony ULT Tower 5 is $50 / £50 / AU$150 cheaper than this model, so you’re paying a bit of a premium for the Bromley 150’s deluxe build.
Marshall Bromley 150 review: specsWeight
13.9lbs / 6.3kg
Dimensions
11.4 x 8.2 x 11.7 inches / 290 x 208 x 297mm
Connectivity
Bluetooth 5.3, 3.5mm (in and out), USB-C, 2x XLR/6.35mm combo jacks
Battery life
40 hours
Speaker drivers
1x 6.5-inch woofer, 2x 2-inch full-range
Waterproofing
IP55
(Image credit: Future)Should I buy the Marshall Bromley 150?Attribute
Notes
Score
Features
Great battery life, solid connectivity options, but the app is weak.
4/5
Performance
Mesmerizing bass, solid mids and articulate highs, plus great 360-degree sound.
4.5/5
Design
Stunning looks with gorgeous lights and good IP55 rating, easy to transport around.
5/5
Value
Undoubtedly expensive for its size, but luxurious build and great audio work in its favor.
4/5
Buy it if…You’re looking for highly portable party sound
The Bromley 150 produces incredibly powerful, weight sound, but it’s far lighter and smaller than the Bromley 450 and 750, and is incredibly easy to transport around thanks to its neat carry handle.
You want a lavish-looking speaker
Arguably the best thing about the Marshall Bromley 150 is its staggeringly good looks. Its amp-inspired aesthetic, golden details, and classy lights make it feel just as much of a statement piece as it is a party speaker.
You’d like a convenient control app
The Marshall Bluetooth app is an underwhelming companion for the Bromley 150. It doesn’t have built-in EQ tweaking or light controls, so there are very few changes that you can make on the fly if you’re not right next to the speaker.
You want to get the best possible bang for your buck
While the luxury of the Bromley 150 helps it to earn its price overall, you can get more powerful sound at this cost. For instance, the recently released Sony ULT Tower 5 is far meatier, offers exceptional sound and connectivity options, and has some pretty appealing lighting of its own.
Marshall Bromley 150
Sony ULT Tower 5
JBL Xtreme 5
Price
$499.99 / £399.99 / AU$699
$449.99 / £349 / AU$549
$399.95 / £329.99 (about AU$560)
Weight
13.9lbs / 6.3kg
28lbs / 12.7kg
6.4lbs / 2.9kg
Dimensions
11.4 x 8.2 x 11.7 inches / 290 x 208 x 297mm
14.1 x 21 x 11 inches / 358 x 534 x 280mm
13.6 x 6.5 x 6.1 inches / 346 x 165 x 155mm
Connectivity
Bluetooth 5.3, 3.5mm (in and out), USB-C, 2x XLR/6.35mm combo jacks
Bluetooth 5.3, RCA, XLR (in and out), USB-A, USB-C, mic input (6.3mm)
Bluetooth 6.0, USB-C
Battery life
40 hours
20 hours
24 hours (28 hours with PlayTime Boost active)
Speaker drivers
1x 6.5-inch woofer, 2x 2-inch full-range
1x 230mm woofer, 2x 60mm tweeters
1x 90W woofer, 2x 20W tweeters (AC power mode)
Waterproofing
IP55
IPX4
IP68
Sony ULT Tower 5
This is a considerably larger model than the Marshall Bromley 150, but it’s actually cheaper. The ULT Tower 5 is an exceptional party speaker that provides palpable bass, no end of connectivity options, and a sleek design. It may not look as luxurious as the Bromley 150 or have quite as good battery life or waterproofing, but for pure sound-for-pound value, it’s unbeatable. Read my full Sony ULT Tower 5 review.
JBL Xtreme 5
While the JBL Xtreme 5 isn’t quite as mighty as the Bromley 150, it still delivers powerful, refined sound while also providing the benefits of an ultra-rugged design. That’s right, you’re getting excellent IP68 dust and waterproofing, a drop-proof build, and a neat carry strap for carrying the speaker about. It can’t compare in terms of battery life or connectivity options, however. Read my full JBL Xtreme 5 review.
I spent many hours blasting tunes on the Marshall Bromley 150, and spent the vast majority of my time assessing its qualities in our music testing space at Future Labs.
For the most part, I streamed tunes over Bluetooth via Tidal on my Xiaomi 17 phone. However, I also tried out a wired connection as well as Auracast functionality. I commenced testing by sifting through the TechRadar reference playlist, which includes songs from a wide variety of genres, but I also listened to hours worth of tracks from my personal library.
More generally, I’ve been testing audio gear for years here at TechRadar, where I serve as a Senior Reviews Writer. I’ve tested more than 60 Bluetooth speakers, including other Marshall party speakers, such as the Marshall Bromley 750 and 450, and rivals like the Sony ULT Tower 5.
The Marshall Bromley 150 is the newest, and smallest model in its line, packing party-ready sound into a compact cube-shaped cabinet. Despite its diminutive stature, this Bluetooth speaker is pretty mighty, boasting a 200W power output with a single woofer and dual full-range drivers. But is it any good?
Well, I’ve spent many an hour putting the Marshall Bromley 150 through its paces, listening to countless tunes, messing around with its various features, and testing out its stage-inspired lighting. So here’s how I’d rate it after extensive use.
I’ve been really impressed with Marshall’s Bromley models to date, which easily compete with some of the best Bluetooth speakers around. They’ve provided ultra-deep, punchy bass that never subdues other sounds along the frequency range, look absolutely spectacular, and have great battery life to boot. And the Bromley 150 is no different.
(Image credit: Future)Let’s start with sound quality. As you might expect from a party speaker (although it's not always a given), the Bromley 150’s low-end output is the main event. It provides the sort of bass that you feel in your soul — it's deliciously rich, palpable, and almost earth-shaking. And for a speaker of this size, that's impressive.
For instance, when tuning into Cowboy Killer by Kyle Walker and Nate Katz, deep bass hit with tremendous impact while remaining regimented, resulting in a powerful yet controlled listening experience. Even then, the raw power of the Bromley 150’s dynamic bass didn’t come at the expense of sounds elsewhere in the frequency range — higher-pitched drums were precise and expressive and keys in the mid-range were well-defined and clear in the mix.
Even tracks with rippling sub bass translated beautifully onto the Marshall Bromley 150. It can extend down to 42Hz, and handles the lowest frequencies with immense confidence, producing full-sounding low-end audio.
With more vocal-heavy tracks, the Bromley 150 continues to perform well. In Black Eye by Allie X, vocals were clear in the mix and drums in the treble sounded pleasantly forward, with a satisfyingly rapid decay for an energized, refined sound. I’d argue that vocals in the mid-range lacked the texture and detail that I’ve heard from some speakers at this price-point, though.
When I listened to some funk tracks, I similarly felt that electric guitars didn’t always sound as well-separated and defined as I’ve experienced elsewhere. But mids are still weighted nicely, and certainly sound clean and clear. There’s also no LDAC on board for higher-res Bluetooth listening — something that featured on the Marshall Acton IV and Marshall Stanmore IV. But then again, this is a party speaker, so the focus is understandably more on impact than insight.
One more note on sound. Marshall has continued to wow me with its True Stereophonic 360-degree sound, and this works well even on the small Bromley 150, with its impressive bass output and clean highs being retained, even from the rear or the side. This works even better here than on some larger rivals I’ve tested, like Sony’s ULT Tower 7, for instance.
(Image credit: Future)Anyway, let’s move onto the next big attraction: the Bromley 150’s design. The Bromley 150 is a true beauty. It has an amp-inspired aesthetic, with quality faux-leather, stunning golden details, and premium-feeling control knobs. It also feels really robust and hardy, and comes with an IP55 rating, protecting it against high-pressure jets of water and dust ingress — that’s above average for a party speaker of this ilk.
The stage-light-style LEDs are to die for as well. They look so much classier than the RGB LEDs you’ll see on most party speakers, and mirror the deluxe aura of the Bromley 150 to perfection. Marshall has told me in the past that it considered leaving lights out of its party speakers entirely, as it wasn’t sure if it would suit the luxurious vibe it wanted to show off. But I’m glad they found a solution. There are various modes you can choose between too, and if you want to conserve battery life, you can switch them off entirely.
On top of that, the Bromley 150 is far smaller and lighter than its sibling models, and has a luxurious built-in handle that makes it very easy to take from A to B. While it could easily be a statement piece you could leave in your apartment or living room, being able to easily take it outdoors or on the go is a big bonus.
When it comes to features, the Bromley 150 hits most of the right notes too. First of all, it has an impeccable battery life of 40 hours, which will get you through multiple parties with ease. The battery is also fully replaceable and easy to remove — in fact multiple parts are replaceable, which only adds to the longevity of this speaker.
Other features such as Auracast connectivity for multi-speaker pairing and mic inputs for instrument or karaoke sessions are also most welcome, and make the speaker into a versatile party machine. There are a few other inputs, including USB-C and 3.5mm if you want to experience lossless audio. It would’ve been great to see RCA on the Bromley 150 for DJ controllers and turntables, though, especially as this was on the larger Bromley models.
My biggest gripe with this speaker, though, is its underwhelming companion app. This model is still using the old Marshall Bluetooth companion software, and it’s simply too basic. Here, you can tune into an Auracast broadcast, customize the M-button (to display stroboscope lighting, activate low volume mode, or do nothing), and set a power off timer… but that’s all.
You can’t make any alterations remotely to EQ, despite there being physical bass and treble dials and no way to alter effects for karaoke or instruments, meaning you always have to be by the speaker to make changes. The lack of depth is a bit disappointing, and I’m hoping this will be addressed in the future, potentially by migrating this model onto the more advanced Marshall app, used by the Marshall Heston 120 and Marshall Heston 60 soundbars, as well as the Homeline speakers.
The major question is, however, is the Marshall Bromley 150 worth the money? Well, I have to be honest and tell you that this is an expensive Bluetooth speaker. It comes in at $499.99 / £399.99 / AU$699 — more than you’d pay for significantly more powerful models like the Sony ULT Tower 5, for instance. However, I think it still earns its price-tag overall.
This is a premium product, not just in its sound, but in its design. Yes, you’re paying for a party speaker, but this is a statement piece in equal parts. It performs fantastically well across the board, and with replicable parts, this speaker is an investment that should serve you well for many years to come. If you want great sound at a more affordable price-point, you really can’t go wrong with the Sony ULT Tower 5, but for a compact party speaker that’s oozing with style, then the Marshall Bromley 150 is the ideal pick.
(Image credit: Future)Marshall Bromley 150 review: price & release dateThe Marshall Bromley 150 was released in October 2026, just over one year after Marshall launched its first ever party speaker, the Bromley 750. It has a list price of $499.99 / £399.99 / AU$699, meaning it firmly sits in the premium category for a speaker of this size. By comparison the much larger and more powerful Sony ULT Tower 5 is $50 / £50 / AU$150 cheaper than this model, so you’re paying a bit of a premium for the Bromley 150’s deluxe build.
Marshall Bromley 150 review: specsWeight
13.9lbs / 6.3kg
Dimensions
11.4 x 8.2 x 11.7 inches / 290 x 208 x 297mm
Connectivity
Bluetooth 5.3, 3.5mm (in and out), USB-C, 2x XLR/6.35mm combo jacks
Battery life
40 hours
Speaker drivers
1x 6.5-inch woofer, 2x 2-inch full-range
Waterproofing
IP55
(Image credit: Future)Should I buy the Marshall Bromley 150?Attribute
Notes
Score
Features
Great battery life, solid connectivity options, but the app is weak.
4/5
Performance
Mesmerizing bass, solid mids and articulate highs, plus great 360-degree sound.
4.5/5
Design
Stunning looks with gorgeous lights and good IP55 rating, easy to transport around.
5/5
Value
Undoubtedly expensive for its size, but luxurious build and great audio work in its favor.
4/5
Buy it if…You’re looking for highly portable party sound
The Bromley 150 produces incredibly powerful, weight sound, but it’s far lighter and smaller than the Bromley 450 and 750, and is incredibly easy to transport around thanks to its neat carry handle.
You want a lavish-looking speaker
Arguably the best thing about the Marshall Bromley 150 is its staggeringly good looks. Its amp-inspired aesthetic, golden details, and classy lights make it feel just as much of a statement piece as it is a party speaker.
You’d like a convenient control app
The Marshall Bluetooth app is an underwhelming companion for the Bromley 150. It doesn’t have built-in EQ tweaking or light controls, so there are very few changes that you can make on the fly if you’re not right next to the speaker.
You want to get the best possible bang for your buck
While the luxury of the Bromley 150 helps it to earn its price overall, you can get more powerful sound at this cost. For instance, the recently released Sony ULT Tower 5 is far meatier, offers exceptional sound and connectivity options, and has some pretty appealing lighting of its own.
Marshall Bromley 150
Sony ULT Tower 5
JBL Xtreme 5
Price
$499.99 / £399.99 / AU$699
$449.99 / £349 / AU$549
$399.95 / £329.99 (about AU$560)
Weight
13.9lbs / 6.3kg
28lbs / 12.7kg
6.4lbs / 2.9kg
Dimensions
11.4 x 8.2 x 11.7 inches / 290 x 208 x 297mm
14.1 x 21 x 11 inches / 358 x 534 x 280mm
13.6 x 6.5 x 6.1 inches / 346 x 165 x 155mm
Connectivity
Bluetooth 5.3, 3.5mm (in and out), USB-C, 2x XLR/6.35mm combo jacks
Bluetooth 5.3, RCA, XLR (in and out), USB-A, USB-C, mic input (6.3mm)
Bluetooth 6.0, USB-C
Battery life
40 hours
20 hours
24 hours (28 hours with PlayTime Boost active)
Speaker drivers
1x 6.5-inch woofer, 2x 2-inch full-range
1x 230mm woofer, 2x 60mm tweeters
1x 90W woofer, 2x 20W tweeters (AC power mode)
Waterproofing
IP55
IPX4
IP68
Sony ULT Tower 5
This is a considerably larger model than the Marshall Bromley 150, but it’s actually cheaper. The ULT Tower 5 is an exceptional party speaker that provides palpable bass, no end of connectivity options, and a sleek design. It may not look as luxurious as the Bromley 150 or have quite as good battery life or waterproofing, but for pure sound-for-pound value, it’s unbeatable. Read my full Sony ULT Tower 5 review.
JBL Xtreme 5
While the JBL Xtreme 5 isn’t quite as mighty as the Bromley 150, it still delivers powerful, refined sound while also providing the benefits of an ultra-rugged design. That’s right, you’re getting excellent IP68 dust and waterproofing, a drop-proof build, and a neat carry strap for carrying the speaker about. It can’t compare in terms of battery life or connectivity options, however. Read my full JBL Xtreme 5 review.
I spent many hours blasting tunes on the Marshall Bromley 150, and spent the vast majority of my time assessing its qualities in our music testing space at Future Labs.
For the most part, I streamed tunes over Bluetooth via Tidal on my Xiaomi 17 phone. However, I also tried out a wired connection as well as Auracast functionality. I commenced testing by sifting through the TechRadar reference playlist, which includes songs from a wide variety of genres, but I also listened to hours worth of tracks from my personal library.
More generally, I’ve been testing audio gear for years here at TechRadar, where I serve as a Senior Reviews Writer. I’ve tested more than 60 Bluetooth speakers, including other Marshall party speakers, such as the Marshall Bromley 750 and 450, and rivals like the Sony ULT Tower 5.
The Hisense U7 is a mid-market, mini-LED TV. It's very good for the price, not just in terms quality but features as well, while coming with a few limitations, most likely related to fitting this price in a time when tech costs are rising.
It’s always interesting reviewing a more mid-range TV like the Hisense U7, because it’s never the best in terms of build, picture quality, sound quality, features, and so on. However, a TV like this can get close enough, while coming in at a significantly lower price than the TVs usually touted as the best.
And in this particular way, I would suggest that the Hisense U7 is one of the best TVs out there purely in terms of value for money. Its picture quality is good enough, looking almost as good as the more expensive TVs from Hisense or TCL, except that there’s some color bleeding in certain situations, some minor vignetting (darkening at the edges), and slightly lower color accuracy.
Its sound quality is, likewise, good enough to skip a more basic soundbar, except that it lacks in the low end. If you're getting a big-screen model for a home theater setup, then obviously adding a meaty soundbar with rear speakers is going to be an improvement. But when it comes to just hearing solid sound out of the box, it works better than average.
It even has all the modern necessities, most specifically a fast refresh rate and a quick game menu to compete with the best gaming TVs (keeping those previous limitations in mind).
When it comes to great-value TVs in 2026, the Hisense U7 is definitely up there, but there's still a clear gulf between it and something like the TCL QM8L.
Hisense U7 review: Price and release dateHisense U7 showing off its color palette with a drone image of a landscape (Image credit: Future / James Holland)In early March 2026, Hisense released the U7 Series along with U6 and U6 Pro. The U7 series might be the company’s sweet spot in terms of value. It’s not as pricey as the U8 that refreshed in 2025 and certainly not as expensive as Hisense’s RGB LED UR9 TV, but it’s more expensive than most of the rest of the company’s offerings.
Since then, prices have dropped and this still one of the best sub-$1,000 TVs you can get. The 65-inch, for instance, has an MSRP of $1,499.99, but has dropped to $999.99. The largest 116-inch size might cost $21,999.99 (let’s be real, you and I are not getting a 116-inch version of a mid-range TV), but you can still pick up the 85-inch version for $1,699.99, which for a TV with these specs in that size is good value. It's also likely that prices will continue to plummet over the coming months.
It's worth noting that there are in fact two versions of this TV: a Google TV and Fire TV model. I've seen the Fire TV 65-inch fall to $799.99 and while on paper these two TVs are the same, it's the Google model I'll be discussing here.
Hisense U7 Series MiniLED TV review: SpecsScreen type:
Mini-LED Pro
Refresh rate:
165Hz
HDR support:
HDR10, HDR10+, HDR10+ Adaptive, HLG, Dolby Vision
Audio support:
Dolby Atmos, Surround Sound, DTS Virtual:X, IMAX Enhanced
Smart TV:
Google TV
HDMI ports:
4x HDMI 2.1
Built-in tuner:
ATSC 3.0
Hisense U7 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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper *, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper *:before, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper *:after, #fv-chart-1792060011336-2pyas5gm6-slideshow *, #fv-chart-1792060011336-2pyas5gm6-slideshow *:before, #fv-chart-1792060011336-2pyas5gm6-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper, #fv-chart-1792060011336-2pyas5gm6-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-nav-btn.disabled, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stacked-product, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-label, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-label-space { display: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }[{ "@context": "https://schema.org", "@type": "Dataset", "name": "Brightness measurements", "description": "Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-15T10:26:51.337Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U7", "Roku Pro Series (2025)", "TCL QM7L", "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 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": "TCL QM7L – HDR Filmmaker Mode (10% window)", "value": 2270, "unitText": "nits" }, { "@type": "PropertyValue", "name": "TCL QM7L – HDR Filmmaker Mode (Fullscreen)", "value": 723, "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": "TCL QM7L – HDR Standard Mode (10% window)", "value": 2491, "unitText": "nits" }, { "@type": "PropertyValue", "name": "TCL QM7L – HDR Standard Mode (Fullscreen)", "value": 774, "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": "TCL QM7L – SDR Filmmaker Mode (10% window)", "value": 196, "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" }, { "@type": "PropertyValue", "name": "TCL QM7L – SDR Standard Mode (10% window)", "value": 463, "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-15T10:26:51.337Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U7", "Roku Pro Series (2025)", "TCL QM7L", "UHDA-P3", "BT.2020", "HDR Filmmaker Mode", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@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": "" }, { "@type": "PropertyValue", "name": "TCL QM7L – UHDA-P3", "value": 97.6, "unitText": "" }, { "@type": "PropertyValue", "name": "TCL QM7L – BT.2020", "value": 90.3, "unitText": "" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "Picture accuracy", "description": "A lower score is better. Taken using a colorimeter and test pattern generator.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-15T10:26:51.337Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U7", "Roku Pro Series (2025)", "TCL QM7L", "Delta-E", "SDR Delta-E", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U7 – Delta-E", "value": 3, "unitText": "" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – Delta-E", "value": 2.5, "unitText": "" }, { "@type": "PropertyValue", "name": "TCL QM7L – Delta-E", "value": 2.6, "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-15T10:26:51.337Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U7", "Roku Pro Series (2025)", "TCL QM7L", "4K 60Hz", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@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" }, { "@type": "PropertyValue", "name": "TCL QM7L – 4K 60Hz", "value": 9.4, "unitText": "ms" } ]}]{"version":2,"exportedAt":"2026-10-15T10:26:51.337Z","state":{"data":[{"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"},{"productName":"TCL QM7L","attribute":"4K 60Hz","value":9.4,"unit":"ms","site":"TechRadar"}],"products":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"attributes":["4K 60Hz"],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[{"id":"slide-1792059748209","snapshot":{"selectedProducts":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"selectedPrimaryProduct":"Hisense U7","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 U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","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)"]}],"chartType":"Bar","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":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu.","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792059809310","snapshot":{"selectedProducts":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"selectedPrimaryProduct":"Hisense U7","selectedAttributes":["UHDA-P3","BT.2020"],"productColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["UHDA-P3","BT.2020"]}],"chartType":"Bar","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792059923159","snapshot":{"selectedProducts":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"selectedPrimaryProduct":"Hisense U7","selectedAttributes":["Delta-E"],"productColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792060011336","snapshot":{"selectedProducts":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"selectedPrimaryProduct":"Hisense U7","selectedAttributes":["4K 60Hz"],"productColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}}]}Previous1 / 4NextBrightness measurementsTaken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu.
HDR Filmmaker ModeHDR StandardSDR Filmmaker ModeSDR StandardHisense U7HDR Filmmaker Mode (10% window)2866HDR Filmmaker Mode (Fullscreen)793Roku Pro Series (2025)HDR Filmmaker Mode (10% window)820HDR Filmmaker Mode (Fullscreen)373TCL QM7LHDR Filmmaker Mode (10% window)2270HDR Filmmaker Mode (Fullscreen)72307501,5002,2503,000nitsHDR Filmmaker Mode DataProductHDR Filmmaker Mode (10% window) (nits)HDR Filmmaker Mode (Fullscreen) (nits)Hisense U72866793Roku Pro Series (2025)820373TCL QM7L2270723Hisense U7HDR Standard Mode (10% window)2891HDR Standard Mode (Fullscreen)782Roku Pro Series (2025)HDR Standard Mode (10% window)841HDR Standard Mode (Fullscreen)390TCL QM7LHDR Standard Mode (10% window)2491HDR Standard Mode (Fullscreen)77407501,5002,2503,000nitsHDR Standard DataProductHDR Standard Mode (10% window) (nits)HDR Standard Mode (Fullscreen) (nits)Hisense U72891782Roku Pro Series (2025)841390TCL QM7L2491774Hisense U7185Roku Pro Series (2025)434TCL QM7L1960150300450600nitsSDR Filmmaker Mode DataProductValueHisense U7185Roku Pro Series (2025)434TCL QM7L196Hisense U71994Roku Pro Series (2025)876TCL QM7L46305001,0001,5002,000nitsSDR Standard DataProductValueHisense U71994Roku Pro Series (2025)876TCL QM7L463HDR color gamutCloser to 100% is better. Taken using a colorimeter and test pattern generator.
Hisense U7UHDA-P397.3BT.202082.7Roku Pro Series (2025)UHDA-P396.9BT.202080.6TCL QM7LUHDA-P397.6BT.202090.30255075100HDR Filmmaker Mode DataProductUHDA-P3 ()BT.2020 ()Hisense U797.382.7Roku Pro Series (2025)96.980.6TCL QM7L97.690.3Picture accuracyA lower score is better. Taken using a colorimeter and test pattern generator.
SDR Delta-EHisense U73Roku Pro Series (2025)2.5TCL QM7L2.60123SDR Delta-E DataProductValueHisense U73Roku Pro Series (2025)2.5TCL QM7L2.6Input lagLower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.
4K 60HzHisense U79.8Roku Pro Series (2025)9.3TCL QM7L9.4012345678910ms4K 60Hz DataProductValueHisense U79.8Roku Pro Series (2025)9.3TCL QM7L9.4 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); }); } 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); } }); }; } 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-1792060011336-2pyas5gm6', true); }); } else { initialize('fv-chart-1792060011336-2pyas5gm6', true); } })(); Hisense U7 Series MiniLED TV review: FeaturesThe Hisense U7 does a good job with detail and HDR as shown in this scene from Dune (Image credit: Future / James Holland)The Hisense U7 Series may not have everything but the kitchen sink as far as features go, but most of the important features we look for in a TV are here. Outside of Dolby Vision IQ, all the HDR formats are supported including regular Dolby Vision. Dolby Atmos, Surround Sound, etc. are supported as well. There’s even DTS Virtual:X for some virtualized spatial audio.
The focus for most modern TVs revolves around AI and this TV is no exception. There are the AI screensavers (you can also use pictures from your Google account as well), of course, but also automatic picture and sound mode switching, as well as the ability to change the brightness of the screen according to ambient light.
And as is the case with every Google TV, the voice assistant Google Gemini is available with hands-free control, meaning that I can talk to it to not only open apps, adjust the TV and settings, but ask the kinds of questions one would of Alexa (for example, “What’s the weather today?”).
Google Gemini is an LLM (language learning model), so it comes with the benefits and deficiencies of one. On the positive side, it’s very conversational in its interactions. You can even change the timbre and gender of the voice. On the negative side, there are plenty of inaccuracies, such as redirecting to the wrong streaming service when requesting a movie. For instance, I asked it to look up “Swept Away,” of which there is a 1974 version and a 2002 one. It would redirect me to Tubi for the 2002 one when I was trying to find the one from the ‘70s. And then it would say that the movie was available on Netflix, which, if once true, no longer is.
Relatedly, you can add the Hisense U7 to a Google Home ecosystem, even using it as a hub for controlling whatever is in your smart home system.
This is a mid-range TV and not a flagship so there will be some compromises. There’s the minor vignetting in the corners that I see on TVs like this — I even noticed some vignetting across the entire bottom once or twice, though this was not consistent. And sometimes colors can bleed together when a bunch of objects with the same color are next to each other — a field of red flowers, for instance.
Still, all the HDR formats one could want are here outside of Dolby Vision IQ, which adjusts the picture scene-by-scene depending on the ambient light of the viewing room, though Hisense has its own setting that does something similar. Similarly, there’s a picture mode for everything except IMAX including Film Maker Mode, meant to recreate “what the director initially intended”.
Its brightness of 185 nits (at 10% Window, Film Maker Mode), Delta > E of around 3, and peak luminance of 2866.854 (in Film Maker Mode) are decent if just a bit lower than the performance of TVs the next tier up like the TCL QM8L. Even its P3 HDR color gamut coverage of 96% is similar or just below some of the other TVs I’ve tested. Of course, its BT.2020 coverage is a very low 75%, though that will actually affect very few users (its not a standard that’s used for most content).
And during use, whether watching the Knicks and Spurs battle for the NBA Finals, a movie like Coco (a favorite one to test with for me), or playing Madden 26 or Star Wars: Outlaws on Playstation 5, the combination of these slightly less robust aspects of image quality still add up to a good screen for the price. I found the Hisense U7 almost as good as other screens, but with just a little less depth to its image.
I feel like I’ve been saying this a lot lately, but the audio on this TV is good enough that you won’t feel the need to get a soundbar. Now, there are a couple caveats to that. We’re still talking about smaller speakers and a small subwoofer — the Hisense U7 Series has a 2.1.2 system built in — so there are limitations to the audio. If you want a home theater system, I would recommend adding one of the best home theater systems.
As far as the audio on this TV goes, I find that the high-end adds clarity without the harshness of cheaper TVs (again the actual speakers in these TVs are small) while the mid-range has a decent amount of body to it so that voices don’t disappear when there’s a bunch of music playing. There’s good low-mid response, too, so that it feels like the bass hasn’t completely disappeared.
But while I typically say mid-range TVs like this have decent sound for the price, it's just as typical that the low-end is mostly missing here. Explosions and the like in a movie like The Batman don’t have any impact or rumble to them, while a kick drum or bass in a song doesn’t thump the way one would want.
There is some decent separation between left, center, and right as far as the sound stage goes, so I can hear The Penguin’s car skidding across the screen (to use The Batman again as an example). However, the speakers can’t make the audio sound any wider than the TV, so the width of the soundstage is somewhat limited. Again, get a home theater system if you want a truly immersive audio experience.
It’s also worth noting that Hisense includes a number of audio modes including the ability to automatically switch between them for different media as well as an eight-band EQ. There’s a setting for adjusting the audio when wall-mounted, there’s a room calibration feature, and there’s also a late night mode, as well as dialog booster.
The Hisense U7 is a mid-range TV and it looks it. It has the usual slightly rounded back with a subwoofer in the middle and some venting across it for, presumably, the speakers. Really, the most notable aspects of this TV are the thin bezels, the fact that it uses a wide, center stand or base instead of feet (you don’t need as large of a console to hold the TV), and the fact that it’s available in an 116-inch version.
Since it has the center base, assembly does take a little more work than TVs with feet. However, Hisense recommends using the side styrofoam packing to hold up the TV and allows you to screw two screws into the back of the TV and latch the base onto them before securing with additional screws. But the short version is you’ll still want a second person with you to assemble.
While the TV doesn’t have any real cable management (the Roku Pro Series are the only TVs I’ve seen that do), the base does. That means you can plug into one of the four HDMI 2.1 ports (capable of 4K @ 120Hz refresh rate) and then run it through the back of the upward-reaching part of the base.
Speaking of ports, there are also a couple USB ports (one 2.0 and one 3.0), coaxial, optical, and ethernet. And, of course, one of the aforementioned HDMI ports supports eARC. I can’t imagine needing anything else. Admittedly, it doesn’t have the DisplayPort supported USB-C of the Hisense UR9 but that’s a pretty unique feature and on a much more expensive TV.
The remote for the Hisense U7 is the same remote that seems to come with every Hisense TV. It’s a slightly larger, though not bulky, silver-ish and utilitarian-looking affair with a talk button, the usual quick launch buttons for certain streaming services, and the directional wheel with a pressable center. I do miss having a dedicated play/pause button since it takes an extra press to play or pause content that’s already queued up.
If you’ve already used a Google TV, you’ll have experienced 90% or more of what using this TV is like. It doesn’t reinvent the wheel. It also follows the same pattern as Fire TVs and many other interfaces. There’s a rotating banner that takes up the top half of the home page for highlighted content, followed by rows of variously assorted content including a “Continue to Watch”, recommendations, and the actual streaming apps if you want to browse them directly.
It all works just fine, though I did notice here and there that it seemed to go a little slower than on some contemporary (and more expensive) TVs. Hisense, like every other TV manufacturer these days, offers free content. And like every other manufacturer, there are a few gems, depending on your tastes, to make it worth it. Most of it is syndicated stuff like Leave It To Beaver, for example.
My only real issue with using this TV is something I’ve already touched on earlier when talking about Google Gemini. Beyond the fact that the main hands-free control is via an AI model, which are still far from perfect, there’s also the issue that I have trouble using it to go directly to content. If I ask Gemini to play Psych on Amazon Prime, it opens up a landing page with more information and where to watch it, but refuses to actually open the show on Prime, let alone play it. I can’t go directly to watching something using hands-free control.
In regards to menu diving into the TV’s settings, there are a lot of things to control. Picture modes, audio modes, Intelligent (i.e. AI) this or that. And while it’s not that difficult to find everything, the fact there are Intelligent settings for both picture and audio that are separated out into their own menu is frustrating, particularly given they gray out other picture and audio settings when enabled. And if it wasn’t clear, these settings aren’t cross-listed in their respective categories. I guess even in TVs AI is king.
Using the Hisense U7 for gaming is a fairly pleasant experience. The image quality is going to be a bit limited insofar as it’s not going to have quite the sharpness of a higher end TV. But this is still a 4K TV with HDR (and spatial audio) support and a good amount of dimming zones.
Plus, it supports up to an 165Hz refresh rate. To test this, I used a Playstation 5 via one of the HDMI 2.1 ports, all of which are capable of 4K @ 120Hz and played a few different games including Stars Wars: Outlaws, Madden NFL 26, and Uncharted 4.
When playing, the action was smooth and clear regardless of the game. And the sound was pretty good, too, as I could hear all the necessary audio elements, whether it’s an enemy off-screen or different parts of a soundtrack. It helps that there’s a game mode for both picture and audio settings.
I also appreciate that I can call up a game bar for additional game-specific settings like choosing genre-specific picture modes, turning on AMD Freesync Premium Pro (which matches the refresh rates of the TV and source), and turning on a crosshair. The game bar also pulls up an FPS counter and can be customized to match a few different themes, including both a PS5 and Xbox aesthetic. My only real gripe with the game bar is that I have to press the Menu button on the remote and cycle through a list of other settings to get to the game bar, instead of some way to directly pull it up such as a long press of the same button.
As I said in our price & release date section above, there are two versions of the U7 available, one with Google TV and one with Fire TV. The Fire TV model is cheaper at $799.99 (though its MSRP is $999.99) for its 65-inch size, but we haven't tested the Fire TV unit so can't be sure if there's any performance differences.
The 65-inch size of the Hisense U7 Series we tested would set you back $999.99. That’s not bad. And neither is the 100-inch size’s $2999.99 price tag, which puts it in the same realm as a 77-inch OLED. (let’s ignore the 116-inch size’s obscene $21,999.99 price — do you even need 116 inches?).
Considering all that it has to offer — whether that's a generative AI voice assistant, all sorts of HDR support, solid audio, decent picture quality, or great gaming features — it’s a seriously competitive TV. This year's TCL QM7L is priced at $999.99 in the same 65-inch size and carries a similar feature set, but the U7 has the brightness advantage.
The Roku Pro Series (2025), is marginally cheaper at $899.99 for the 65-inch version, and is another good comparison — it’s also pretty feature-filled, has hands-free control (you say “Hey Roku” instead of “Hey Google”), and sounds pretty good while having the same lack-of-bass issue. While I like the design of the Roku Pro Series a little better with its shadow-box design that lets it sit flush on the wall when mounted and cable management, it is significantly dimmer than the U7.
The moral of the story is that the Hisense U7, like most Hisense models, is superb value, even if it’s not always quantifiably better than similar TVs.
Attributes
Notes
Rating
Features
Having a hands-free AI-powered voice assistant like Google Gemini is pretty nice, even if it is somewhat inconsistent. It’s also nice to have most HDR and spatial audio formats supported.
4 / 5
Picture quality
The picture is very good for the price with decent color coverage, accuracy, and brightness, but it's not necessarily going to wow. It doesn’t help that the saturated colors can bleed and there’s minor vignetting.
4 / 5
Sound quality
The sound quality is good enough to skip the soundbar if you don’t need the home theater experience. There are plenty of audio features. It is held back by the lack of low-end though.
4 / 5
Design
The Hisense U7 Series has thin bezels, plenty of ports including four HDMI 2.1 ports, and is easy to assemble, though it’s much easier with a second person.
4 / 5
Smart TV and menus
Using the Google TV interface is straightforward, plus it comes with plenty of free content. Too bad hands-free control can’t get you directly to content, while menu diving can be a little confusing.
3.5 / 5
Gaming
AMD Freesync Premium Pro, an up to 165Hz refresh rate, 2.1 HDMI ports, and game bar make this a good TV for gaming.
4.5 / 5
Value
The Hisense U7 beats out the competition in value, even when it doesn’t in any other metric. It’s priced just right for what it is.
4.5 / 5
Should I buy the Hisense U7 Series MiniLED TV?Buy it if...You care a lot about value
The Hisense U7 Series has most of the necessary features, a good if not great screen, and solid audio at a reasonable price. That makes it a good upgrade from the most budget of TVs, while still not breaking the bank.
You want a lot of features
This TV comes packed with a lot of features, especially for the price, including: hands-free control via Google Gemini; Dolby Vision; Dolby Atmos; and much more (including a few different AI-powered features).
You want to skip the soundbar
Though it might lack some low-end punch, the Hisense U7 sounds pretty good for a TV at its price point. It sounds good enough, in fact, that if you’re getting it for a second TV, you’ll probably be happy skipping getting a soundbar.
You want the best picture quality
Though the picture is pretty good, it has some minor vignetting as well as color bleed in certain instances. You’ll have to look elsewhere if you want to be blown away by picture quality.
You want all the features
While the Hisense U7 is pretty feature packed, it’s not going to come with the same package as more expensive TVs. For instance, Dolby Vision IQ is not available (though Hisense includes its own variant of this feature).
Hisense U7
Roku Pro Series (2025)
TCL QM7L
LG C6
Price (65-inch)
$999.99
$899.99
$999
$1,499
Screen type
Mini-LED Pro
QLED w/ mini-LED
QLED w/ mini-LED
OLED
Refresh rate
165Hz
120Hz
up to 144Hz
165Hz
HDR support
HDR10, HDR10+, HDR10+ Adaptive, HLG, Dolby Vision
Dolby Vision IQ, HDR10+ Adaptive, HLG
Dolby Vision IQ, HDR10+, HDR10, HLG
Dolby Vision, HDR10, HLG
Smart TV
Google TV
Roku
Google TV
WebOS 26
HDMI ports
4 HDMI 2.1
4 (2x HDMI 2.1)
4 (2x HDMI 2.1)
4x HDMI 2.1
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.
TCL QM7L
One of the Hisense U7's main competitors, the TCL QM7L uses an SQD mini-LED backlight to deliver more refined local dimming, but the U7 actually offers more brightness. Both TVs are available at the time of writing for the same price. Without a great deal to separate these two, this will most likely come down to whichever is cheaper at the time of purchase. Read our full TCL QM7L review.
LG C6
The LG C6 is a strong upgrade over last year's LG C5, delivering brilliant picture quality, perfect contrast and black tones, the best suite of gaming features you can find, and a good smart TV interface. As its price drops, it's a very strong OLED competitor to the mini-LED tech in the QM8L. Read our full LG C5 review.
I used the Hisense U7 Series MiniLED TV regularly for a week. I tested it using streaming shows, movies, music, and games (via PS5). I went through the various features, particularly the hands-free Google Gemini, to see if it worked as advertised. I also spent time listening to the audio as well as paying attention to the picture quality.
After spending some time with this TV, I believe it’s ideal for those who have routinely gotten the cheapest TV and want to upgrade to something better without breaking the bank.
I’ve tested a lot of tech gear over the years including laptops, keyboards and speakers. So I've been able to use my expertise towards giving an honest and fair opinion, not to mention a critical eye, to any product I test.
The Hisense U7 is a mid-market, mini-LED TV. It's very good for the price, not just in terms quality but features as well, while coming with a few limitations, most likely related to fitting this price in a time when tech costs are rising.
It’s always interesting reviewing a more mid-range TV like the Hisense U7, because it’s never the best in terms of build, picture quality, sound quality, features, and so on. However, a TV like this can get close enough, while coming in at a significantly lower price than the TVs usually touted as the best.
And in this particular way, I would suggest that the Hisense U7 is one of the best TVs out there purely in terms of value for money. Its picture quality is good enough, looking almost as good as the more expensive TVs from Hisense or TCL, except that there’s some color bleeding in certain situations, some minor vignetting (darkening at the edges), and slightly lower color accuracy.
Its sound quality is, likewise, good enough to skip a more basic soundbar, except that it lacks in the low end. If you're getting a big-screen model for a home theater setup, then obviously adding a meaty soundbar with rear speakers is going to be an improvement. But when it comes to just hearing solid sound out of the box, it works better than average.
It even has all the modern necessities, most specifically a fast refresh rate and a quick game menu to compete with the best gaming TVs (keeping those previous limitations in mind).
When it comes to great-value TVs in 2026, the Hisense U7 is definitely up there, but there's still a clear gulf between it and something like the TCL QM8L.
Hisense U7 review: Price and release dateHisense U7 showing off its color palette with a drone image of a landscape (Image credit: Future / James Holland)In early March 2026, Hisense released the U7 Series along with U6 and U6 Pro. The U7 series might be the company’s sweet spot in terms of value. It’s not as pricey as the U8 that refreshed in 2025 and certainly not as expensive as Hisense’s RGB LED UR9 TV, but it’s more expensive than most of the rest of the company’s offerings.
Since then, prices have dropped and this still one of the best sub-$1,000 TVs you can get. The 65-inch, for instance, has an MSRP of $1,499.99, but has dropped to $999.99. The largest 116-inch size might cost $21,999.99 (let’s be real, you and I are not getting a 116-inch version of a mid-range TV), but you can still pick up the 85-inch version for $1,699.99, which for a TV with these specs in that size is good value. It's also likely that prices will continue to plummet over the coming months.
It's worth noting that there are in fact two versions of this TV: a Google TV and Fire TV model. I've seen the Fire TV 65-inch fall to $799.99 and while on paper these two TVs are the same, it's the Google model I'll be discussing here.
Hisense U7 Series MiniLED TV review: SpecsScreen type:
Mini-LED Pro
Refresh rate:
165Hz
HDR support:
HDR10, HDR10+, HDR10+ Adaptive, HLG, Dolby Vision
Audio support:
Dolby Atmos, Surround Sound, DTS Virtual:X, IMAX Enhanced
Smart TV:
Google TV
HDMI ports:
4x HDMI 2.1
Built-in tuner:
ATSC 3.0
Hisense U7 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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper *, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper *:before, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper *:after, #fv-chart-1792060011336-2pyas5gm6-slideshow *, #fv-chart-1792060011336-2pyas5gm6-slideshow *:before, #fv-chart-1792060011336-2pyas5gm6-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper, #fv-chart-1792060011336-2pyas5gm6-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-nav-btn.disabled, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stacked-product, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-label, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-container, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-label-space { display: none !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-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-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo, #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792060011336-2pyas5gm6-slideshow .fv-chart-wrapper.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }[{ "@context": "https://schema.org", "@type": "Dataset", "name": "Brightness measurements", "description": "Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-15T10:26:51.337Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U7", "Roku Pro Series (2025)", "TCL QM7L", "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 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": "TCL QM7L – HDR Filmmaker Mode (10% window)", "value": 2270, "unitText": "nits" }, { "@type": "PropertyValue", "name": "TCL QM7L – HDR Filmmaker Mode (Fullscreen)", "value": 723, "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": "TCL QM7L – HDR Standard Mode (10% window)", "value": 2491, "unitText": "nits" }, { "@type": "PropertyValue", "name": "TCL QM7L – HDR Standard Mode (Fullscreen)", "value": 774, "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": "TCL QM7L – SDR Filmmaker Mode (10% window)", "value": 196, "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" }, { "@type": "PropertyValue", "name": "TCL QM7L – SDR Standard Mode (10% window)", "value": 463, "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-15T10:26:51.337Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U7", "Roku Pro Series (2025)", "TCL QM7L", "UHDA-P3", "BT.2020", "HDR Filmmaker Mode", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@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": "" }, { "@type": "PropertyValue", "name": "TCL QM7L – UHDA-P3", "value": 97.6, "unitText": "" }, { "@type": "PropertyValue", "name": "TCL QM7L – BT.2020", "value": 90.3, "unitText": "" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "Picture accuracy", "description": "A lower score is better. Taken using a colorimeter and test pattern generator.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-15T10:26:51.337Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U7", "Roku Pro Series (2025)", "TCL QM7L", "Delta-E", "SDR Delta-E", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U7 – Delta-E", "value": 3, "unitText": "" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – Delta-E", "value": 2.5, "unitText": "" }, { "@type": "PropertyValue", "name": "TCL QM7L – Delta-E", "value": 2.6, "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-15T10:26:51.337Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U7", "Roku Pro Series (2025)", "TCL QM7L", "4K 60Hz", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@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" }, { "@type": "PropertyValue", "name": "TCL QM7L – 4K 60Hz", "value": 9.4, "unitText": "ms" } ]}]{"version":2,"exportedAt":"2026-10-15T10:26:51.337Z","state":{"data":[{"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"},{"productName":"TCL QM7L","attribute":"4K 60Hz","value":9.4,"unit":"ms","site":"TechRadar"}],"products":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"attributes":["4K 60Hz"],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[{"id":"slide-1792059748209","snapshot":{"selectedProducts":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"selectedPrimaryProduct":"Hisense U7","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 U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","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)"]}],"chartType":"Bar","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":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu.","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792059809310","snapshot":{"selectedProducts":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"selectedPrimaryProduct":"Hisense U7","selectedAttributes":["UHDA-P3","BT.2020"],"productColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["UHDA-P3","BT.2020"]}],"chartType":"Bar","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792059923159","snapshot":{"selectedProducts":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"selectedPrimaryProduct":"Hisense U7","selectedAttributes":["Delta-E"],"productColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792060011336","snapshot":{"selectedProducts":["Hisense U7","Roku Pro Series (2025)","TCL QM7L"],"selectedPrimaryProduct":"Hisense U7","selectedAttributes":["4K 60Hz"],"productColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U7","color":"#2E6E93"},{"productName":"Roku Pro Series (2025)","color":"#E8238C"},{"productName":"TCL QM7L","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","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","bar-SDR Filmmaker Mode (10% window)":"SDR Filmmaker Mode","bar-SDR Standard Mode (10% window)":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}}]}Previous1 / 4NextBrightness measurementsTaken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu.
HDR Filmmaker ModeHDR StandardSDR Filmmaker ModeSDR StandardHisense U7HDR Filmmaker Mode (10% window)2866HDR Filmmaker Mode (Fullscreen)793Roku Pro Series (2025)HDR Filmmaker Mode (10% window)820HDR Filmmaker Mode (Fullscreen)373TCL QM7LHDR Filmmaker Mode (10% window)2270HDR Filmmaker Mode (Fullscreen)72307501,5002,2503,000nitsHDR Filmmaker Mode DataProductHDR Filmmaker Mode (10% window) (nits)HDR Filmmaker Mode (Fullscreen) (nits)Hisense U72866793Roku Pro Series (2025)820373TCL QM7L2270723Hisense U7HDR Standard Mode (10% window)2891HDR Standard Mode (Fullscreen)782Roku Pro Series (2025)HDR Standard Mode (10% window)841HDR Standard Mode (Fullscreen)390TCL QM7LHDR Standard Mode (10% window)2491HDR Standard Mode (Fullscreen)77407501,5002,2503,000nitsHDR Standard DataProductHDR Standard Mode (10% window) (nits)HDR Standard Mode (Fullscreen) (nits)Hisense U72891782Roku Pro Series (2025)841390TCL QM7L2491774Hisense U7185Roku Pro Series (2025)434TCL QM7L1960150300450600nitsSDR Filmmaker Mode DataProductValueHisense U7185Roku Pro Series (2025)434TCL QM7L196Hisense U71994Roku Pro Series (2025)876TCL QM7L46305001,0001,5002,000nitsSDR Standard DataProductValueHisense U71994Roku Pro Series (2025)876TCL QM7L463HDR color gamutCloser to 100% is better. Taken using a colorimeter and test pattern generator.
Hisense U7UHDA-P397.3BT.202082.7Roku Pro Series (2025)UHDA-P396.9BT.202080.6TCL QM7LUHDA-P397.6BT.202090.30255075100HDR Filmmaker Mode DataProductUHDA-P3 ()BT.2020 ()Hisense U797.382.7Roku Pro Series (2025)96.980.6TCL QM7L97.690.3Picture accuracyA lower score is better. Taken using a colorimeter and test pattern generator.
SDR Delta-EHisense U73Roku Pro Series (2025)2.5TCL QM7L2.60123SDR Delta-E DataProductValueHisense U73Roku Pro Series (2025)2.5TCL QM7L2.6Input lagLower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.
4K 60HzHisense U79.8Roku Pro Series (2025)9.3TCL QM7L9.4012345678910ms4K 60Hz DataProductValueHisense U79.8Roku Pro Series (2025)9.3TCL QM7L9.4 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); }); } 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); } }); }; } 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-1792060011336-2pyas5gm6', true); }); } else { initialize('fv-chart-1792060011336-2pyas5gm6', true); } })(); Hisense U7 Series MiniLED TV review: FeaturesThe Hisense U7 does a good job with detail and HDR as shown in this scene from Dune (Image credit: Future / James Holland)The Hisense U7 Series may not have everything but the kitchen sink as far as features go, but most of the important features we look for in a TV are here. Outside of Dolby Vision IQ, all the HDR formats are supported including regular Dolby Vision. Dolby Atmos, Surround Sound, etc. are supported as well. There’s even DTS Virtual:X for some virtualized spatial audio.
The focus for most modern TVs revolves around AI and this TV is no exception. There are the AI screensavers (you can also use pictures from your Google account as well), of course, but also automatic picture and sound mode switching, as well as the ability to change the brightness of the screen according to ambient light.
And as is the case with every Google TV, the voice assistant Google Gemini is available with hands-free control, meaning that I can talk to it to not only open apps, adjust the TV and settings, but ask the kinds of questions one would of Alexa (for example, “What’s the weather today?”).
Google Gemini is an LLM (language learning model), so it comes with the benefits and deficiencies of one. On the positive side, it’s very conversational in its interactions. You can even change the timbre and gender of the voice. On the negative side, there are plenty of inaccuracies, such as redirecting to the wrong streaming service when requesting a movie. For instance, I asked it to look up “Swept Away,” of which there is a 1974 version and a 2002 one. It would redirect me to Tubi for the 2002 one when I was trying to find the one from the ‘70s. And then it would say that the movie was available on Netflix, which, if once true, no longer is.
Relatedly, you can add the Hisense U7 to a Google Home ecosystem, even using it as a hub for controlling whatever is in your smart home system.
This is a mid-range TV and not a flagship so there will be some compromises. There’s the minor vignetting in the corners that I see on TVs like this — I even noticed some vignetting across the entire bottom once or twice, though this was not consistent. And sometimes colors can bleed together when a bunch of objects with the same color are next to each other — a field of red flowers, for instance.
Still, all the HDR formats one could want are here outside of Dolby Vision IQ, which adjusts the picture scene-by-scene depending on the ambient light of the viewing room, though Hisense has its own setting that does something similar. Similarly, there’s a picture mode for everything except IMAX including Film Maker Mode, meant to recreate “what the director initially intended”.
Its brightness of 185 nits (at 10% Window, Film Maker Mode), Delta > E of around 3, and peak luminance of 2866.854 (in Film Maker Mode) are decent if just a bit lower than the performance of TVs the next tier up like the TCL QM8L. Even its P3 HDR color gamut coverage of 96% is similar or just below some of the other TVs I’ve tested. Of course, its BT.2020 coverage is a very low 75%, though that will actually affect very few users (its not a standard that’s used for most content).
And during use, whether watching the Knicks and Spurs battle for the NBA Finals, a movie like Coco (a favorite one to test with for me), or playing Madden 26 or Star Wars: Outlaws on Playstation 5, the combination of these slightly less robust aspects of image quality still add up to a good screen for the price. I found the Hisense U7 almost as good as other screens, but with just a little less depth to its image.
I feel like I’ve been saying this a lot lately, but the audio on this TV is good enough that you won’t feel the need to get a soundbar. Now, there are a couple caveats to that. We’re still talking about smaller speakers and a small subwoofer — the Hisense U7 Series has a 2.1.2 system built in — so there are limitations to the audio. If you want a home theater system, I would recommend adding one of the best home theater systems.
As far as the audio on this TV goes, I find that the high-end adds clarity without the harshness of cheaper TVs (again the actual speakers in these TVs are small) while the mid-range has a decent amount of body to it so that voices don’t disappear when there’s a bunch of music playing. There’s good low-mid response, too, so that it feels like the bass hasn’t completely disappeared.
But while I typically say mid-range TVs like this have decent sound for the price, it's just as typical that the low-end is mostly missing here. Explosions and the like in a movie like The Batman don’t have any impact or rumble to them, while a kick drum or bass in a song doesn’t thump the way one would want.
There is some decent separation between left, center, and right as far as the sound stage goes, so I can hear The Penguin’s car skidding across the screen (to use The Batman again as an example). However, the speakers can’t make the audio sound any wider than the TV, so the width of the soundstage is somewhat limited. Again, get a home theater system if you want a truly immersive audio experience.
It’s also worth noting that Hisense includes a number of audio modes including the ability to automatically switch between them for different media as well as an eight-band EQ. There’s a setting for adjusting the audio when wall-mounted, there’s a room calibration feature, and there’s also a late night mode, as well as dialog booster.
The Hisense U7 is a mid-range TV and it looks it. It has the usual slightly rounded back with a subwoofer in the middle and some venting across it for, presumably, the speakers. Really, the most notable aspects of this TV are the thin bezels, the fact that it uses a wide, center stand or base instead of feet (you don’t need as large of a console to hold the TV), and the fact that it’s available in an 116-inch version.
Since it has the center base, assembly does take a little more work than TVs with feet. However, Hisense recommends using the side styrofoam packing to hold up the TV and allows you to screw two screws into the back of the TV and latch the base onto them before securing with additional screws. But the short version is you’ll still want a second person with you to assemble.
While the TV doesn’t have any real cable management (the Roku Pro Series are the only TVs I’ve seen that do), the base does. That means you can plug into one of the four HDMI 2.1 ports (capable of 4K @ 120Hz refresh rate) and then run it through the back of the upward-reaching part of the base.
Speaking of ports, there are also a couple USB ports (one 2.0 and one 3.0), coaxial, optical, and ethernet. And, of course, one of the aforementioned HDMI ports supports eARC. I can’t imagine needing anything else. Admittedly, it doesn’t have the DisplayPort supported USB-C of the Hisense UR9 but that’s a pretty unique feature and on a much more expensive TV.
The remote for the Hisense U7 is the same remote that seems to come with every Hisense TV. It’s a slightly larger, though not bulky, silver-ish and utilitarian-looking affair with a talk button, the usual quick launch buttons for certain streaming services, and the directional wheel with a pressable center. I do miss having a dedicated play/pause button since it takes an extra press to play or pause content that’s already queued up.
If you’ve already used a Google TV, you’ll have experienced 90% or more of what using this TV is like. It doesn’t reinvent the wheel. It also follows the same pattern as Fire TVs and many other interfaces. There’s a rotating banner that takes up the top half of the home page for highlighted content, followed by rows of variously assorted content including a “Continue to Watch”, recommendations, and the actual streaming apps if you want to browse them directly.
It all works just fine, though I did notice here and there that it seemed to go a little slower than on some contemporary (and more expensive) TVs. Hisense, like every other TV manufacturer these days, offers free content. And like every other manufacturer, there are a few gems, depending on your tastes, to make it worth it. Most of it is syndicated stuff like Leave It To Beaver, for example.
My only real issue with using this TV is something I’ve already touched on earlier when talking about Google Gemini. Beyond the fact that the main hands-free control is via an AI model, which are still far from perfect, there’s also the issue that I have trouble using it to go directly to content. If I ask Gemini to play Psych on Amazon Prime, it opens up a landing page with more information and where to watch it, but refuses to actually open the show on Prime, let alone play it. I can’t go directly to watching something using hands-free control.
In regards to menu diving into the TV’s settings, there are a lot of things to control. Picture modes, audio modes, Intelligent (i.e. AI) this or that. And while it’s not that difficult to find everything, the fact there are Intelligent settings for both picture and audio that are separated out into their own menu is frustrating, particularly given they gray out other picture and audio settings when enabled. And if it wasn’t clear, these settings aren’t cross-listed in their respective categories. I guess even in TVs AI is king.
Using the Hisense U7 for gaming is a fairly pleasant experience. The image quality is going to be a bit limited insofar as it’s not going to have quite the sharpness of a higher end TV. But this is still a 4K TV with HDR (and spatial audio) support and a good amount of dimming zones.
Plus, it supports up to an 165Hz refresh rate. To test this, I used a Playstation 5 via one of the HDMI 2.1 ports, all of which are capable of 4K @ 120Hz and played a few different games including Stars Wars: Outlaws, Madden NFL 26, and Uncharted 4.
When playing, the action was smooth and clear regardless of the game. And the sound was pretty good, too, as I could hear all the necessary audio elements, whether it’s an enemy off-screen or different parts of a soundtrack. It helps that there’s a game mode for both picture and audio settings.
I also appreciate that I can call up a game bar for additional game-specific settings like choosing genre-specific picture modes, turning on AMD Freesync Premium Pro (which matches the refresh rates of the TV and source), and turning on a crosshair. The game bar also pulls up an FPS counter and can be customized to match a few different themes, including both a PS5 and Xbox aesthetic. My only real gripe with the game bar is that I have to press the Menu button on the remote and cycle through a list of other settings to get to the game bar, instead of some way to directly pull it up such as a long press of the same button.
As I said in our price & release date section above, there are two versions of the U7 available, one with Google TV and one with Fire TV. The Fire TV model is cheaper at $799.99 (though its MSRP is $999.99) for its 65-inch size, but we haven't tested the Fire TV unit so can't be sure if there's any performance differences.
The 65-inch size of the Hisense U7 Series we tested would set you back $999.99. That’s not bad. And neither is the 100-inch size’s $2999.99 price tag, which puts it in the same realm as a 77-inch OLED. (let’s ignore the 116-inch size’s obscene $21,999.99 price — do you even need 116 inches?).
Considering all that it has to offer — whether that's a generative AI voice assistant, all sorts of HDR support, solid audio, decent picture quality, or great gaming features — it’s a seriously competitive TV. This year's TCL QM7L is priced at $999.99 in the same 65-inch size and carries a similar feature set, but the U7 has the brightness advantage.
The Roku Pro Series (2025), is marginally cheaper at $899.99 for the 65-inch version, and is another good comparison — it’s also pretty feature-filled, has hands-free control (you say “Hey Roku” instead of “Hey Google”), and sounds pretty good while having the same lack-of-bass issue. While I like the design of the Roku Pro Series a little better with its shadow-box design that lets it sit flush on the wall when mounted and cable management, it is significantly dimmer than the U7.
The moral of the story is that the Hisense U7, like most Hisense models, is superb value, even if it’s not always quantifiably better than similar TVs.
Attributes
Notes
Rating
Features
Having a hands-free AI-powered voice assistant like Google Gemini is pretty nice, even if it is somewhat inconsistent. It’s also nice to have most HDR and spatial audio formats supported.
4 / 5
Picture quality
The picture is very good for the price with decent color coverage, accuracy, and brightness, but it's not necessarily going to wow. It doesn’t help that the saturated colors can bleed and there’s minor vignetting.
4 / 5
Sound quality
The sound quality is good enough to skip the soundbar if you don’t need the home theater experience. There are plenty of audio features. It is held back by the lack of low-end though.
4 / 5
Design
The Hisense U7 Series has thin bezels, plenty of ports including four HDMI 2.1 ports, and is easy to assemble, though it’s much easier with a second person.
4 / 5
Smart TV and menus
Using the Google TV interface is straightforward, plus it comes with plenty of free content. Too bad hands-free control can’t get you directly to content, while menu diving can be a little confusing.
3.5 / 5
Gaming
AMD Freesync Premium Pro, an up to 165Hz refresh rate, 2.1 HDMI ports, and game bar make this a good TV for gaming.
4.5 / 5
Value
The Hisense U7 beats out the competition in value, even when it doesn’t in any other metric. It’s priced just right for what it is.
4.5 / 5
Should I buy the Hisense U7 Series MiniLED TV?Buy it if...You care a lot about value
The Hisense U7 Series has most of the necessary features, a good if not great screen, and solid audio at a reasonable price. That makes it a good upgrade from the most budget of TVs, while still not breaking the bank.
You want a lot of features
This TV comes packed with a lot of features, especially for the price, including: hands-free control via Google Gemini; Dolby Vision; Dolby Atmos; and much more (including a few different AI-powered features).
You want to skip the soundbar
Though it might lack some low-end punch, the Hisense U7 sounds pretty good for a TV at its price point. It sounds good enough, in fact, that if you’re getting it for a second TV, you’ll probably be happy skipping getting a soundbar.
You want the best picture quality
Though the picture is pretty good, it has some minor vignetting as well as color bleed in certain instances. You’ll have to look elsewhere if you want to be blown away by picture quality.
You want all the features
While the Hisense U7 is pretty feature packed, it’s not going to come with the same package as more expensive TVs. For instance, Dolby Vision IQ is not available (though Hisense includes its own variant of this feature).
Hisense U7
Roku Pro Series (2025)
TCL QM7L
LG C6
Price (65-inch)
$999.99
$899.99
$999
$1,499
Screen type
Mini-LED Pro
QLED w/ mini-LED
QLED w/ mini-LED
OLED
Refresh rate
165Hz
120Hz
up to 144Hz
165Hz
HDR support
HDR10, HDR10+, HDR10+ Adaptive, HLG, Dolby Vision
Dolby Vision IQ, HDR10+ Adaptive, HLG
Dolby Vision IQ, HDR10+, HDR10, HLG
Dolby Vision, HDR10, HLG
Smart TV
Google TV
Roku
Google TV
WebOS 26
HDMI ports
4 HDMI 2.1
4 (2x HDMI 2.1)
4 (2x HDMI 2.1)
4x HDMI 2.1
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.
TCL QM7L
One of the Hisense U7's main competitors, the TCL QM7L uses an SQD mini-LED backlight to deliver more refined local dimming, but the U7 actually offers more brightness. Both TVs are available at the time of writing for the same price. Without a great deal to separate these two, this will most likely come down to whichever is cheaper at the time of purchase. Read our full TCL QM7L review.
LG C6
The LG C6 is a strong upgrade over last year's LG C5, delivering brilliant picture quality, perfect contrast and black tones, the best suite of gaming features you can find, and a good smart TV interface. As its price drops, it's a very strong OLED competitor to the mini-LED tech in the QM8L. Read our full LG C5 review.
I used the Hisense U7 Series MiniLED TV regularly for a week. I tested it using streaming shows, movies, music, and games (via PS5). I went through the various features, particularly the hands-free Google Gemini, to see if it worked as advertised. I also spent time listening to the audio as well as paying attention to the picture quality.
After spending some time with this TV, I believe it’s ideal for those who have routinely gotten the cheapest TV and want to upgrade to something better without breaking the bank.
I’ve tested a lot of tech gear over the years including laptops, keyboards and speakers. So I've been able to use my expertise towards giving an honest and fair opinion, not to mention a critical eye, to any product I test.
PIA has launched Halloween savings on its two-year plan, dropping its price to under $50 for 24 months of protection, with two extra months included.
That makes it $1.89 per month which is 30 cents cheaper than it'd normally cost at $2.19. It also makes it even cheaper than Surfshark ($2.49/month), which is our usual recommend best cheap VPN.
PIA is among the most customisable VPNs available, perfect if you're a tinkerer looking to refine your VPN connection. But, it also hosts an interface simple enough that any beginner could use it on their phone, tablet, or TV, without risk of confusion.
Only CyberGhost ($1.99/month) and PrivadoVPN ($1.11/month) offer reliable VPN experiences for as little or less over two years. But neither of those has unlimited device connections like PIA, nor do they have anywhere near PIA's 166 server locations – handy for both streaming options and speed of connection.
Private Internet Access: $2.19/month $1.89/month for 26 months of protection
PIA is among the oldest and most trusted VPNs available. It's highly customizable, has a huge server network, with over 160 locations, and works on any device thanks to apps for all platforms and unlimited connections. At $1.89/month, it's one of the cheapest VPNs we recommend. It has truly worldwide server coverage and the tools you need to stay secure anywhere. View Deal
After what felt like years without improvement, PIA raised the bar in recent weeks by adding 22 new streaming-optimized servers and 15 new locations to its network.
That might not quite match the extra malware, phishing and other scam protection features getting added by the likes NordVPN and Surfshark, but it's a welcome reminder to users that PIA remains an active player in the privacy software market.
Plus, unlike many of these other VPN providers, PIA has never found itself in any hot water to taint its longstanding and trusted reputation.
PIA has also kept its price nice and low year on year. This Halloween special makes it an even better time to give it a ghoul.
The battle between US airlines to offer the best connection in the sky has heated up in the past few weeks, with Delta Air Lines CEO Ed Bastian reportedly making some choice comments about Starlink and Elon Musk, which led United Airlines to offer a status match, and Delta flyers to take it up.
United Airlines kicked off its Starlink Wi-Fi installation process across its fleet back in 2025. Since then, its entire fleet of regional United Express jets has it, and more mainline aircraft are coming online in due course. As of today, 636 aircraft in United Airlines’ fleet offer Starlink, and for those passengers it mean free, fast Wi-Fi, without the “what if my flight doesn’t have a stable connection?” worry.
Delta Air Lines, on the other hand, chose Amazon Leo over Starlink back in March of 2026, and it won’t even begin the lengthy installation process until 2028. American Airlines has also opted for Starlink, but installations won’t begin until early 2027. United, meanwhile, plans to complete installations across its entire fleet by the end of 2027, giving it a substantial head start over its major US competitors.
(Image credit: United Airlines)I’ve been lucky enough to fly United with Starlink five times: twice on special media flights and three times on regular commercial flights. After the first experience, I wrote that “it feels like the internet finally reached the sky,” and that still holds up.
The trouble is that United operates 1,492 aircraft, including mainline and regional jets, and it’s been a guessing game whether you’ll luck out and have Starlink connectivity. Now, United’s digital team has clearly taken note of customers' frustration, and has launched a Starlink tracker on its website and in its app.
This lets you check whether your upcoming flight has Starlink, and it also shows how much of the fleet is connected. The current breakdown is 351 regional jets, 280 narrow-body mainline planes, and five wide-body aircraft with Starlink installed and active.
(Image credit: United Airlines)It's broken down by aircraft type, including Boeing 787, 777, 767, 757, 737, and 737 Max; Airbus A321 (Neo and XLR included), A320, and A319; E-175; and CRJ. You'll be able to see how many of each aircraft United has started the installation process on as a percentage, and 'coming soon' if work hasn't begun yet. Sadly for me, the aircraft to which Starlink is 'coming soon' include my favorite, the Boeing 757.
You can even see availability by hub, including Newark, Chicago, Washington, D.C., San Francisco, Los Angeles, Houston, and Denver.
While United’s Starlink rollout is impressive, most of the airline’s longest flights still don’t offer the service. Even worse, those planes feature Panasonic Wi-Fi service, which is among the slowest and least reliable in the sky, according to Zach Griff, author of travel newsletter From the Tray Table.
“On recent cross-country flights, I had multiple hours-long periods when I couldn’t establish a strong enough connection to send more than a text,” wrote Griff.
(Image credit: United Airlines)You can only check starting three days before departure, so it won’t help when you book, and aircraft and tail numbers can change. Assignments are typically confirmed within 24 hours of departure, and United will also email and text passengers, and flag Starlink flights on the flight status page in its app.
If you do luck out, it’s a night-and-day difference from any other in-flight Wi-Fi, with speeds much closer to what you’d get on cellular or home Wi-Fi. Streaming Disney+ or Apple TV, listening to Spotify or Apple Music, loading sites, browsing YouTube, texting, and email are all faster — and those emails are actually sent.
Starlink on United is free for MileagePlus members, though you’ll need an account, which is also free.
Along with the tracker and a fresh install count, United is extending its 'Switch to Better Wi-Fi' status-match through October 22. This lets eligible Delta and American members earn United Premier status through January 2028 by meeting a spending threshold ($1,500 for Silver up to $7,000 for 1K) and flying United within 90 days. Though the timing of the extension comes as United has hiked the requirement to maintain status in 2027.
Whether you’ve been lucky enough to fly Starlink on United Airlines or are tempted by the status-match offer, let me know what you think in the comments below, especially if you’re loyal to Delta, American, or another airline.The good news is that United Airlines is well on its way to its full fleet offering Starlink — and it'll almost certainly cross the line before Delta or American.
Social Security benefits are set to get a boost to offset rising consumer prices. And, streamer Hasan Piker says the GOP's "guilt-by-association politics" won't drag Democrats down in the midterms.
(Image credit: Saul Loeb)
If you feel Windows 11 is too bloated, one way of tackling that is to make your own light version of the OS – and it's possible to do that with a utility that's been around for a long time now.
Tiny11 Builder lets you create a custom version of Windows 11 without all the bloat you don't want — and the good news is that a new release of this tool makes it a lot more user-friendly.
The Register spotted that NTDEV, the creator of Tiny11, has released a "completely redesigned" Tiny11 Builder, with an all-new fancier interface that makes decluttering Windows 11 a lot easier.
(Image credit: NTDEV)Previously, the Builder tool relied on a cruder setup process leveraging PowerShell scripts, but with this new version you're presented with a WinUI 3 desktop app. In other words, a fully modern Windows 11 app, as you can see from the screenshots, which is a far nicer — and easier — way of working than before.
Builder is also faster now, too, with the developer explaining: "The new Builder is massively more reliable, with features like auto-resume, custom configurations (!) and leveraging the full power of modern PCs in order to speed up the process."
Analysis: a slicker way of cutting down Windows 11In short, making your own installation image is less intimidating for those who aren't so technically confident, whether you're concocting a custom take on Windows 11, or just using the standard Tiny11 build. The latter removes a whole bunch of Microsoft apps and general bloat, but it keeps the central pillars of the OS, including Windows Update and Microsoft Defender (the built-in antivirus).
That said, there are caveats for those wishing to avail themselves of a super-cut-down version of Windows 11. As a custom installation of the OS, the end result isn't officially supported by Microsoft, and if you go for the default Tiny11 configuration, bear in mind that it's quite aggressive in what it strips out (so you may find features that you use suddenly aren't present).
Definitely steer clear of the 'Core' version of Tiny11, as that removes all sorts of important facets such as Windows 11 feature updates (though not security patches) and Microsoft's recovery environment (for a super-light install). Even the developer recommends that the Core install is for testing in virtual machines only.
Note that a Tiny11 install still requires a valid Windows license. While the app can be used to install Windows 11 on an older PC which doesn't meet the official system requirements, the developer doesn't guarantee that this will work flawlessly, noting that "local-account and hardware-check settings are best effort, not guaranteed bypasses on new builds". As stated, you can also use the tool to install Windows 11 with a local account (something Microsoft is still working to prevent), at least in theory, but again the bypass for this isn't guaranteed.
It's also worth bearing in mind that as with any third-party software, you use Tiny11 at your own risk.
Google may be sunsetting its Nest smart-home brand as it makes room for new hardware, but the tech giant isn’t leaving its older smart speakers out of the firmware-update equation.
If you’re still glued to your Nest speaker from years ago, you’ll be happy to learn that Google is currently testing a new firmware update, version 3.79.550760, through the Google Home Preview Program, which you’ll need to be signed up to if you want early access.
While an exact release date hasn’t been announced, the upcoming changes could seriously upgrade the overall performance of older devices.
As per Google’s release notes, the Nest Audio, Nest Mini, Google Home, and Google Home Mini are getting a roster of improvements across audio, smart-home control, and more. The Google Home Max and Google Home Speaker, the company’s latest audio device, are also getting some bug fixes, but are being left out of the wider updates — so we’re assuming that these devices are already running this firmware.
In addition to general performance and stability improvements, there’s a slew of audio improvements on the way, including fixes to media streaming and volume, which could do wonders for boosting your music playback experience. At the same time Google is polishing smart-home controls, a fix that we’re guessing will enhance the synergy between voice commands and the smart home devices that are connected to your speaker.
Finally, the company is rolling out setup and connectivity improvements on Wi-Fi issues and ‘Google assistant entry experience improvements’. This is likely a reference to Gemini, which Google is making the flagship voice assistant for its smart-home tech as it releases new devices.
While some reputable tech brands kill off widely-used, albeit previous-gen devices as a way to push users to upgrade to newer models, Google hasn’t completely forgotten about the devices that put the company on the smart home map. Just a few weeks ago Google unveiled a big Home update for video doorbells, security cameras, and Automations, so it’s not just smart speakers that are getting all the attention.
As mentioned, if you want to make the most of Google’s upcoming smart speaker upgrades, you’ll need to be signed up to the Google Home Preview Program. If you’re not already enrolled, just head to the Google Home app and open Device Information. Select Preview Program, and you’ll be able to sign up if you’re eligible. If you are, the firmware update will install overnight.