Having been at Nvidia's RTX Spark event in San Francisco earlier this month, I was lucky enough to get a firsthand walk through of the many things the 'superchip' can do. Since then I've spent almost every waking moment putting the ARM-based RTX Spark through its paces and seeing what makes it so different from other chipsets that have come before.
The RTX Spark is Nvidia’s first System on a Chip (SoC). Combining an 18-core CPU and 5120 Cuda core Blackwell RTX GPU all in one, or a 20-core CPU and 6144-core GPU for its meatier version, it offers an integrated chipset in the vein of Apple’s M series chips. While Apple’s silicon is known for its oomph, that Blackwell RTX GPU means you’ll also get considerable gaming performance here to boot.
How does this translate in terms of raw numbers? It’s certainly got a lot going on under the hood, as the RTX Spark N1X chip I’ve been playing around with squeezes 20 cores into its CPU. While the 2,623 single-core performance I clocked on Geekbench 7.1 falls somewhat short of the 4,288 we got for Apple’s M5 chip, its 21,899 multi-core score massively outstripped the latter’s 17,926. That means that for tasks like content creation, software development and AI, you should be able to expect more oomph in your corner.
So given the potential it promises across agentic AI, creative workflows and gaming, let’s take a look at how it performs across each of those areas in turn.
Hybrid agentic AI(Image credit: Future)During the launch of Nvidia’s RTX Spark SoC, there was a huge focus on its potential for hybrid agentic AI. Now, cloud-based AI models are undoubtedly pretty powerful but I absolutely have security concerns about uploading my most private data to the cloud and I’m not entirely sure I want to blindly trust the companies behind some of these models.
Using local, open-source models that I can vet myself and that never transmit sensitive data outside of my network feels like a much safer alternative — but not everybody necessarily wants to cut themselves off from the power of frontier models. That’s why Nvidia has introduced a hybrid-system for the RTX Spark instead.
Instead, the hybrid-workflow that the RTX Spark supports allows you to select your choice of local models and ring-fence them for certain parts of an agentic workflow, while outsourcing specific, demanding tasks to cloud frontier models. As a result, users should be able to take a far more granular approach, deciding exactly how much they want to rely on public vs private models.
For people who like to vibe-code complex products or are generating demanding 3D scenes, not being forced to choose between binary security options of a lax, YOLO approach and a full-blown lockdown will likely be a valuable tool.
So now that I’ve spent some hands-on time with the RTX Spark, how has its agentic performance delivered on these promises? To get a broad picture of I ran the MLPerf Client benchmark to simulate data analyst and SWE agentic workflows using the Qwen 3 8B local model, with each run hitting an average duration of 63.7 and 50.8 seconds and processing up to 14,005 and 10,238 tokens respectively.
I also benchmarked some generative image and video workflows using ComfyUI. When testing workflows using Flux2.Dev (NVFP4 and Flux2.Klein 4B Base) NVFP4 models for image generation, it took 46.5 and 16.2 seconds to generate respectively, while the LTX 2.5 (Distilled) NVFP4 model took 88 seconds. That’s broadly in line with what Nvidia has been promising and shows how rapidly the RTX Spark can generate media using local models.
Raw data will only tell you so much though. That’s why I spent days training my own AI agent using Hermes and the Qwen3.8 27B open-source local model to see what the RTX Spark could do.
Certainly, it seems to have absolutely ripped through some tasks on its Extra High setting. Feeding it some analytics data in CSV form, I asked it to tidy up the spreadsheet, analyze the data and present its key findings and after 12 minutes of pondering and tweaking, it happily spat out a pivot table and some observations on the data. While I wasn’t hugely surprised by any of its conclusions, I’ve spent months poring through this data and the fact it could identify the most essential points without any of my secure information leaving the laptop was pretty impressive.
Some experiments I conducted involved a little more patience and tweaking of the agent’s workflow to get the best results though. The first time I asked my Hermes agent to connect to my online email client and provide a digest of the day’s emails, it spent 75 minutes trying various methods to exchange tokens with Outlook’s online client, before crashing unexpectedly. However, the second time I played a slightly more active role, providing it feedback when I felt it was drifting or had come up against hurdles and it successfully set up the brief in 70 minutes.
So with some patience and judicious prompting, you can definitely get some good results utilizing a local model. Additionally, you don’t have to go through this full process every time — ask Hermes to save something as a skill and it will automate this process in future or even schedule it as a recurring Cron Job. You can even ask it to work out ways to improve the efficiency of existing skills, meaning it should be easier to minimize the run time and resources they require in future.
Creative workflows(Image credit: Future)You’d be forgiven for thinking this means the RTX Spark laptops are predominantly focused on AI tools. But that couldn’t be further from the case: while a lot of the press surrounding the chip has been on its agentic AI tools, this really isn’t the sole string to its bow.
As you can tell from the fact that the RTX Spark is used in the latest Asus ProArt P16, creative work is a big focus for the new SoC. Even if you’re not interested in the power it offers for generative AI, the sheer number of RTX-compatible creative apps out there, whether that’s Blender, Adobe Creative Suite, Canva or Unity shows how many creative giants are throwing their weight behind the new SoC.
Eager to test how well the RTX Spark handles creative work, I used Puget Bench to automate a range of tasks in Photoshop and Premiere Pro. PugetBench’s standard Photoshop workflow took 10.83 minutes and netted a score of 11,801, while its standard Premiere Pro pipeline took 8.12 minutes and achieved a score of 76,234, putting it firmly in the range of a true creative workstation. That means it sits in the rough region of Apple’s M5 chip, which scored 13,755 and 69,887 respectively, besting it on complicated video work but not quite equaling it for still imagery.
For those who use generative AI in their work, I also benchmarked some generative image and video workflows using ComfyUI. When testing workflows using Flux2.Dev (NVFP4 and Flux2.Klein 4B Base) NVFP4 models for image generation, it took 46.5 and 16.2 seconds to generate respectively, while the LTX 2.5 (Distilled) NVFP4 model took 88 seconds. That’s broadly in line with what Nvidia has been promising and shows how rapidly the RTX Spark can generate media using local models.
While I’m neither an aspiring cinematographer or a budding Blender artist, I’ve spent decades tinkering with static images so I dug out an old 4K, 300dpi Photoshop file. It was already pretty huge as it featured lots of hi-res layers, clipping masks and adjustment layers but I tripled the number of layers for good measure and added a bunch of filters and effects. Processing time remained less than a second and even halving the image size only took about five, which is pretty impressive given the sheer number of layers and groups I was working with.
And the RTX Spark should even be able to speed up these applications’ built-in AI tools, thanks to the recently announced collaboration between Nvidia and Adobe. Optimizing the apps to take full advantage of the chip’s GPU, Adobe promises that RTX Spark laptops offer 2x AI processing, editing, color and effects. That’s a real advantage for anyone that uses these AI tools as part of their workflow.
Gaming performance(Image credit: Future)Given Nvidia’s history, gaming is naturally also a big focus for the RTX Spark chipset. As most games run on x86 architecture, SoCs haven’t been the most natural home for gaming in the past. However, Nvidia’s stature in this space means plenty of developers launched RTX Spark native versions of their games when the chip was launched on October 16, including Cyberpunk 2077, Doom: The Dark Ages, and 007 First Light — while the Call of Duty series is due to land in 2027. And for those that aren’t yet compatible, Prism emulation will mean you’ll be able to run many titles with only a slight impact on your CPU performance.
When it comes to gaming performance, the RTX Spark is certainly no slouch. It netted a 3DMark Port Royal score of 8,133, Steel Nomad score of 2,846 and a Speed Way score of 2,872. That’s a touch below Asus Zephyrus G14 with Nvidia GeForce RTX 5070 Ti’s respective 10,119, 3,488 and 4,031 scores. But it’s considerably better performance than you’d get out of most laptops with an integrated GPU such as the pre-RTX-Spark Dell XPS 16, which secured values of 3,888, 1,488, and 916.
But while these simulated benchmarks are helpful for getting a broad view of gaming performance, in-game benchmarks are the best way of gaining real insight into how actual titles perform. While testing the RTX Spark, Cyberpunk 2077 delivered a stable 30.16fps at 1080p on Raytracing: Ultra settings and Doom: The Dark Ages averaged out at 48.58fps at 1080p — very similar to the 32.33fps and 55.63fps we got out of the Asus TUF Gaming A14 with Nvidia GeForce RTX 5060.
Nothing compares to actually trying out games first hand though, so I fired up a few of my favorites and tried them out. Cyberpunk 2077 honestly felt pretty playable even using the above Raytracing Ultra setting and once I’d switched down to Ray-tracing Medium, it ran at a wonderfully fluid 60fps.
Meanwhile, running Gears of War: E-Day at Ultra settings felt as smooth as tahini drizzled over a marble countertop. As I crunched through waves of the Horde, there wasn’t any noticeable slowdown even at Ultra settings, with the action never dipping below a seriously fluid 115fps. So it might not match the RTX 5090 for sheer power but anyone barring elite gamers will find a lot to like here still.
So even though it’s naturally not at the level of dedicated gaming laptops like the MSI Vector A18 HX A9W, I’m still pretty impressed with gaming on the RTX Spark chip. And that only becomes more pronounced when you compare it to similar lightweight SoC systems. While the MacBook Pro M5 is similarly impressive in terms of creative performance, it was barely able to scrap 11.5fps in Cyberpunk 2077 on Raytracing: Ultra settings.
As a result, if you’re looking for a chipset that will give you not just great performance in one specific task but great performance across everything you do, the RTX Spark has proven it will be a solid choice.
There has been an explosion of AI-powered products released over the past four years, with most built on top of leading foundation models. Startups, enterprise software vendors, and even large incumbents route their core intelligence through APIs from the leading AI labs, and a growing but still narrow set of open-weight alternatives.
This arrangement has most certainly enabled a genuine burst of AI products, but it has also created a structural fragility which can be remedied through the democratization of model creation and training.
Defining a wrapperIn its simplest form, an AI wrapper is a product whose core function is an interface sitting on top of a third-party foundation model's API, with little to no proprietary technology beneath that layer.
That approach can have a short lifespan and Jasper can illustrate that. Once the standout of the AI writing boom with a $1.5 billion peak valuation, Jasper saw its core market vaporized when ChatGPT introduced free, native writing features. Its revenue fell from approximately $120 million in 2023 to approximately $55 million in 2024. Jasper did survive, by redirecting its efforts toward enterprise workflows and brand-specific training.
Generally speaking, analysis shows that, among AI startups that have wound down in the US in 2025, 81% were "wrappers and apps". Copilots and assistants layered on foundation models, AI productivity tools, content generators, and vertical SaaS products whose core differentiation was an LLM front-end rather than proprietary data or infrastructure.
In Jasper’s case, and in many others, what pressured the company wasn't a competitor out-executing them. It was the platform they built on top of simply absorbing the feature they'd built their company around.
Not all wrappers are equalIt would be a gross generalization to say that all AI wrappers are the same. A thin prompt-and-display wrapper is different from a product that does heavy retrieval, tool orchestration, agentic workflows, or domain-specific fine-tuning. The latter can have real defensibility even while sitting on top of a third-party base model. The model call is one component, but certainly not the whole product.
Some companies also use multiple foundation models or fine-tune/distill their own smaller models for specific tasks after prototyping on a frontier API. Open-weight models add variety too as not all wrappers call a closed-source frontier model.
The wrapper problemRegardless of where an AI product sits on the wrapper complexity scale, they all share the same problem. When a company's core value proposition depends entirely on an API call to a third party, that company does not fully control its own product.
It cannot control pricing changes, rate limits, deprecations, shifts in model behavior, or the possibility that the platform provider decides to compete directly in the same vertical.
This is not a theoretical risk, though how much it affects any given company likely depends on how much of its value sits above the model layer.
The economics of the wrapperSo what is the defensibility of an AI wrapper in practice?
The short answer is that it comes down to intellectual property.
Where a company benefits from an existing distribution advantage, established customer relationships, regulatory licensing, network effects, or years of accumulated brand trust, model-layer differentiation may not matter as much. But if what makes a wrapper distinctive is observable from outside the organization and replicable by a competent competitor within a limited period, it seems reasonable to expect it will eventually be replicated.
That is the unfortunate economic truth beneath the wrapper model. The cost of replication is near zero for the platform that controls the underlying model, and near total for the startup that doesn't. A wrapper's moat, if it has one, has to come from something other than the model call itself. Absent those, a wrapper is unlikely to have a lasting competitive advantage.
The barrier to the solutionAt this point, you might be inclined to agree that model ownership is one solution to this problem. But that's easier said than done.
The reason so few companies own their models is not a lack of desire. It’s, more plausibly, financial. Training a frontier-competitive model requires enormous compute budgets, specialized talent, proprietary or expensively licensed data pipelines, and the infrastructure to run reinforcement learning at scale. These costs put model creation out of reach for all but the best-funded companies.
For companies to build on their own models as a norm, this barrier has to fall meaningfully. Several forces are already pushing in this direction, open-weight models being one of them. But even then, hosting and fine-tuning an open-weight model is no small task. It still demands technical talent and compute infrastructure most startups don't have access to.
True democratization of model ownershipDemocratization, in this context, doesn't mean every company training a frontier-scale model from scratch. That goal is neither realistic nor necessary. It means democratization reaching the training layer the same way access to AI has been democratized for end users.
Democratizing model training and ownership could be what gives founders a lasting chance at turning an idea into a business that doesn't eventually get absorbed by a model provider as a simple feature. And if that happens, the stakes may go beyond individual business durability.
As things stand, access to models is cheap. Access to training is not. This needs to change. The ability to train an AI model should be fully democratized so that the value, the control, and the responsibility can be distributed rather than centralized.
We've featured the best AI tool.
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
You don't need to understand the mechanics of AI tools to understand what's happening to traditional technology pricing. AI is breaking the link between effort, cost and value that technology services have relied on for decades.
Imagine two managed service providers responding to the same production incident. One assigns an engineer who spends five hours tracing logs, checking dependencies and isolating the root cause.
The other uses AI-enabled observability to identify the issue in minutes, trigger the appropriate remediation and restore service before users notice. The second provider used fewer hours but delivered more value. Should they be paid less?
Enterprise technology services are running into the same pricing challenge, but on a larger scale. The old pricing model equated more hours with higher cost and, in theory, greater value. But today, AI is enabling organizations to move from reactive support to self-healing operations. In our own client engagements, we're seeing auto-generated tickets fall by as much as 70%, roughly one in five operational events resolved autonomously, and up to 45% fewer major outages where predictive models are in place.
That should translate into straightforward cost savings, but the reality that CIOs and CFOs are grappling with is more complicated. AI can deliver the same or greater value, with significantly less effort, which undercuts the assumptions behind what they are paying for. Managed services providers are facing the inverse of this same problem: How do you price services when the traditional relationship between effort, cost and value no longer holds?
Increasingly, predictability is replacing capability as the bigger challenge to address.
What senior leaders are saying about AIThe challenges of identifying the right AI use cases are coming up in conversation after conversation with CXOs and increasingly with business leaders beyond IT. Leaders of all kinds are recognizing that a successful AI program begins with an operational problem, and the sophistication of the AI needs to be matched to the scale of that problem.
That also means organizations must be willing to redesign their operations around what AI makes possible. Only then can clients and providers have a meaningful conversation about value and how to price it. For example, one enterprise client's finance team was struggling to get a single, accurate view of its cash position across dozens of markets and currencies.
Each region had recorded the same transactions differently for years, and leadership had spent more than five years trying to standardize the process without success. Before this, there was no credible baseline for measuring improvement, making it nearly impossible to agree on the value AI was expected to create.
A client’s business operations are often just as unsettled as the technology helping run them. The contracts holding the two together were built for a past world with more predictable staffing, fixed scope and stable demand.
There is no one right pricing modelThe natural response to this uncertainty is to look for a new pricing model to replace the old one. But no single model solves the problem. Outcome-based, consumption-based, and AI-enabled pricing approaches each have advantages in the right circumstances and introduce new trade-offs. The challenge lies in creating enough flexibility to operate when effort, cost and demand no longer move predictably.
Outcome-based pricing works well when a result can be clearly defined and attributed. That gets much harder once AI-driven workflows start feeding into one another, making it difficult to trace which system or step contributed to a business result several automated stages downstream.
Consumption-based pricing ties cost to usage, which sounds fair until you run into the token paradox. While the price of a single AI query keeps falling, total spend keeps climbing anyway, because usage is no longer limited to one person typing one prompt. It's chains of AI agents running continuously in the background, each step triggering the next and including its own line item.
Take a lesson from a banking client running a 20-developer modernization program. Token costs per developer had climbed to roughly $1,000 a month. The team reduced that to $200 by routing simple work to lower-cost models, identifying usage patterns where token consumption was four times higher than the team average, and using deterministic automation for repetitive tasks where AI wasn't needed.
Gain-sharing models sound intriguing because the provider takes on more risk in exchange for a share of the outcome. However, they can become difficult to manage when both parties disagree about which improvements resulted from the provider’s work and how much credit each side deserves.
Why pricing flexibility is vitalThese pricing models each assume either effort, cost or demand will remain predictable enough to price against. Increasingly, that is not the case.
While the market has not settled on a single approach, we believe hybrid structures have the greatest potential to become the preferred commercial model for AI-enabled managed services. A hybrid model combines a predictable base fee for core services, a variable component tied to AI consumption and outcome-based incentives where results can be accurately measured.
For CIOs, this approach provides greater budget predictability while offering some protection against consumption spikes. For providers, it helps manage AI consumption volatility while creating incentives for efficiency, continuous improvement and value creation.
Designing partnerships for uncertaintyThe goal was never to find the perfect pricing model for AI, but rather to build commercial structures that can flex when conditions change again. That starts with determining clear baselines before any gain-share or outcome-based conversation begins.
It continues by intentionally building in scheduled points to recalibrate scope and pricing instead of being locked into the traditional three-year contract. Transparency around performance, costs, governance and AI outcomes also needs to be prioritized so that both sides trust the numbers.
We are still in the early innings of figuring this out. But it’s clear that AI is changing the role of the technology partner, from delivering capacity to helping enterprises manage uncertainty and accelerate business outcomes. Enterprises must build enough flexibility into their pricing models to adapt as the technology, demand and value equation changes.
While no one can perfectly price the future, we can design commercial models that evolve alongside the technology and the value it creates.
We've listed the best accounting software.
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
Watch NBA 2026/27 live streams as the New York Knicks (in five!) seek to defend their crown, having beaten San Antonio Spurs 4-1 in June to break a 53-year duck and lift the Larry O'Brien Championship Trophy for the first time.
It felt momentous in the present, and there's a growing sense now that the sands are shifting. Faced with the prospect of becoming yesterday's men, LeBron James and Giannis Antetokounmpo each hit the nuclear button in the offseason, their respective moves to the Philadelphia 76ers and Miami Heat having been precision-engineered for instant gratification.
For it's NBA Finals MVP Jalen Brunson, back-to-back MVP Shai Gilgeous-Alexander, face of the league Victor Wembanyama and two-time top-scorer Luka Doncic who are the star turns now – and unlike the others, Wemby and Doncic are yet to taste what it's like to stand at the top of the mountain.
Here's how to watch NBA 2026/27 from anywhere in the world – starting with FREE options.
Can I watch NBA 2026/27 for free?Yes. Select NBA games are shown on the NBA YouTube channel in India, and on free-to-air CCTV5 in China.
Traveling abroad right now? You can use a VPN to watch NBA 2026/27 games for free as if you were right at home.
Use a VPN to watch NBA 2026/27 live streams Editors Choice► Sign up to Norton VPN and watch NBA with our exclusive offer
Norton VPN is fast, reliable and packed with useful features, with server locations worldwide. Its Plus plan is especially great value, protecting up to 10 devices under one subscription.
✅ 60-day money-back guarantee
✅ Save 70% on the Plus plan
✅ Just $2.50/month
Even better: TechRadar readers get an exclusive discount on Norton VPN.VIEW DEAL ON
How to watch NBA 2026/27 live streams in the USNational coverage of the 2026/27 NBA season is being provided by a wide array of TV channels and streaming services, including ABC, ESPN, ESPN2 and NBC.
If you're a cord-cutter, Sling TV is an OTT service that unlocks access to a good proportion of televised games. Its Sling Orange package ($4.99/day, $14.99/week, $45.99/month) carries ESPN and ESPN2, while its Blue plan (from $45.99/month) includes ABC and NBC in select cities.
You can combine them with the Orange + Blue plan for $60.99/month.
Alternatively, ABC, ESPN, ESPN2 and NBC are also carried by YouTube TV, Hulu + Live TV and Fubo, each of which offers a free trial to new users.
Amazon Prime is showing Friday night double-headers, late-season Thursday night games, late-season Saturday afternoon games, select NBA Cup ties and the European games. A subscription costs $14.99/month or $139/year after a 30-day free trial. Students and 18-24 year-olds can get it for $7.49/month.
ABC, ESPN and ESPN2's NBA coverage is available to live stream on ESPN Unlimited, which costs $31.99/month or $319.99/year.
NBC's NBA coverage is available to live stream on Peacock, which starts at $12.99/month or $129.99/year for a plan that carries live sports. However, you can access Peacock virtually for free with a Walmart Plus 30-day trial for $1.
Every out-of-market game, meanwhile, is available to live stream on NBA League Pass, which starts at $16.99/month or $109.99 for the entire season.
Outside the US for a game? Use Norton VPN to access your usual coverage.
How to watch NBA 2026/27 live streams in CanadaNBA coverage, including that of Toronto Raptors fixtures, is split between Sportsnet and TSN in Canada.
If you don't have cable, the Sportsnet+ streaming service starts at CA$34.99/month or CA$269.99/year to access what goes out on Sportsnet channels.
TSN+ offers streaming access to TSN channels, with prices starting at CA$24.99/month or CA$249.99/year.
66 games are exclusive to Amazon Prime, which costs CA$9.99/month or CA$99/year after a 30-day free trial. Students and 19-24 year-olds can get it for CA$4.99/month or CA$49/year.
Every out-of-market game, meanwhile, is available to live stream on NBA League Pass, which starts at CA$19.99/month or CA$129.99 for the entire season.
If you're out of Canada but still want to tune in, explore the VPN route set out above, which will help you access your accounts from anywhere.
How to watch NBA 2026/27 live streams in the UK(Image credit: Other)Sky Sports shows several NBA games each week in the UK, across a range of channels.
Sky Sports packages start at £35/month, with £22/month pricing available to existing Sky customers. You can also tune in via a NOW Sports membership that carries the Sky Sports channels.
Amazon Prime is showing 66 games this season, including the NBA Cup. A subscription costs £8.99/month or £95/year after a 30-day free trial. Students and 18-24 year-olds can get it for £4.49/month or £47.49/year.
Alternatively, every single game is available to live stream on NBA League Pass, which starts at £16.99/month or £114.99 for the entire season.
Not in the UK right now? To access your usual streaming service from outside the UK, you'll need to download a good VPN, as detailed above.
How to watch NBA 2026/27 live streams in AustraliaIn Australia, several NBA games are shown each week on ESPN via Foxtel, with live streaming available via Kayo Sports and Disney+.
Kayo Sports subscriptions start at AU$30 per month after a 7-day free trial, as detailed above. Alternatively, you can get your first month for AU$1.
A Disney+ subscription starts at AU$9.99/month or AU$179.99/year, but if you sign up before 11:59pm AEDT on Wednesday, October 21, you can get a 12-month plan for just AU$125.99.
66 games are exclusive to Amazon Prime, which costs AU$9.99/month or AU$79/year after a 30-day free trial.
Every single game, meanwhile, is available to live stream on NBA League Pass, which starts at AU$24.99/month or AU$174.99 for the entire season.
Not in Australia right now? You can simply use a VPN like Norton VPN to watch the action as if you were back home.
When do the NBA 2026/27 playoffs start?The 2026/27 NBA regular season runs until Sunday, April 11, after which the playoffs will begin on Saturday, April 17, starting with the play-in tournament.
When is NBA Cup 2026?The 2026 NBA Cup runs from Friday, October 30 to Friday, December 11.
Who are the recent NBA champions?NBA champions
2026 – New York Knicks
2025 – Oklahoma City Thunder
2024 – Boston Celtics
2023 – Denver Nuggets
2022 – Golden State Warriors
1921 – Milwaukee Bucks
2020 – Los Angeles Lakers
2019 – Toronto Raptors
2018 – Golden State Warriors
2017 – Golden State Warriors
Of course! Each of the major broadcasters has a streaming platform that you can access through a mobile app or via your phone's browser.
You can also stay up-to-date with the key NBA 2026/27 moments on the official social media channels on Instagram (@NBA), YouTube (@NBA) and Facebook (@NBA).
We test and review VPN services in the context of legal recreational uses. For example:1. Accessing a service from another country (subject to the terms and conditions of that service).2. Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.
Five degrees might not sound like much when you look at the weather forecast. But for the networks our everyday lives depend on, it can mean the difference between equipment running reliably and being pushed past the limits it was built for.
That matters more every year as extreme heat becomes more common. Heatwaves, wildfires, severe storms, and prolonged periods of high temperatures are putting IT infrastructure under pressure in places that were never designed for these conditions.
At the same time, the hardware inside our networks is becoming more powerful and densely packed, making it even harder to keep cool.
Traditionally, outdoor wireless equipment has been designed to operate at temperatures of up to 60°C, taking into account both the heat outside the equipment and the heat generated by the hardware itself. But some vendors are now lowering that ceiling to around 55°C.
As temperatures rise and access points generate more heat of their own, that five-degree difference could be critical.
Our networks are getting hotterThe pressure is building as wireless technology evolves. Access points, for example, have gone from housing two radios to three or four, and each extra radio adds more heat that has to be dissipated. As a result, vendors are having to think carefully about how they balance heat and power as they pack in more performance benefits.
Wi-Fi 8 could also raise the stakes even further. Future wireless platforms are expected to incorporate more AI-assisted processing at the edge, increasing demand for compute resources, memory and power. But that extra processing power and memory will also need more power and will generate more heat, creating another challenge for vendors trying to keep their equipment reliable in demanding environments.
Solar load is an increasingly critical factor too. Direct solar exposure can raise equipment temperatures well beyond ambient conditions, making solar load a critical factor in outdoor network design. It’s important to consider both how hot the air around the equipment is becoming and how much additional heat the hardware is absorbing from the sun. Together, this extra heat can push already hot equipment much closer to its limits.
There is a cost to resilienceDesigning hardware to operate reliably across a wider temperature range is more complicated than it might seem. Temperatures are rising and are becoming more unpredictable, and the conditions outdoor access points face today could look very different in just a few years.
Every component has its own operating limits, so each part needs to be selected based on the temperatures it’s expected to encounter. However, building access points capable of operating at temperatures closer to 70°C might need industrial or automotive-grade parts. These can be significantly more expensive and aren’t always as widely available globally, creating their own supply chain challenges.
Cooling increasingly powerful access points brings its own trade-offs, too. Fans help dissipate heat, but they add more moving parts and another potential point of failure. Larger heat sinks and liquid cooling can be helpful alternatives, but they also make the equipment bigger, heavier, and more expensive.
At the same time, customers want more powerful and capable equipment at competitive prices. For vendors, however, building more powerful outdoor access points that can withstand higher temperatures increases hardware cost and complexity.
Lowering the maximum operating temperature can therefore help keep costs down. But that five-degree reduction matters, since it can limit the countries, climates and outdoor environments where an access point can be reliably deployed.
Is your network ready for the heat?As extreme weather becomes more common, organizations need to think carefully about the conditions their network infrastructure may need to operate in over the coming years. That means looking beyond day-one performance specifications and considering how equipment will cope under sustained heat, solar load and other environmental stresses throughout its expected lifespan.
The concern isn’t that an access point will suddenly fail the moment temperatures rise. However, as equipment becomes more powerful and densely packed, thermal management becomes an increasingly important part of maintaining reliable performance over the long term. Designing hardware to operate reliably in demanding conditions can help protect performance, reliability and the lifespan of the investment.
For networking vendors, that means balancing power, performance, cost and thermal design, while ensuring equipment is appropriately designed and tested for the environments in which it will be deployed. For organizations investing in their networks, it means taking a more forward-looking approach and considering not just the conditions equipment faces today, but what it may need to withstand several years from now.
That starts with asking the right questions before deployment. How much environmental headroom does the equipment have? What conditions has it genuinely been designed and tested to withstand? How does it perform under solar load and other real-world stresses? And will that resilience continue to support the network throughout its expected lifespan?
The goal is to build networks for the future, with the resilience to keep performing as both technology and the environment around them change.
Keep powered outdoors with the best portable power stations.
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
As more and more companies press their workers into coming back into the office, even if only for a few days in increasingly popular hybrid working models, the need for effective and reliable communication technology has never been greater.
A common sight in offices and homes across the world, Logitech is ideally placed to monitor trends in what workers at every level require - and at its recent Logi Work 2026 event, it took the opportunity to show off how its latest suite of releases can revolutionize the collaboration experience for all.
To find out more, I spoke to Henry Levak, VP and general manager, Logitech, to see what it sees as the future of meeting rooms, offices, and even the humble home working desk.
Broad portfolio paying off“We want people to think of us as that simple and flexible partner - the word 'proprietary' and being locked in is luckily something we're moving away from,” Levak tells me.
“The reality is that you will have a world of different configurations,” he notes, highlighting how many of Logitech’s customers are asking workers to come back into the office, meaning the company needs to broaden its offerings even further.
“That's been a huge catalyst for our success,” he notes, “we have an incredibly broad portfolio that covers people working from home, to people working in the boardroom, and everything in between.”
At the event, Levak had spoken about the upcoming launch of Logitech’s new portfolio, which the company had described as its biggest enterprise-focused launch in years.
The new lineup, which includes the Rally Bar 2, Rally System 2 Pro and Sound Shape technology, will revolutionize the way businesses of all sizes collaborate and communicate, with not only more powerful, but more customizable technology being the watchword.
For example, the new Rally Bar 2, the successor to the popular sound bar now seen in boardrooms and meeting spaces across the globe, not only features a Qualcomm Dragonwing chip to allow for better AI processing, but offers a 115 degree POV and much easier wall mounting due to its smaller form factor
(Image credit: Logitech)The Rally System 2 Pro provides a “modular yet streamlined” offering which looks to simplify complex installs which can be difficult to maintain and manage - making larger rooms better spaces to have these vital meetings in.
In spite of its new range of releases, Logitech had spoken about its goal to “simplify everything” - so I ask Levak how the company can pursue that goal while still offering a range of products attractive to all different kinds of customers.
“It's a big pain point,” he says, “one of the things you can almost always predict is that simplifying will be a request...people want things to be dramatically simpler - but they also want consistency and experience.”
“What they don't want, is that if you walk into a room, like a smaller space with some sort of AI features and capability - and then you walk into a larger room, and for some reason that space doesn't have that feature.”
“The technology should just disappear and blend away into the background, and everyone should just focus on collaboration and creation, not necessarily the technology - and the only way to achieve that is if you have consistent technology.”
Simplify, simplifyGoing forward, this will mean that even in a large room or meeting space, customers will only require a small simple device such as a video bar set up, Levak says, removing unnecessary friction and allowing everyone to work effectively.
“The way you simplify it is by dramatically reducing the number of components,” he points out, “what we're doing is something that dramatically simplifies all of that, from installation, provisioning, setup and deployment - it's a reduction in terms of complexity of what's out there today.”
“In terms of what it can bring, it's the first time modern AI is available in much larger rooms - now you have a full ecosystem of components that will deliver that experience.”
Looking forward, Levak is keen to point out the role AI can play in spaces as incongruous as meeting rooms.
With AI agents playing an increasingly important role for many workers, the need for context has never been greater. Such information needs to be collected by a range of sensors, and Logitech feels that products such as microphones and cameras could play a key role in expanding this - as long as effective privacy controls are used - making its equipment the physical layer of a company’s AI ecosystem.
“You can see the power when (an AI agent) has context about you, and the same thing will apply at work,” Levak says, “at a higher level, we’re deploying these sensors in every space, so that the context you need in order to build out a more thoughtful agent for you.”
“We're making sure the products are built for what's coming next,” he concludes, “both from the simplicity and elegance perspective, but also from features and capability.”
Disney+ may not have been the only streaming service to increase its prices over the past year, but it certainly stood out for increasing its prices in two consecutive years — first in February 2025 when service added ESPN, and once again in April 2026.
So it was refreshing to see Disney+ introduce a generous 30% discount on its Standard and Premium annual subscription tiers earlier this month — representing a 42% discount compared to 12 months of the full monthly prices.
But be quick if you're looking to take on this offer, as Disney+ will be reverting back to the usual annual subscription prices tomorrow.
If you're fine with 1080p resolution, you can still get ad-free streaming on Disney+ with this deal. While the price here reflects the Australian discount, subscribers in New Zealand can also take advantage of the same offer and get the Standard tier for NZ$132.99. This brings the price down to about the same as that for the Disney+ ad-supported tier that costs AU$9.99 / NZ$9.99 per month. You'll get two simultaneous streams with this subscription, with downloads available on up to 10 devices.
See all discounts below in Australia and New Zealand:
Disney+ Standard (AU): AU$179.99 now AU$125.99
Disney+ Premium (AU): AU$249.99 now AU$174.99
Disney+ Standard (NZ): NZ$189.99 now NZ$132.99
Disney+ Premium (NZ): NZ$259.99 now NZ$181.99View Deal
Disney+ boasts a rich library of popular TV shows and movies via its own properties like Star Wars, Marvel, Pixar, 20th Century and classic animation, as well as a more diverse library via its Hulu content hub.
The platform's recent addition of ESPN in Australia and New Zealand also makes it perfect for US sports fans with its extensive coverage of the NBA, NFL, MLB and more.
Some of the movies you can currently stream on Disney+ in Australia and New Zealand include Toy Story 5, The Devil Wears Prada 2, Star Wars: The Mandalorian and Grogu, Deadpool & Wolverine and many more.
As for shows, you can also stream the new Marvel series VisionQuest, homegrown miniseries The Clearing and The Artful Dodger. I also recommend Andor, Shogun, The Bear, The Americans, the Scrubs revival and many more.
And of course, a lot of the popular comfort watches like Schitt’s Creek, New Girl, The Office (US), Parks and Recreation and more should make a full 12-month subscription definitely worth your while.
It’s been a busy month for coffee machine maestro, Breville. Not only did it celebrate International Coffee Day at the start of the month, but this October is also the company’s birthday month. And to mark the occasion, you can save up to AU$550 on a range of top-performing espresso machines.
And that’s not all, as you can save a further 10% on discounted models with our exclusive Breville coupon code. Alternatively, you can use our exclusive promo code sitewide on the complete range of Breville appliances.
You’ll need to hurry though, as the Breville Birthday Sale comes to a close at 11:30pm AEDT 21 October.
Breville is, of course, responsible for some of the best coffee machines in Australia, and as a result, it can make choosing the ideal model for your household a little bit trickier. To help guide you to cafe-quality coffee at home, I’ve picked out some of my favourite models below. All of them have received an initial discount, and I’ve listed the final price after our 10% discount code has been applied.
Barista Express Impress (BES876): was $869 now $719.10
The Barista Express Impress is one of the true standout models in Breville's repertoire. Key to its success is the Impress tamping lever, which ensures you apply the same tamping force to your ground beans each time for optimal results. It also benefits from smart dosing, which will automatically correct the grind size if the machine detects the previous espresso was under- or over-extracted.View Deal
The Barista Touch is a great choice for anyone who wants to see the drink they're hoping to make. A large colour touchscreen dominates the front panel, with a drinks menu to swipe through. Making adjustments to your coffee is a breeze, and combined with a compact integrated grinder, tamping functionality, auto-dosing, and auto milk frothing, and even Thermo Jet technology for quick heat-up times, it's practically foolproof.View Deal
The Oracle Jet is no doubt an investment, but one that's well worth it if you take your coffee seriously. It too gets a large colour touchscreen, making it easy to select and see whatever drink you want. It will grind and tamp for you (and give intelligent feedback), and can steam milk (including non-dairy) automatically too. Plus, it heats up and is ready to use in seconds. View Deal
If it's a more simple coffee maker you're after, then the Bambino Plus deserves your attention. It make look basic, but it's rather intelligent, and can take care of most of the coffee making process for you. Grind some beans into the porta filter (you will need a separate grinder), insert it into the group head and use the one-touch controls to brew. It also has a hands-free milk texturing system for expertly frothed milk, while ThermoJet technology means the machine is ready to use in seconds. There's very little you need to do other than simply enjoy the results.View Deal
The Barista Express is about as iconic as they come. It has everything one needs for cafe-quality coffee at home, including built-in grinding, dosage control and a hand tamp. You can also customise the water volume and temperature for the perfect espresso. While it's available in various colours, the three different shades of black work out to be the most affordable once our coupon code is applied. View Deal
The Oracle is one of Breville’s older machines, but it still more than holds its own against newer alternatives. It boasts automatic grinding, dosing, tamping and milk texturing, while its dual boiler means you can extract espresso and foam milk at the same time. View Deal
Russia and the United States are discussing several joint projects, including data centers powered by small nuclear reactors, following a recent diesel supply agreement.
Kirill Dmitriev, an investment envoy of President Vladimir Putin, disclosed the talks on Friday at the Russian Energy Week conference in Moscow.
There are no details on locations, financing, timelines or participating companies, but further initiatives are expected to be announced soon.
Sanctions stand between the two governmentsDmitriev, who heads the Russian Direct Investment Fund, has long pushed for deals on minerals and energy and takes part in peace negotiations.
He said American sanctions create serious obstacles and called the Graham Act, which Trump signed in September, a "misguided" law.
The legislation seeks to cut Moscow's income from energy sales using tariffs and penalties, yet Dmitriev said both governments are considering other economic cooperation.
"There are so many layers of sanctions piled on top of one another that everyone has become confused; it's difficult now to figure out how to navigate a way out of this situation," Dmitriev said.
"Brainstorming sessions are already under way regarding how to lift these sanctions - that is exactly what the United States is currently working on."
Diesel deal – the starting pointTrump recently announced a diesel arrangement that would bring Russian fuel to American and global buyers and lower prices before November's midterm elections.
The arrangement requires lifting certain penalties Trump himself placed on Russian crude, and Ukrainian President Volodymyr Zelenskiy has sharply condemned it.
Washington's Treasury Department asked the Russian sovereign fund to help settle complicated payment questions tied to the diesel deal.
Dmitriev said the Russian Direct Investment Fund will ensure payments are efficient, though he supplied no figures on the value of the diesel deal.
The Kremlin has complained that Washington made any new agreements dependent on a peace deal for Ukraine, which remains out of reach.
Despite Zelenskiy’s opposition to the Diesel deal, Washington is focused on moving on with the deal — abandoning the Ukraine clause approach.
“The ice has, in fact, begun to break. We are effectively implementing projects with the United States of America at this very moment...” Dmitriev added.
Russia says its cooperation with Washington will continue until its “special military operation” in Ukraine ends.
The transcontinental country has a decent base for small nuclear reactors as it already controls two 35 MW small reactors commissioned in 2020.
President Vladimir Putin said Russia plans to build 38 nuclear power units over two decades to expand the computing capacity that artificial intelligence requires.
With reactors running and designs underway, Russia brings the technology to the table, and the open question is which projects both sides choose.
Via Reuters
Google’s Gemini 4 Argon has helped researchers extend mathematical solutions to a problem involving magnetic fields inside experimental fusion reactors, building on research that challenged a longstanding scientific conjecture.
The achievement concerns calculations used to model how magnetic fields contain superheated fuel, rather than a breakthrough that produces electricity or makes fusion commercially viable.
Instead of proving that an impossible problem could finally be solved, the team used AI to extend existing solutions into configurations that earlier examples had not covered.
Gemini finds new solutions by extending existing mathematicsMagnetic confinement fusion uses powerful fields to contain extremely hot, electrically charged gas, preventing it from escaping before atomic nuclei can combine and release energy.
Scientists need accurate mathematical models of those fields because computer simulations help them understand plasma behaviour and design configurations capable of maintaining confinement.
In 1967, physicist Harold Grad proposed a conjecture about the mathematical conditions governing equilibrium in three-dimensional magnetic fields, influencing research into plasma configurations.
In September 2026, University of Maryland researcher Matt Landreman published exact solutions that contradicted this conjecture, with assistance from OpenAI’s GPT-6 Astra Pro.
Those earlier solutions mattered because they supplied mathematical examples that researchers could use to test software modelling magnetic confinement, rather than relying entirely on approximations.
However, both families of solutions shared a particular geometric symmetry, leaving researchers without equivalent exact examples for configurations that lacked that property.
A subsequent study by Opal Issan, Jonathan Citrin, Landreman and Brendan Tracey extended the existing solutions by introducing a parameter that breaks this symmetry.
The resulting mathematical configurations give researchers additional reference cases for checking computer programs that calculate magnetic equilibrium in complicated three-dimensional arrangements.
AI shortened the search, not the entire scientific processThe researchers used Gemini 4 Argon through Google’s Antigravity environment, where multiple AI agents explored Landreman’s earlier results and investigated ways to extend them.
The agents found ways to remove a mathematical symmetry restriction from Landreman’s solutions, producing new configurations that researchers could verify.
The researchers reported that promising mathematical candidates emerged within hours, suggesting AI can accelerate difficult investigations involving extensive calculations and interconnected mathematical conditions.
This speed matters because developing and examining potential solutions requires researchers to work through complicated calculations and determine whether the resulting mathematical relationships hold together.
However, the initial discovery was only part of the process, since the researchers still needed to check the derivations and establish that the proposed solutions were mathematically consistent.
The team also used computational verification and AI assistance when preparing parts of the research manuscript, while the authors retained responsibility for the published work.
The immediate achievement is a more extensive set of exact mathematical solutions for researchers studying magnetic confinement, not evidence that AI has solved nuclear fusion or removed its engineering obstacles.
Via arXiv
When the remake of Resident Evil 4 launched in 2023, it was met with universal acclaim, even netting a Game of the Year nomination. And that came as no surprise to me. This is a brilliant entry in Capcom’s legendary series, packing in spectacular survival horror gameplay, a massively engaging story, and a memorable cast of characters.
Review infoPlatform reviewed: Nintendo Switch 2
Available on: PS4, PS5, Nintendo Switch 2, Xbox One, Xbox Series X and Series S, PC, iOS
Release date: October 16, 2026 (Switch 2 edition)
And now, Resident Evil 4 (Gold Edition) has arrived on Nintendo Switch 2. I’ve put about 20 hours into the game, during which time I’ve played through a good chunk of the main story and completed many a request. So how does this game hold up on Nintendo’s hybrid platform? Here’s everything you need to know.
Let me start by saying that the core Resident Evil 4 remake experience is incredible. Leon is a charming and likeable protagonist, the gunplay is excellent with a fantastic suite of weapons to choose from, and the narrative is top-class too. Sure, this entry perhaps lacks the chilling, claustrophobic atmosphere of its predecessors, but there’s plenty of high-octane action segments, fun puzzles, and big scares to experience. So if you haven’t played this game just yet, I highly recommend it.
A remake that's great on the go...but has a few graphical gremlins(Image credit: Capcom)How exactly does this title perform on Switch 2, though? Well, between this game and the other two entries recently ported to Nintendo Switch 2 — Resident Evil 2 and Resident Evil 3 — Resident Evil 4 is the one that has the highest amount of performance issues. This is totally understandable — it’s a newer release than the other two entries and carries a higher technical demand — but this isn’t quite the definitive way to play through Leon’s adventure.
So, let’s take a look at some of the blemishes I noticed on this port. The largest of these relates to texture pop-in. Whether I was playing in handheld or docked mode, some visual elements — such as trees or cliffs — would appear lower in resolution from a distance, and suddenly appear more detailed and intricate as I drew closer to them. Is this a major issue? Not really. It had no impact on my ability to vanquish my foes. But it’s something I did encounter regularly, and it could sometimes make the experience a little less immersive.
In addition, I encountered a few frame drops throughout my playthrough. When I ventured into a cave with a purple flickering flame, the game appeared to run less smoothly. This only lasted for a second or two, but it happened a good handful of times during my time with the game. Like the Resident Evil 2 Switch 2 port, and the Resi 3 Switch 2 port, the motion of some distant enemies appeared shaky, with some noticeable frame drops. With that said, combat was generally very smooth, and I rarely found said frame drops to give me a disadvantage in skirmishes.
Another thing worth noting is that this version of the game supports motion controls, something I was really hoping to see in the recent ports of the game’s predecessors. This is a most welcome inclusion, giving fans of gyro aiming another way to play…but it could’ve been implemented more effectively. While vertical aiming feels precise and responsive, horizontal movement is sluggish by comparison. Still, traditional controls work like a dream, and there are a number of schemes you can choose from in the Options menu to suit your personal preferences.
Best bit(Image credit: Capcom)When I rescued the friendly dog (wolf?) in the village, I felt like I’d done my good deed for the day. And what do you know, when it was time to face off against a towering giant, the trusty pooch came to my aid, distracting my towering foe as I blasted him repeatedly with my rifle. Talk about good karma.
I want to be clear: this game doesn’t perform badly, not by any means.
For the most part, Resident Evil 4 plays nicely on the Switch 2, with largely smooth performance and solid graphical fidelity, especially in docked mode. Of course, some textures look a bit less refined in handheld mode, but the dark and dismal environments still translate over nicely. The game also has HDR support for enhanced contrast, and character models look pretty sharp too. And all in all, I found the port to be totally serviceable — just expect an experience closer to the PS4 version than the PS5 one.
In the end, the Nintendo Switch 2 port of the Resident Evil 4 remake is decent. A lot of the issues, like pop-in and occasional frame drops, feel relatively minor in the grand scheme of things, though I wish motion controls felt more precise. Still, you get generally smooth performance, good visual fidelity, and all of the major DLC bundled in, including the excellent Separate Ways.
Is this the definitive way to play through Leon Kennedy’s journey? Perhaps not. But if you want to experience Resident Evil 4 on the go, this Switch 2 port is a perfectly fine option.
Should you play Resident Evil 4 for Nintendo Switch 2?(Image credit: Capcom)Play it if…You want to experience Leon’s adventure on the go
As is the case with any Switch 2 port, the system’s hybrid capabilities are a huge plus. The game runs relatively well, even in handheld mode, so if you want to take Leon on the go, the Switch 2 version is a serviceable way of doing so.
You’re yet to experience the RE4 remake
If you missed the Resident Evil 4 remake, now is the time to play it. The Switch 2 version is the Gold Edition, meaning you get the base game along with the major DLC like Separate Ways.
You want best-in-class performance
While Resident Evil 4 runs fairly well on Switch 2, there are some clear blemishes. The most obvious is texture pop-in, which means that some parts of the environment, like trees and cliffs, switch from a lower to a higher resolution as you approach them. There are also a few frame drops here and there, which isn’t overly problematic, but still something you’re less likely to experience on PS5, for instance.
You’re new to Resident Evil
The story beats of Resident Evil 4 won’t hit as hard for you if you’ve not played some previous entries in the series, mainly Resident Evil 2. I highly recommend playing that title first, and believe me it’s well-worth it.
The options menu allows you to make a few changes to your experience, with a range of camera options, a number of control schemes including motion aiming, toggle or hold run modes, and a range of voice and text languages available. What’s more, you can change the color of the reticle, laser dot sight, and biosensor scope, alter HUD opacity, and tone down damage display if you’d prefer.
How I reviewed Resident Evil 4 for Nintendo Switch 2(Image credit: Capcom)I put more than 20 hours into the Resident Evil 4 remake on Nintendo Switch 2, during which time I played through the main story and completed as many requests as possible while playing in both docked and handheld mode.
The vast majority of the time, I played the game docked, with my Switch 2 connected to the Sky Glass Gen 2 TV and Marshall Heston 120 soundbar. I also dabbled in handheld gameplay now and then, though, and used my JBL Live Beam 4 earbuds to experience the game’s virtual spatial sound.
More generally, I’m an experienced gaming hardware and software reviewer, and have been testing all kinds of games and accessories at TechRadar for years now, where I serve as a Senior Reviews Writer. I’ve reviewed all sorts of Nintendo Switch 2 titles, from major first-party releases like Fire Emblem: Fortune’s Weave to ports like Yakuza Kiwami. I’ve also played a number of Resident Evil games, including the Switch 2 ports of the Resident Evil 2 and 3 remakes.
First reviewed October 2026
Is AI taking up more time than it should? That seems to be general view of users of workplace AI, according to new research that explores how AI impacts productivity. The answer? Not very well.
The Use.AI study surveyed over 8,000 adults who use AI in the workplace, and found that while it made it easier to produce work, it also requires substantial revision. Some respondents found that AI can produce documents and material they wouldn’t have created themselves, but almost 48% have found that the technology creates more problems.
Although the research indicates a “fire and forget” approach to AI-generated material, people who take the time to check the work find problems, and revisions take time to complete.
Editing AIThe survey of 8,316 adults using AI in the UK and European Union, as well as the US, Canada, Australia, and Latin America by Use.AI revealed both positives and negatives around how AI is used in the workplace.
For example, 62% were enthused by how much easier it made creating documents, memos, and even code. But what happens next in the process is where the problems are found. A worrying 34% of respondents were forwarding AI-produced (or assisted) work without checking the contents. This can lead to issues when the AI has produced something unsuitable or unreadable.
A worrying 48% answered that they had received AI-assisted work that required correction, and 43% stated they had been forced to redo unsuitable AI work. Sadly, this meant that additional time was required, with 39% saying checking the AI’s effort took longer than creating their own version from scratch, and 41% highlighting how much more reviewing and verifying AI produced material was required since AI was brought into the productivity process.
Is AI really a productivity boost?The findings raise an interesting question. Big money has been spent on AI tools and implementing policies and procedures, replacing personnel, and employing “AI-ready” marketing tactics over the past few years.
But the research suggests that rather than being an advantage, for many businesses, AI can be a problem. More oversight is required to ensure the AI is fulfulling tasks accurately. This means more time is being spent resolving errors, quality issues, and more. The productivity advantages that AI should provide are being negated by its production of sub-par material.
And for all of the trumpeting about AI in the workplace, there is one statistic that stands out: 58% of respondents state that there are no rules for checking AI-assisted work. This may account for the growing problem that we see around us day-to-day – obviously AI-produced slop, issued via a single prompt and distrubed without any form of review. Use.AI’s research can be read online.
A new NYT Connections puzzle appears at midnight each day for your time zone – which means that some people are always playing 'today's game' while others are playing 'yesterday's'. If you're looking for Monday's puzzle instead then click here: NYT Connections hints and answers for Monday, October 19 (game #1226).
Good morning! Let's play Connections, the NYT's clever word game that challenges you to group answers in various categories. It can be tough, so read on if you need Connections hints.
What should you do once you've finished? Why, play some more word games of course. I've also got daily Strands hints and answers and Quordle hints and answers articles if you need help for those too, while Marc's Wordle today page covers the original viral word game.
SPOILER WARNING: Information about NYT Connections today is below, so don't read on if you don't want to know the answers.
NYT Connections today (game #1227) - today's words(Image credit: New York Times)Today's NYT Connections words are…
What are some clues for today's NYT Connections groups?
Need more clues?
We're firmly in spoiler territory now, but read on if you want to know what the four theme answers are for today's NYT Connections puzzles…
NYT Connections today (game #1227) - hint #2 - group answersWhat are the answers for today's NYT Connections groups?
Right, the answers are below, so DO NOT SCROLL ANY FURTHER IF YOU DON'T WANT TO SEE THEM.
NYT Connections today (game #1227) - the answers(Image credit: New York Times)The answers to today's Connections, game #1227, are…
This was such a horrible game and I came close to failure.
After getting LACKEY relatively easily, I made a mess of FINISH, opting for DOCK instead of STOP; I think I was thinking of things like spaceships coming to the end of their journeys.
For HOMOPHONES OF DISNEY CHARACTERS no logic at all was applied, I just got lucky with my second random guess and got a 'one away'.
Yesterday's NYT Connections answers (Monday, October 19, 2026, game #1226)NYT Connections is one of several increasingly popular word games made by the New York Times. It challenges you to find groups of four items that share something in common, and each group has a different difficulty level: green is easy, yellow a little harder, blue often quite tough and purple usually very difficult.
On the plus side, you don't technically need to solve the final one, as you'll be able to answer that one by a process of elimination. What's more, you can make up to four mistakes, which gives you a little bit of breathing room.
It's a little more involved than something like Wordle, however, and there are plenty of opportunities for the game to trip you up with tricks. For instance, watch out for homophones and other word games that could disguise the answers.
It's playable for free via the NYT Games site on desktop or mobile.
A new NYT Strands puzzle appears at midnight each day for your time zone – which means that some people are always playing 'today's game' while others are playing 'yesterday's'. If you're looking for Monday's puzzle instead then click here: NYT Strands hints and answers for Monday, October 19 (game #960).
Strands is the NYT's latest word game after the likes of Wordle, Spelling Bee and Connections – and it's great fun. It can be difficult, though, so read on for my Strands hints.
Want more word-based fun? Then check out my NYT Connections today and Quordle today pages for hints and answers for those games, and Marc's Wordle today page for the original viral word game.
SPOILER WARNING: Information about NYT Strands today is below, so don't read on if you don't want to know the answers.
NYT Strands today (game #961) - hint #1 - today's themeWhat is the theme of today's NYT Strands?• Today's NYT Strands theme is… [see below]
(Image credit: New York Times)NYT Strands today (game #961) - hint #2 - clue wordsPlay any of these words to unlock the in-game hints system.
• Spangram has 13 letters
NYT Strands today (game #961) - hint #4 - spangram positionWhat are two sides of the board that today's spangram touches?• First side: left, 2nd row
• Last side: right, 6th row
Right, the answers are below, so DO NOT SCROLL ANY FURTHER IF YOU DON'T WANT TO SEE THEM.
NYT Strands today (game #961) - the answers(Image credit: New York Times)The answers to today's Strands, game #961, are…
Even though I knew from the pictogram that the theme was DUCKDUCKGOOSE, I still managed to miss getting a very obvious Spangram First — the Strands equivalent of missing an open goal in soccer.
Instead, I begin with WALK then saw the first of the two ducks and felt like a fool.
I also missed the chance of getting the components of the game in order, which would have been satisfying. Instead, much like when I played DUCKDUCKGOOSE as a child, I just ploughed into the GAME without thinking.
Yesterday's NYT Strands answers (Monday, October 19, game #960)Strands is the NYT's not-so-new-any-more word game, following Wordle and Connections. It's now a fully fledged member of the NYT's games stable that has been running for a year and which can be played on the NYT Games site on desktop or mobile.
I've got a full guide to how to play NYT Strands, complete with tips for solving it, so check that out if you're struggling to beat it each day.
A new Quordle puzzle appears at midnight each day for your time zone – which means that some people are always playing 'today's game' while others are playing 'yesterday's'. If you're looking for Monday's puzzle instead then click here: Quordle hints and answers for Monday, October 19 (game #1729).
Quordle was one of the original Wordle alternatives and is still going strong now more than 1,500 games later. It offers a genuine challenge, though, so read on if you need some Quordle hints today — or scroll down further for the answers.
Enjoy playing word games? You can also check out my NYT Connections today and NYT Strands today pages for hints and answers for those puzzles, while Marc's Wordle today column covers the original viral word game.
SPOILER WARNING: Information about Quordle today is below, so don't read on if you don't want to know the answers.
Quordle today (game #1730) — hint #1 — VowelsHow many different vowels are in Quordle today?• The number of different vowels in Quordle today is 4*.
* Note that by vowel we mean the five standard vowels (A, E, I, O, U), not Y (which is sometimes counted as a vowel too).
Quordle today (game #1730) — hint #2 — repeated lettersDo any of today's Quordle answers contain repeated letters?• The number of Quordle answers containing a repeated letter today is 2.
Quordle today (game #1730) — hint #3 — uncommon lettersDo the letters Q, Z, X or J appear in Quordle today?• No. None of Q, Z, X or J appear among today's Quordle answers.
Quordle today (game #1730) — hint #4 — starting letters (1)Do any of today's Quordle puzzles start with the same letter?• The number of today's Quordle answers starting with the same letter is 0.
If you just want to know the answers at this stage, simply scroll down. If you're not ready yet then here's one more clue to make things a lot easier:
Quordle today (game #1730) — hint #5 — starting letters (2)What letters do today's Quordle answers start with?• C
• S
• T
• R
Right, the answers are below, so DO NOT SCROLL ANY FURTHER IF YOU DON'T WANT TO SEE THEM.
Quordle today (game #1730) — the answers(Image credit: Merriam-Webster)The answers to today's Quordle, game #1730, are…
One word today had me clinging on by fingertips to keep my still-fresh win streak intact.
COYLY was not the first word that popped into my head and I only got it through lack of choice. But ultimately, I solved it, and that's the important thing.
Daily Sequence today (game #1730) — the answers(Image credit: Merriam-Webster)The answers to today's Quordle Daily Sequence, game #1730, are…
As excitement around AI continues to build among businesses of all sizes, many leading voices are urging caution for those who might scale too quickly.
At its recent Think EMEA event in London, IBM revealed research which claimed efforts to stay aware of potential risks and challenges posed by AI deployment and scaling are falling somewhat short of expectations.
So what can companies do in order to balance the hype and excitement around what AI can offer, with the need for sensible and thorough governance.
AI as the enabler"What we are seeing is that if you don't provide an answer to security, to accountability, to responsibility, it is going to be very hard to scale AI in the corporate environment - particularly when we're talking about highly regulated industries - so for us, it's more of an enabler, than something that is going to slow down the adoption,” Ana Paula Assis, Senior Vice President and Chair for IBM EMEA and APAC told us in response to that very question during a media Q&A at the event.
“The question here is really, how do you balance the speed of innovation with the implementation of governance?”
IBM recently released research on the current state of AI and governance, finding that 80% of the companies surveyed claimed that an AI incident had been escalated to board level. However only 40% of those had then been able to use the incident to secure new investment in governance, or cement a new policy.
“I think the reason for that is because it's very hard to balance that innovation with the application of tools, processes, methodologies, to ensure that you are deploying AI at scale in a safe way,” Assis continued.
IBM is reportedly well placed to discuss such growth and progress with AI, with the company’s earlier keynote at Think EMEA claiming it had seen savings of around $5.5 billion in terms of improved productivity and efficiency utilizing AI to improve core processes - money that it was able to redirect to areas including R&D and innovation.
“But we are seeing this as an enabler, and as a key component of the architecture for agentic AI going forward, because these companies have tremendous responsibility - they need to ensure that they have trust from their clients, and they will only be able to do that if they have AI that they can observe and that they can govern.”
“AI is no longer just supporting the business,” Assis said. “It has become the business model. The organizations pulling ahead are not just adding AI, but rethinking how systems, decisions and processes work together with AI.”
EcoFlow has unveiled a new range of home backup batteries designed to keep essential appliances running during power outages, with enough capacity to provide electricity for several days. The Titan 5000 series includes three models, with a $50 reservation securing a 5% discount and two free 220W solar panels.
• Best for: Homeowners who want a good amount of backup power, particularly those concerned about outages or looking to make better use of solar energy.
• Why it matters: These aren't ordinary portable power stations. They're expandable home energy systems designed to supply thousands of watts of electricity and integrate with selected household circuits.
• What you need to know: The offer ends on November 2, and EcoFlow hasn't revealed shipping dates yet.
Best EcoFlow Titan 5000 dealsTitan 5000 Classic: was $2499 now $2374.05
This home battery system offers 5kWh expandable storage, 4000W output, 120V power, 3200W solar input, automatic backup switching, smart app control, and compatibility with EcoFlow's Smart Home Panel 10 system.View Deal
Titan 5000: was $3199 now $3039.05
This home battery system features 5kWh expandable storage, 7200W output, 120V/240V support, 4000W solar input, automatic backup switching, smart energy management, and compatibility with EcoFlow's Smart Home Panel 10 system.View Deal
Titan 5000 Plus: was $3699 now $3514.05
This advanced home battery system features 5kWh expandable storage, 7200W output, 8000W solar input, PV Boost technology, 120V/240V support, automatic backup switching, smart energy management, and home integration capabilities.View Deal
The Titan series offers the ability to choose how much electricity you want to store separately from how much power you need to deliver. The 5kWh starting capacity is useful for shorter outages, while expansion batteries can increase the available runtime.
A 5kWh battery could theoretically power a continuous 500W load for around 10 hours, although the actual runtime will vary because of conversion losses and other factors.
Expanding to 30kWh provides six times the stored energy, but additional batteries increase the total cost.
The Titan systems also offer automatic backup switching within 20 milliseconds, while the compatible Smart Home Panel 10 can manage up to ten selected circuits. EcoFlow's OASIS 3.0 software adds monitoring and energy management, including the ability to schedule charging around electricity tariffs.
Three models, three different power requirementsThe entry-level EcoFlow Titan 5000 Classic starts at $2,499 and provides 4,000W of output. It can power essential 120V appliances, including fridges, lighting, and more. It comes with approximately 5kWh of battery storage, expandable to 30kWh with additional batteries. Solar charging supports up to 3,200W of input.
The Classic only provides 120V output, so if you need more power consider the Titan 5000. Priced at $3,199, it gives you 7,200W of output and support for both 120V and 240V appliances. Solar input also increases to 4,000W, and the system works with EcoFlow's 240V Smart Home Panel 10 for automatic backup of selected household circuits.
The $3,699 Titan 5000 Plus shares the standard model's 7,200W battery output but doubles the maximum solar input to 8,000W, using two independent 4,000W MPPT controllers. Its PV Boost technology can increase available output to 10,000W when enough solar power is available.
Which EcoFlow Titan 5000 should you buy?✅ Buy the Titan 5000 Classic if...
You mainly want to keep essential 120V equipment running during power outages and don't need backup for large 240V appliances.
✅ Buy the Titan 5000 if...
You want 120V/240V backup power and enough output to support more demanding household equipment.
✅ Buy the Titan 5000 Plus if...
You have substantial solar generation capacity or want the additional power options for demanding appliances. Its 8kW solar input and PV Boost capability are the main benefits.
Apple’s on a roll! Just eight days after dropping the HomeView, HomePod mini 2, and Apple TV 4K, and four days before the iPhone Duo starts shipping, the Cupertino-based technology giant is teasing more.
In a post on X (formerly Twitter), Apple’s SVP of Marketing, Greg Joswiak, writes, “Can’t wait to pro and tell next week,” alongside an Apple logo being drawn. The same graphic was also posted to @HelloApple on Instagram with the caption, “About next week…” The latter gives us the timing and leaves us marking our calendars for a reveal similar to Apple’s recent home product launches. However, Joswiak’s post teases something Pro that could be on the horizon.
Alongside the teasers, Apple has also sent media invites for an experience in LA on October 28, 2026. That’s the same wording the company used to describe its ‘Welcome Home’ event, so I’d suspect there won’t be a formal keynote, but there will be plenty of hands-on time.
The teaser depicts the Apple logo being drawn using an array of colors, mostly silver, white, and blue, with small, vibrant pops of red, orange, and yellow. To me, it looks as though a finger could be drawing the logo, given the overall shape, or perhaps a brush of some sort is being used to create it.
Either way, it points to the likely arrival of new Macs or iPads. Remember, like most of Apple’s products, these devices feature an Apple logo on the back.
Can’t wait to pro and tell next week. https://t.co/3wUkxwq35iOctober 19, 2026
There’s been no shortage of rumors, and it’s likely that Apple will drop a significant update to the MacBook Pro family next week, finally delivering a touchscreen laptop.
That’s something the company has been pretty firm about ruling out, but it seems to have turned a corner if recent reports are to be believed. Both the new 14-inch and 16-inch models are expected to pair the first touchscreen on a Mac with an OLED display, delivering the same vibrant, rich viewing experience as an OLED iPhone or iPad Pro, all within a redesigned, slimmer notebook.
(Image credit: Lance Ulanoff / Future)Under the hood, these flagship MacBooks will likely get Apple’s best chips, whether that’s the M6 or the M5 Ultra, which premiered with the Mac mini and Mac Studio in August 2026.
Recent reports also hint that the M6 could be coming to the iMac, which is due for an upgrade after launching with the M4 in 2024. A new entry-level 14-inch MacBook Pro could also arrive with a design similar to the current generation, likely featuring the M6 chip instead of the M5 for better performance across the board, particularly for AI tasks.
Alongside the Mac, the iPad could also be in the mix, potentially hinted at by the vibrant colors and what appears to be a finer, brush-drawn Apple logo. Coming shortly after the iPhone Duo starts shipping, a major iPad mini upgrade is also rumored. It could carry a considerably higher price — a reminder that the current model starts at $699 / £699 / AU$949 — and add a ProMotion OLED display, a redesigned body, and a more capable chip under the hood.
(Image credit: Future/Jacob Krol)I’ve been wishing for a redesigned iPad mini with Magic Keyboard support and a better screen for a while, so this would be music to my ears, and likely to many others’ too. The iPad lineup is still in pretty good shape, with the Air and Pro models already receiving updates with better processors earlier this year. Besides the iPad mini, the only other model likely due for an upgrade is the entry-level iPad, but it’s unclear whether it will be updated next week.
Either way, we only have a few more days to wait to see what Apple has been working on. After all, the company has promised to ‘Pro and Tell.’ Let me know what you’re most excited about in the comments below.
As a big 4K Blu-ray fan, it was a delight to visit the team at Silver Salt restoration several weeks ago, where I learned about the 4K Blu-ray restoration and HDR mastering process. I looked at the meticulous restoration work that goes into taking a film from its negatives, all the way to the finished product we collectors have stuffing our shelves.
During my visit, I got to speak to the team and hear their in-depth knowledge and expertise, and while we discuss plenty of movies and projects Silver Salt had worked on, the main movie I was there to discuss was the 1958 Hammer classic Dracula (known as Horror of Dracula in the US) starring Christopher Lee as the titular vampire, with Peter Cushing as Van Helsing.
Arguably Hammer’s most iconic movie and easily one of Silver Salt’s biggest projects, I saw a glimpse into the work being done to bring this classic flick to new life.
A painstaking restoration(Image credit: Future)For a more in-depth look at the initial stages before the restoration process (table inspection, cleaning and scanning) check out my previous article here. Once the digital files have been scanned in, these DPX files are handed over to the restoration artists, who must then go through the painstaking process of removing excess dirt, tidying up film grain (but not too much) and a general maintenance and tidy on each individual frame.
After being shown some of the work that goes into this restoration process on other titles (which you can again read about in my previous article) I speak with Paul Gowlett, the Project Lead for Hammer at Silver Salt Restoration. He’s overseeing Dracula and gives me a glimpse into the work that’s gone into revitalising this Hammer classic.
One particularly arduous process he shows me involves the movie’s opening sequence (a shot of the exterior of the castle, walking amongst some tombstones). During this shot, which lasts approximately 90 seconds, Gowlett points to the bottom of his monitor and points out a hair.
“It was part of the original presentation of the film, but was a production issue of the cleaning the camera gate, it is not intentional” he tells me. This brings me back to an earlier conversation I’d had with Anthony Badger, Head of Restoration at Silver Salt. He said “It can be a bit of an ethical dilemma on how much we intervene, but we need to consider if an extreme problem will take you out of the story.” Although the hair was part of the ‘original film’ it could serve as a distraction.
@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-1792402757519-yhbvqw8fn *, #fv-chart-1792402757519-yhbvqw8fn *:before, #fv-chart-1792402757519-yhbvqw8fn *:after, #fv-chart-1792402757519-yhbvqw8fn-slideshow *, #fv-chart-1792402757519-yhbvqw8fn-slideshow *:before, #fv-chart-1792402757519-yhbvqw8fn-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792402757519-yhbvqw8fn, #fv-chart-1792402757519-yhbvqw8fn-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792402757519-yhbvqw8fn { position: relative !important; overflow: visible !important; --riv-primary: #AA1124; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792402757519-yhbvqw8fn.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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #AA1124; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792402757519-yhbvqw8fn-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-1792402757519-yhbvqw8fn-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-1792402757519-yhbvqw8fn-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-nav-btn.disabled, #fv-chart-1792402757519-yhbvqw8fn-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-1792402757519-yhbvqw8fn-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-1792402757519-yhbvqw8fn-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-1792402757519-yhbvqw8fn-slideshow .fv-slideshow-select:focus { outline: 2px solid #AA1124 !important; border-color: #AA1124 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-bar-row, #fv-chart-1792402757519-yhbvqw8fn .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792402757519-yhbvqw8fn .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792402757519-yhbvqw8fn.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-expand-btn, #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-expand-btn:hover, #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-pie-container, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-stacked-product, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-grouped-bar-product, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-row, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-stacked-product, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792402757519-yhbvqw8fn.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-1792402757519-yhbvqw8fn.mobile-view .fv-bar-label, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-grouped-product-title, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-label, #fv-chart-1792402757519-yhbvqw8fn.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-1792402757519-yhbvqw8fn.mobile-view .fv-bar-container, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-cluster, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-container, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn.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-1792402757519-yhbvqw8fn.mobile-view .fv-x-axis-wrapper, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-x-axis-label-space, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-x-axis-chart-space, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-benchmark-title, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-dropdown-title, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-carousel-nav-btn, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-chart-title, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-chart-subhead, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-header, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select-wrapper, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-vs, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select-container, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792402757519-yhbvqw8fn.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-1792402757519-yhbvqw8fn.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792402757519-yhbvqw8fn .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row, #fv-chart-1792402757519-yhbvqw8fn .fv-stacked-product, #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-bar-label, #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-bar-container, #fv-chart-1792402757519-yhbvqw8fn .fv-bar-cluster { width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-label-space { display: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .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-1792402757519-yhbvqw8fn .fv-stl-shop-all-logo, #fv-chart-1792402757519-yhbvqw8fn .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792402757519-yhbvqw8fn.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Dracula (1958)", "description": "A shot of Christopher Lee as Dracula, with the original file on the left and the remaster on the right, the latter of which shows much more color and depth", "creator": { "@type": "Organization", "name": "Default" }, "isAccessibleForFree": true, "dateCreated": "2026-10-19T09:39:17.519Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Image Comparison", "benchmark", "comparison", "performance", "review", "Default" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": []}{"version":2,"exportedAt":"2026-10-19T09:39:17.519Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"Default","logoUrl":"","colors":{"primary":"#AA1124","secondary":"#FFFFFF","accent":"#1A1A1A","background":"#ffffff","text":"#1F2937"}},"textContent":{"title":"Dracula (1958)","subhead":"A shot of Christopher Lee as Dracula, with the original file on the left and the remaster on the right, the latter of which shows much more color and depth","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/Y4fPNuXPEGPLxJSSypweeg.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/YXp6V7akxByKBhyqNPKheg.jpg","label1":"Original raw file","label2":"Remastered","showTitle":false,"showSubhead":true}},"slides":[]}A shot of Christopher Lee as Dracula, with the original file on the left and the remaster on the right, the latter of which shows much more color and depth
Original raw fileRemastered 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 (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792402757519-yhbvqw8fn', false); }); } else { initialize('fv-chart-1792402757519-yhbvqw8fn', false); } })();Gowlett informed me that each individual digital frame had to be checked for this hair. Each frame was removed digitally by using information from frames from later on in the shot, leading to the final image. The final result: a staggering 2000 frames. When I asked Gowlett how long it had taken him to remove this hair, he said several days. All for 90 seconds of footage. It was just a clear indication of how much work had gone into this project.
The other issue the team found with the original film (which was prevalent in the digital files) was a heavy amount of yellow staining. This yellow staining was only apparent when isolating the ‘blue channel of the image’ in the restoration process. Along with the hair and this staining, the team also made sure to ‘de-flicker’ the image to make the colours more stable throughout.
A stunning grade and updated soundtrackOnce the restoration work is complete, the files are handed over for grading. Dracula is being handled by Ray King, Head of Film at Silver Salt, while also being overseen by Mark Stanborough, Head of Restoration, Hammer Films, but during my visit, it’s Ray’s grading I’m seeing in action.
King has worked on most, if not all, of the Hammer titles handled by Silver Salt. He shows me how Peter Cushing’s skin tone has taken on a red tint after applying the HDR grade, saying how it’s the old stage makeup used during these sorts of productions being picked up during the grade. With some alterations, the result looks natural and lifelike, breathing new life into all characters in the clips I saw.
I’m also shown the opening title sequence again, only this time with the blood-red ‘Dracula’ text overlaid. To get this, King had to separate out the picture and the words into two separate layers, to get that blood-red color on the words themselves. He told me the color of the titles had faded, so he separated the layers and grades here to get the colors worthy of the words.
@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-1792402737488-dazyeqhs3 *, #fv-chart-1792402737488-dazyeqhs3 *:before, #fv-chart-1792402737488-dazyeqhs3 *:after, #fv-chart-1792402737488-dazyeqhs3-slideshow *, #fv-chart-1792402737488-dazyeqhs3-slideshow *:before, #fv-chart-1792402737488-dazyeqhs3-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792402737488-dazyeqhs3, #fv-chart-1792402737488-dazyeqhs3-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792402737488-dazyeqhs3 { position: relative !important; overflow: visible !important; --riv-primary: #AA1124; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792402737488-dazyeqhs3.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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #AA1124; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792402737488-dazyeqhs3-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-1792402737488-dazyeqhs3-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-1792402737488-dazyeqhs3-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-nav-btn.disabled, #fv-chart-1792402737488-dazyeqhs3-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-1792402737488-dazyeqhs3-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-1792402737488-dazyeqhs3-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-1792402737488-dazyeqhs3-slideshow .fv-slideshow-select:focus { outline: 2px solid #AA1124 !important; border-color: #AA1124 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-bar-row, #fv-chart-1792402737488-dazyeqhs3 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792402737488-dazyeqhs3 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792402737488-dazyeqhs3.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-expand-btn, #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-expand-btn:hover, #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-pie-container, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-stacked-product, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-grouped-bar-product, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-row, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-stacked-product, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792402737488-dazyeqhs3.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-1792402737488-dazyeqhs3.mobile-view .fv-bar-label, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-grouped-product-title, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-label, #fv-chart-1792402737488-dazyeqhs3.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-1792402737488-dazyeqhs3.mobile-view .fv-bar-container, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-cluster, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-container, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3.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-1792402737488-dazyeqhs3.mobile-view .fv-x-axis-wrapper, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-x-axis-label-space, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-x-axis-chart-space, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-benchmark-title, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-dropdown-title, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-carousel-nav-btn, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-chart-title, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-chart-subhead, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-header, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select-wrapper, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-vs, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select-container, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792402737488-dazyeqhs3.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-1792402737488-dazyeqhs3.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792402737488-dazyeqhs3 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row, #fv-chart-1792402737488-dazyeqhs3 .fv-stacked-product, #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-bar-label, #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-bar-container, #fv-chart-1792402737488-dazyeqhs3 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .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-1792402737488-dazyeqhs3 .fv-stl-shop-all-logo, #fv-chart-1792402737488-dazyeqhs3 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792402737488-dazyeqhs3.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Dracula (1958) - Castle", "description": "Color fade was an issue with the original raw files, but the HDR remastered grade revistlized these colors ", "creator": { "@type": "Organization", "name": "Default" }, "isAccessibleForFree": true, "dateCreated": "2026-10-19T09:38:57.488Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Image Comparison", "benchmark", "comparison", "performance", "review", "Default" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": []}{"version":2,"exportedAt":"2026-10-19T09:38:57.488Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"Default","logoUrl":"","colors":{"primary":"#AA1124","secondary":"#FFFFFF","accent":"#1A1A1A","background":"#ffffff","text":"#1F2937"}},"textContent":{"title":"Dracula (1958) - Castle","subhead":"Color fade was an issue with the original raw files, but the HDR remastered grade revistlized these colors ","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/dFhHC52VT3tgRJyB6YBokQ.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/6nWzBqa4VgqWZyj8eAjfqQ.jpg","label1":"Original raw file ","label2":"Remastered","showTitle":false,"showSubhead":true}},"slides":[]}Color fade was an issue with the original raw files, but the HDR remastered grade revistlized these colors
Original raw file Remastered 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 (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792402737488-dazyeqhs3', false); }); } else { initialize('fv-chart-1792402737488-dazyeqhs3', false); } })();Color fade was also true of the original elements that had been scanned in. A lot of the beautiful, bold colors weren’t popping as much and after showing me the red, green and blue waveforms, which highlighted the colors' degradation, he then showed me the picture after the grade had been applied. The difference was staggering.
The ornate furnishings, particularly a set of lush, velvet red curtains, now dazzled thanks to HDR. Instances of blood popped on screen and even clothing had a more dynamic, modern-day look to them. Again though, it was the skin tones of the people on screen that really impressed me, as this seemed to give the movie an almost-modern look. “Once we’re done, some of these movies like they could have been filmed last week” King says, rightfully admiring the HDR grade before us.
Even darker scenes have been given a facelift. Black tones are richer, deeper and, when paired with candlelight or lamps, create strong contrast that would look superb on some of the best OLED TVs. The grade in every clip I’m shown is nothing short of masterful and having tested multiple Hammer titles as part of the Blu-ray Bounty, Dracula is set to be the best.
I discussed with Stanborough later on about the new 5.1 soundtrack, something that’s been included with those other Hammer titles I tested. Stanborough talked to me about the process.
To achieve the 5.1 surround, AI was used to split the dialogue and music tracks before being mixed in a studio. “60-70% of the film is in surround, which is quite nice” but he also stressed the importance of “trying not to go too far and staying sympathetic to the original theatrical experience”.
When the movie returns to cinemas on 16th October (on a two week run until 1st November), viewers will experience the 5.1 soundtrack and HDR grade. The 4K disc lands on 23rd November, but whether you can get along to a cinema screening or are getting the 4K disc for your collection, after what I’ve seen and heard, fans will be in for a treat.
Dracula is in UK cinemas now, with the 4K UHD Limited Edition and Standard Editions arriving 23rd November. Check here for your nearest screenings.
Phishing emails are notorious for often working exceptionally well, but which ones are the most effective? We all know that these lures need two things: A) to carry a sense of urgency; and B) the idea that the victim will either miss out on something or suffer material troubles.
But no two emails are alike, and some campaigns prove to be more successful than others.
Security researchers Kaspersky set out to learn which themes work best, and which fail, to give businesses better insight into the biggest risks lurking in the depths of their employees’ inboxes. To do that, they analyzed anonymized voluntary provided data from their Phishing Simulator. “A high click rate among users clearly highlights what specific cybersecurity training is required,” they said.
Responding to sensitive emailsThe data showed five topics that yield the best results for the attackers: AI & Tech, Healthcare & Insurance, IT Policies & Compliance, Gifts & Promotions, and HR & Corporate Communications.
AI & Tech was the best-performing topic overall, with themes such as “introducing next-gen artificial intelligence” having a 45% click-through rate. In other words, almost every other recipient would click on a malicious link and potentially get served malware or share login credentials with threat actors.
Healthcare & Insurance lures tricked an average of 28% of the audience, but among the different emails, one stood out. Emails regarding a sanitary inspection report reached a 92% click-through rate. IT & Policies were third with a 26% click-through rate, followed by Gifts & Promotions (24%).
Two-thirds (66%) of recipients clicked an email inviting them to wear their’ national team’s football jersey and win a prize. HR & Corporate comms yielded a 22% click-through rate, with emails raising sensitive and high-interest internal topics being “especially dangerous”, Kaspersky said.
“People naturally respond to sensitive and highly contextual emails, especially when phishing mimics their exact workflow or local specifics. Knowing this, cybercriminals make their traps more personalized and this trend is set to accelerate with the rise of generative AI,” said Svetlana Kalashnikova, Security Awareness expert at Kaspersky.
“Fortunately, proper cultivation of cyber vigilance demonstrates measurable risk reduction: regular training and attack simulations drastically reduce phishing susceptibility rates from 60% to a mere 5–7%, according to KASAP effectiveness analytics. To protect people and businesses from human-targeting threats, we strongly recommend that organizations implement ongoing cybersecurity awareness program for all employees.”
According to Kaspersky, phishing remains the most prevalent cyber-incident for businesses at any stage of growth and ranks top among incidents leading to damaging business consequences. At the same time, attacks on humans grow more sophisticated, faster, and broader in scope and are, thanks to Artificial Intelligence (AI) now becoming a multi-stage effort.
Spotting a phishing emailBefore Artificial Intelligence (AI), phishing emails were relatively easy to spot. Since they were mostly written by threat actors who aren’t native English speakers, their language was rather clunky and could not properly convey the style or the tone set up by the legitimate company’s communications team.
AI has now made malicious emails almost indistinguishable from legitimate communications, pushing identification further down the infection chain: towards links and attachments, as well as the overall sentiment.
A few things remain the same for all weaponized emails: the sense of urgency. Most legitimate organizations would not threaten their customers with account suspensions within 24 hours. They would also not host their documents on unrecognizable third-party services, and would not share attachments in executable formats.
Double-checking the domain from which the email is being sent is still a good way to spot an attack, too. Most phishing emails originate from a stolen email address, or one created on a public service. The UK postal service does not have a Proton email account.
Therefore, raising awareness, training, and doing simulations, remains the number one way to defend in 2026.