Error message

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

Feed aggregator

New forum topics

Resident Evil 4 for Nintendo Switch 2 review: a good, but imperfect port

TechRadar Reviews - Mon, 10/19/2026 - 19:00

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 info

Platform 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.

Don’t play it if…

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.

Accessibility features

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

Categories: Reviews

Workers are spending more time correcting AI-generated content than doing actual work

TechRadar News - Mon, 10/19/2026 - 18:25
  • Workers using AI are finding that they need to spend time improving its output, new research finds
  • Almost half say they have needed to make substantial corrections to AI-produced material
  • Over a third believe checking the AI’s work takes longer than doing the task themselves

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 AI

The 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.

Categories: Technology

NYT Connections hints and answers for Tuesday, October 20 (game #1227)

TechRadar News - Mon, 10/19/2026 - 18:00
Looking for a different day?

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…

  • CHEVRON
  • DOCK
  • BELL
  • PENCIL
  • POODLE
  • WRAP
  • MINI
  • MINION
  • WALRUS
  • PUPPET
  • CLOSE
  • HORSESHOE
  • ARIAL
  • STOP
  • STOOGE
  • END
NYT Connections today (game #1227) - hint #1 - group hints

What are some clues for today's NYT Connections groups?

  • YELLOW: It’s all over
  • GREEN: Take the fall for the crime
  • BLUE: Fancy facial hair
  • PURPLE: Sounds like House of Mouse characters

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 answers

What are the answers for today's NYT Connections groups?

  • YELLOW: FINISH
  • GREEN: LACKEY
  • BLUE: MUSTACHES
  • PURPLE: HOMOPHONES OF DISNEY CHARACTERS

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…

  • YELLOW: FINISH: CLOSE, END, STOP, WRAP
  • GREEN: LACKEY: MINION, POODLE, PUPPET, STOOGE
  • BLUE: MUSTACHES: CHEVRON, HORSESHOE, PENCIL, WALRUS
  • PURPLE: HOMOPHONES OF DISNEY CHARACTERS: ARIAL, BELL, DOCK, MINI
  • My rating: Hard
  • My score: 3 mistakes

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)
  • YELLOW: SEETHE: BOIL, FUME, RAVE, STEAM
  • GREEN: ALL TALK: BLATHER, GAS, HOT AIR, WIND
  • BLUE: "MC" THINGS AT MCDONALD'S: FLURRY, MUFFIN, NUGGETS, RIB
  • PURPLE: ENDING IN BIRDS: ALIBIS, BALLOON, ESCROW, MOHAWK
What is NYT Connections?

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.

Categories: Technology

NYT Strands hints and answers for Tuesday, October 20 (game #961)

TechRadar News - Mon, 10/19/2026 - 18:00
Looking for a different day?

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 words

Play any of these words to unlock the in-game hints system.

  • SECT
  • SACK
  • RICE
  • PLUCK
  • LAKE
  • GLACE
NYT Strands today (game #961) - hint #3 - spangram lettersHow many letters are in today's spangram?

• 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…

  • WALK
  • GAME
  • SELECT
  • CHASE
  • PLAYGROUND
  • CIRCLE
  • SPANGRAM: DUCKDUCKGOOSE
  • My rating: Easy
  • My score: Perfect

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)
  • DEITY
  • DRYAD
  • FATES
  • MUSES
  • FURIES
  • NYMPH
  • SATYR
  • SPANGRAM: MYTHOLOGICAL
What is NYT Strands?

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.

Categories: Technology

Quordle hints and answers for Tuesday, October 20 (game #1730)

TechRadar News - Mon, 10/19/2026 - 18:00
Looking for a different 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…

  • COYLY
  • SAUNA
  • TRIAL
  • RASPY

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…

  • TAMER
  • SKIFF
  • LEANT
  • FLUID
Quordle answers: The past 20
  • Quordle #1729, Monday, 19 October: EXIST, DECOY, HITCH, FLUID
  • Quordle #1728, Sunday, 18 October: FLINT, FUROR, WEDGE, RODEO
  • Quordle #1727, Saturday, 17 October: QUARK, ENEMY, SPASM, BLOCK
  • Quordle #1726, Friday, 16 October: SHORT, WORTH, JOIST, SLUNK
  • Quordle #1725, Thursday, 15 October: STALE, EPOCH, PIANO, CORNY
  • Quordle #1724, Wednesday, 14 October: TIMID, GROUP, GRILL, EVERY
  • Quordle #1723, Tuesday, 13 October: FLUFF, DEBUT, TEETH, STEIN
  • Quordle #1722, Monday, 12 October: HELLO, BELOW, RIGHT, SLANT
  • Quordle #1721, Sunday, 11 October: LILAC, INLET, TRIAD, SHAPE
  • Quordle #1720, Saturday, 10 October: SWEAT, THIRD, RURAL, CLASP
  • Quordle #1719, Friday, 9 October: OLDEN, DUNCE, SWATH, HILLY
  • Quordle #1718, Thursday, 8 October: MINTY, ROWER, BROOD, RESET
  • Quordle #1717, Wednesday, 7 October: PALER, FROTH, DOZEN, ERASE
  • Quordle #1716, Tuesday, 6 October: FRESH, SKULK, BATCH, ENSUE
  • Quordle #1715, Monday, 5 October: SIXTH, SPEAK, SEDAN, HEIST
  • Quordle #1714, Sunday, 4 October: INFER, RAINY, THING, ARENA
  • Quordle #1713, Saturday, 3 October: CHORE, FLYER, STICK, PURSE
  • Quordle #1711, Thursday, 1 October: NAVEL, SHEER, BIRTH, TACKY
  • Quordle #1710, Wednesday, 30 September: CHOKE, BATCH, MOSSY, EAGER
  • Quordle #1709, Tuesday, 29 September: BILGE, MEDAL, LODGE, PORCH
Categories: Technology

A new poll shows what voters are thinking 2 weeks out from Election Day

NPR News Headlines - Mon, 10/19/2026 - 17:35

Midterm election day is just over two weeks away. What are some numbers on the mind of voters?

Categories: News

DOJ charges 28 in California with voting crimes as election tensions escalate

NPR News Headlines - Mon, 10/19/2026 - 17:10

The DOJ also filed an emergency request in federal court to stop California from processing ballots returned by people on the voter rolls the federal government says are "likely noncitizens."

(Image credit: Frederic J. Brown)

Categories: News

Judge chastises Trump administration plan to push ahead overhaul of DC golf course

NPR News Headlines - Mon, 10/19/2026 - 16:56

The Trump administration wants to turn a historic public golf course into championship links. Despite a judge's order, hundreds of trees were cut down to make way for the renovation.

(Image credit: Tasos Katopodis)

Categories: News

Between the coasts, populist Democrats see room to reclaim lost ground in red states

NPR News Headlines - Mon, 10/19/2026 - 16:14

In parts of the Great Plains and Midwest, Democrats are betting that harnessing anger at corporate power and both parties might succeed when voters believe the economy and government are not working.

(Image credit: Tailyr Irvine for NPR)

Categories: News

Schools struggle to measure how much AI experiments are helping

NPR News Headlines - Mon, 10/19/2026 - 15:59

Schools are experimenting with AI, and a lot of them are encountering the same problem: It's hard to measure whether the technology is good or bad for students.

Categories: News

Meta Blames Bot Traffic for No Kings Day Instagram Suspension

CNET News - Mon, 10/19/2026 - 15:39
The No Kings Coalition says that even after the account was visible again, they couldn’t access it for hours.
Categories: Technology

Japan Is Launching a Mission to Mars Moons and Plans to Bring Samples Home

CNET News - Mon, 10/19/2026 - 13:35
NASA contributed to this first-of-its-kind mission that may help us understand how our solar system formed.
Categories: Technology

'AI is no longer just supporting the business — it has become the business model': IBM VP tells us how your business can balance AI excitement with realism as governance becomes more important than ever

TechRadar News - Mon, 10/19/2026 - 12:35

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.”

Categories: Technology

Reserve EcoFlow's new Titan 5000 home battery systems for $50 and get free solar panels

TechRadar News - Mon, 10/19/2026 - 12:04

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 deals

Titan 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

Why we recommend taking a closer look

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 requirements

The 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.

Categories: Technology

Apple promises to ‘Pro and Tell’ on October 28, and a touchscreen MacBook Pro could finally arrive

TechRadar News - Mon, 10/19/2026 - 12:03
  • Apple tells us it will 'Pro and Tell' on October 28
  • The touchscreen MacBook Pro, an iMac with M6, and an iPad mini with an OLED screen are likely incoming
  • It comes in the middle of an incredibly busy product cycle for Apple

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.

Categories: Technology

I knew 4K Blu-ray film restoration couldn't be easy, but after Hammer's Dracula I have a newfound appreciation

TechRadar News - Mon, 10/19/2026 - 12:00

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 soundtrack

Once 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.

Categories: Technology

Watch out — these are the phishing scams experts say are most likely to catch your workers out

TechRadar News - Mon, 10/19/2026 - 12:00
  • Kaspersky finds AI and technology-themed phishing lures achieved the highest click rates, reaching 45% in testing
  • Healthcare, compliance, promotions, and HR messages also proved highly effective at deceiving employees
  • Researchers found regular awareness training can dramatically reduce phishing susceptibility across organizations

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 emails

The 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 email

Before 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.

Categories: Technology

Acemagic S16 Ryzen 7 laptop with 24GB DDR5 RAM drops to $569 when you stack Newegg's gift card promotion

TechRadar News - Mon, 10/19/2026 - 11:57

I don't see many Ryzen 7 laptops with more than 16GB memory for less than $600, but I've found a way to get a great extra discount on this Acemagic S16 laptop, which costs $599 at Newegg. But pair it with Newegg's gift card stacking (buy two for $200, get $230), and you'll get the Ryzen 7 laptop for $569.

The Acemagic S16 is powered by an AMD Ryzen 7 H255 processor with eight cores and 16 threads, with a maximum boost clock of 4.9GHz. You get 24GB of DDR5 RAM, and unlike some laptops with soldered memory, the S16 has two SO-DIMM slots and supports upgrades to 64GB.

• Best for: Anyone looking for a reasonably priced Windows laptop for office work, multitasking, everyday computing, and occasional gaming.

• What we like: It's already a well-priced laptop for general duties, and comes equipped with 24DDR5 RAM for smoother multi-tasking. By stacking two Newegg gift cards, which effectively gives you an extra $30, means the price tumbles to $569. That's about the price I see for a lot of 8GB and 16GB laptops.

• What you need to know: This is a laptop for the home and office, lacking an external GPU for graphics-intensive workloads like video editing or gaming.

S16 Laptop: was $599 now $569
This 16-inch laptop features an eight-core Ryzen 7 H255 processor, Radeon 780M graphics, 24GB DDR5 memory, 512GB SSD, 1920 x 1200 display, Windows 11 Pro, Wi-Fi 6, and backlit keyboard. For the full discount, pick up two $100 Newegg gift cards to get the free $30 bonus. View Deal

Why we recommend it

On top of the Ryzen 7 processor and 24GB DDR5 memory, the laptop has 512GB SSD. That provides enough space for Windows, applications, but there's also a second M.2 slot, with support for up to 4TB of total storage across both slots.

The 16-inch display has a 1920 x 1200 resolution and a 16:10 aspect ratio, providing more vertical space than a conventional 1080p screen. Graphics are handled by AMD's integrated Radeon 780M GPU and other features include a backlit keyboard, Wi-Fi 6, two full-featured USB-C ports, HDMI 2.0, and a physical webcam privacy switch.

Saving with a clever gift card hack

The laptop isn't officially reduced in price, but there's a clever way you can save money on it. When you buy two $100 Newegg digital gift cards, you'll get a free $30 promotional voucher. You can use both toward the laptop, bringing its price down from $599 to just $569.

Should you buy it?

✅ Buy the Acemagic S16 laptop if...

You want a large-screen Windows laptop with plenty of memory for everyday work, browsing, office applications, and multitasking. The Ryzen 7 processor and Radeon 780M graphics also make it suitable for photo editing and lighter gaming.

❌ Skip the Acemagic S16 laptop if...

You want a laptop capable of running demanding modern games and creative tasks at high settings. The integrated Radeon graphics are considerably less powerful than a dedicated gaming GPU. You might also prefer a smaller, lighter laptop if portability is a major concern.

Categories: Technology

Apple Sends Invites Out for ‘Pro and Tell’ Special Event on Oct. 28

CNET News - Mon, 10/19/2026 - 11:52
We could see new Macs and iPads at the event.
Categories: Technology

Apple’s HomeView costs $299 / £299 — but that doesn't unlock all of its best features

TechRadar News - Mon, 10/19/2026 - 11:37

Apple’s new AI-powered home hub, the HomeView, is officially shipping on November 13. Featuring a 7-inch touchscreen, and coming in wall-mounted or tabletop versions, the new must-have Apple device seems a snip at just $299 / £299 / AU$449) — but that price doesn't reflect the true cost of accessing its best features.

One of the things that really makes the HomeView unique is that it recognizes your face, then adapts its display so you see your personal content in apps like Messages, FaceTime, Calendar, Reminders, and Find My. It’s a great feature, because having to keep logging in manually all the time would be a real time-consuming turn-off for a device that’s used by all the family.

But a note on the Apple newsrooms page about HomeView says “Apple HomeView setup and multiuser support require a compatible iPhone or iPad running the latest software.” It goes on to say that “Personal Context requests require a paired Apple Intelligence-enabled iPhone or iPad running the latest software version with Siri AI turned on and set to a supported language.”

(Image credit: Apple)You need a modern iPhone or iPad

Apple’s wording features two overlapping statements. A compatible iPhone or iPad is required to set up the HomeView, but one that runs Apple Intelligence is required for Personal Context requests. In practical terms, you need an iPhone 15 Pro, any iPhone 16 or newer model, an A17 Pro iPad mini, or an M1-or-newer iPad. The standard iPhone 15 does not qualify.

The Apple HomeView isn’t useless without those devices — it can still answer general-knowledge questions, control compatible smart-home products, and offer improved music discovery. However, it won’t be able to process requests involving personal information, such as finding details in Messages or Calendar and taking actions across apps, which require a modern iPhone or iPad. Siri AI must be enabled, and the HomeView and paired device must use a supported language.

But there is one even narrower requirement: customizing Siri’s expressiveness and speaking speed requires an iPhone 17 Pro, iPhone Air, iPhone 18 Pro, iPhone Duo, or an M4-or-newer iPad with at least 12GB RAM. Obviously, that's a small voice-personalization feature, not the threshold for ordinary Personal Context requests, but it’s still worth noting.

@techradar

♬ original sound - TechRadar The complete Apple AI home costs considerably more

When we look into the HomeView’s smart-home features, which are part of Apple’s wider smart-home ecosystem, things get even more complicated. With a compatible HomeKit Secure Video camera, Apple Intelligence can do the following, genuinely useful, things:

  • Summarize recorded activity: Instead of merely saying “Motion detected,” the Home app can describe what happened, such as a person leaving a package or a dog entering the garden.
  • Search recordings conversationally: You can search using requests such as “Show me when the parcel was delivered”, or, “When did the children get home?”, rather than manually scrolling through clips.
  • Connect related activity: The Home app can group or surface significant moments captured across different cameras.

Once again, an Apple Intelligence-compatible iPhone or iPad is required — this time to set up and enable the camera-intelligence features. Apple says footage is processed locally by the home hub or using Private Cloud Compute, rather than simply handing the analysis to the paired iPhone.

The complete list of what you need for these features to function is: a HomeKit Secure Video-compatible camera, HomeView or another compatible Apple home hub, an Apple Intelligence-compatible iPhone or iPad, and an eligible iCloud+ subscription. In other words, simply buying a HomeView alone does not give you the AI camera summaries or searchable recording history.

iCloud+ plans start at $0.99 for 50GB of storage a month, then $2.99 for 200GB and $9.99 a month for 2TB. Recorded HomeKit Secure Video footage is retained for 10 days, and does not count against your normal iCloud storage allowance.

Of course, you can still view a compatible camera’s live feed and receive basic accessory notifications without paying for recorded history, but you need that iCloud+ subscription for HomeKit Secure Video storage, and for AI features that analyze and search those stored recordings.

A $299 / £299 the HomeView therefore doesn’t independently provide the complete experience Apple demonstrates. Owners of an iPhone 15 Pro, iPhone 16 or another qualifying device may already have everything they need for Personal Context. But people using a standard iPhone 15 or an older model could discover that their new household AI device is considerably less personal unless they upgrade their phone too.

That may suit Apple perfectly: HomeView isn’t just another product, but another reason to keep every device in your home relatively new, compatible and attached to an Apple service. For buyers who haven’t studied the footnotes, however, the difference between what HomeView can do alone, and what Apple shows it doing, could prove frustrating.

Categories: Technology

Pages

Subscribe to The Vortex aggregator