Is AI taking up more time than it should? That seems to be general view of users of workplace AI, according to new research that explores how AI impacts productivity. The answer? Not very well.
The Use.AI study surveyed over 8,000 adults who use AI in the workplace, and found that while it made it easier to produce work, it also requires substantial revision. Some respondents found that AI can produce documents and material they wouldn’t have created themselves, but almost 48% have found that the technology creates more problems.
Although the research indicates a “fire and forget” approach to AI-generated material, people who take the time to check the work find problems, and revisions take time to complete.
Editing AIThe survey of 8,316 adults using AI in the UK and European Union, as well as the US, Canada, Australia, and Latin America by Use.AI revealed both positives and negatives around how AI is used in the workplace.
For example, 62% were enthused by how much easier it made creating documents, memos, and even code. But what happens next in the process is where the problems are found. A worrying 34% of respondents were forwarding AI-produced (or assisted) work without checking the contents. This can lead to issues when the AI has produced something unsuitable or unreadable.
A worrying 48% answered that they had received AI-assisted work that required correction, and 43% stated they had been forced to redo unsuitable AI work. Sadly, this meant that additional time was required, with 39% saying checking the AI’s effort took longer than creating their own version from scratch, and 41% highlighting how much more reviewing and verifying AI produced material was required since AI was brought into the productivity process.
Is AI really a productivity boost?The findings raise an interesting question. Big money has been spent on AI tools and implementing policies and procedures, replacing personnel, and employing “AI-ready” marketing tactics over the past few years.
But the research suggests that rather than being an advantage, for many businesses, AI can be a problem. More oversight is required to ensure the AI is fulfulling tasks accurately. This means more time is being spent resolving errors, quality issues, and more. The productivity advantages that AI should provide are being negated by its production of sub-par material.
And for all of the trumpeting about AI in the workplace, there is one statistic that stands out: 58% of respondents state that there are no rules for checking AI-assisted work. This may account for the growing problem that we see around us day-to-day – obviously AI-produced slop, issued via a single prompt and distrubed without any form of review. Use.AI’s research can be read online.
A new NYT Connections puzzle appears at midnight each day for your time zone – which means that some people are always playing 'today's game' while others are playing 'yesterday's'. If you're looking for Monday's puzzle instead then click here: NYT Connections hints and answers for Monday, October 19 (game #1226).
Good morning! Let's play Connections, the NYT's clever word game that challenges you to group answers in various categories. It can be tough, so read on if you need Connections hints.
What should you do once you've finished? Why, play some more word games of course. I've also got daily Strands hints and answers and Quordle hints and answers articles if you need help for those too, while Marc's Wordle today page covers the original viral word game.
SPOILER WARNING: Information about NYT Connections today is below, so don't read on if you don't want to know the answers.
NYT Connections today (game #1227) - today's words(Image credit: New York Times)Today's NYT Connections words are…
What are some clues for today's NYT Connections groups?
Need more clues?
We're firmly in spoiler territory now, but read on if you want to know what the four theme answers are for today's NYT Connections puzzles…
NYT Connections today (game #1227) - hint #2 - group answersWhat are the answers for today's NYT Connections groups?
Right, the answers are below, so DO NOT SCROLL ANY FURTHER IF YOU DON'T WANT TO SEE THEM.
NYT Connections today (game #1227) - the answers(Image credit: New York Times)The answers to today's Connections, game #1227, are…
This was such a horrible game and I came close to failure.
After getting LACKEY relatively easily, I made a mess of FINISH, opting for DOCK instead of STOP; I think I was thinking of things like spaceships coming to the end of their journeys.
For HOMOPHONES OF DISNEY CHARACTERS no logic at all was applied, I just got lucky with my second random guess and got a 'one away'.
Yesterday's NYT Connections answers (Monday, October 19, 2026, game #1226)NYT Connections is one of several increasingly popular word games made by the New York Times. It challenges you to find groups of four items that share something in common, and each group has a different difficulty level: green is easy, yellow a little harder, blue often quite tough and purple usually very difficult.
On the plus side, you don't technically need to solve the final one, as you'll be able to answer that one by a process of elimination. What's more, you can make up to four mistakes, which gives you a little bit of breathing room.
It's a little more involved than something like Wordle, however, and there are plenty of opportunities for the game to trip you up with tricks. For instance, watch out for homophones and other word games that could disguise the answers.
It's playable for free via the NYT Games site on desktop or mobile.
A new NYT Strands puzzle appears at midnight each day for your time zone – which means that some people are always playing 'today's game' while others are playing 'yesterday's'. If you're looking for Monday's puzzle instead then click here: NYT Strands hints and answers for Monday, October 19 (game #960).
Strands is the NYT's latest word game after the likes of Wordle, Spelling Bee and Connections – and it's great fun. It can be difficult, though, so read on for my Strands hints.
Want more word-based fun? Then check out my NYT Connections today and Quordle today pages for hints and answers for those games, and Marc's Wordle today page for the original viral word game.
SPOILER WARNING: Information about NYT Strands today is below, so don't read on if you don't want to know the answers.
NYT Strands today (game #961) - hint #1 - today's themeWhat is the theme of today's NYT Strands?• Today's NYT Strands theme is… [see below]
(Image credit: New York Times)NYT Strands today (game #961) - hint #2 - clue wordsPlay any of these words to unlock the in-game hints system.
• Spangram has 13 letters
NYT Strands today (game #961) - hint #4 - spangram positionWhat are two sides of the board that today's spangram touches?• First side: left, 2nd row
• Last side: right, 6th row
Right, the answers are below, so DO NOT SCROLL ANY FURTHER IF YOU DON'T WANT TO SEE THEM.
NYT Strands today (game #961) - the answers(Image credit: New York Times)The answers to today's Strands, game #961, are…
Even though I knew from the pictogram that the theme was DUCKDUCKGOOSE, I still managed to miss getting a very obvious Spangram First — the Strands equivalent of missing an open goal in soccer.
Instead, I begin with WALK then saw the first of the two ducks and felt like a fool.
I also missed the chance of getting the components of the game in order, which would have been satisfying. Instead, much like when I played DUCKDUCKGOOSE as a child, I just ploughed into the GAME without thinking.
Yesterday's NYT Strands answers (Monday, October 19, game #960)Strands is the NYT's not-so-new-any-more word game, following Wordle and Connections. It's now a fully fledged member of the NYT's games stable that has been running for a year and which can be played on the NYT Games site on desktop or mobile.
I've got a full guide to how to play NYT Strands, complete with tips for solving it, so check that out if you're struggling to beat it each day.
A new Quordle puzzle appears at midnight each day for your time zone – which means that some people are always playing 'today's game' while others are playing 'yesterday's'. If you're looking for Monday's puzzle instead then click here: Quordle hints and answers for Monday, October 19 (game #1729).
Quordle was one of the original Wordle alternatives and is still going strong now more than 1,500 games later. It offers a genuine challenge, though, so read on if you need some Quordle hints today — or scroll down further for the answers.
Enjoy playing word games? You can also check out my NYT Connections today and NYT Strands today pages for hints and answers for those puzzles, while Marc's Wordle today column covers the original viral word game.
SPOILER WARNING: Information about Quordle today is below, so don't read on if you don't want to know the answers.
Quordle today (game #1730) — hint #1 — VowelsHow many different vowels are in Quordle today?• The number of different vowels in Quordle today is 4*.
* Note that by vowel we mean the five standard vowels (A, E, I, O, U), not Y (which is sometimes counted as a vowel too).
Quordle today (game #1730) — hint #2 — repeated lettersDo any of today's Quordle answers contain repeated letters?• The number of Quordle answers containing a repeated letter today is 2.
Quordle today (game #1730) — hint #3 — uncommon lettersDo the letters Q, Z, X or J appear in Quordle today?• No. None of Q, Z, X or J appear among today's Quordle answers.
Quordle today (game #1730) — hint #4 — starting letters (1)Do any of today's Quordle puzzles start with the same letter?• The number of today's Quordle answers starting with the same letter is 0.
If you just want to know the answers at this stage, simply scroll down. If you're not ready yet then here's one more clue to make things a lot easier:
Quordle today (game #1730) — hint #5 — starting letters (2)What letters do today's Quordle answers start with?• C
• S
• T
• R
Right, the answers are below, so DO NOT SCROLL ANY FURTHER IF YOU DON'T WANT TO SEE THEM.
Quordle today (game #1730) — the answers(Image credit: Merriam-Webster)The answers to today's Quordle, game #1730, are…
One word today had me clinging on by fingertips to keep my still-fresh win streak intact.
COYLY was not the first word that popped into my head and I only got it through lack of choice. But ultimately, I solved it, and that's the important thing.
Daily Sequence today (game #1730) — the answers(Image credit: Merriam-Webster)The answers to today's Quordle Daily Sequence, game #1730, are…
As excitement around AI continues to build among businesses of all sizes, many leading voices are urging caution for those who might scale too quickly.
At its recent Think EMEA event in London, IBM revealed research which claimed efforts to stay aware of potential risks and challenges posed by AI deployment and scaling are falling somewhat short of expectations.
So what can companies do in order to balance the hype and excitement around what AI can offer, with the need for sensible and thorough governance.
AI as the enabler"What we are seeing is that if you don't provide an answer to security, to accountability, to responsibility, it is going to be very hard to scale AI in the corporate environment - particularly when we're talking about highly regulated industries - so for us, it's more of an enabler, than something that is going to slow down the adoption,” Ana Paula Assis, Senior Vice President and Chair for IBM EMEA and APAC told us in response to that very question during a media Q&A at the event.
“The question here is really, how do you balance the speed of innovation with the implementation of governance?”
IBM recently released research on the current state of AI and governance, finding that 80% of the companies surveyed claimed that an AI incident had been escalated to board level. However only 40% of those had then been able to use the incident to secure new investment in governance, or cement a new policy.
“I think the reason for that is because it's very hard to balance that innovation with the application of tools, processes, methodologies, to ensure that you are deploying AI at scale in a safe way,” Assis continued.
IBM is reportedly well placed to discuss such growth and progress with AI, with the company’s earlier keynote at Think EMEA claiming it had seen savings of around $5.5 billion in terms of improved productivity and efficiency utilizing AI to improve core processes - money that it was able to redirect to areas including R&D and innovation.
“But we are seeing this as an enabler, and as a key component of the architecture for agentic AI going forward, because these companies have tremendous responsibility - they need to ensure that they have trust from their clients, and they will only be able to do that if they have AI that they can observe and that they can govern.”
“AI is no longer just supporting the business,” Assis said. “It has become the business model. The organizations pulling ahead are not just adding AI, but rethinking how systems, decisions and processes work together with AI.”
EcoFlow has unveiled a new range of home backup batteries designed to keep essential appliances running during power outages, with enough capacity to provide electricity for several days. The Titan 5000 series includes three models, with a $50 reservation securing a 5% discount and two free 220W solar panels.
• Best for: Homeowners who want a good amount of backup power, particularly those concerned about outages or looking to make better use of solar energy.
• Why it matters: These aren't ordinary portable power stations. They're expandable home energy systems designed to supply thousands of watts of electricity and integrate with selected household circuits.
• What you need to know: The offer ends on November 2, and EcoFlow hasn't revealed shipping dates yet.
Best EcoFlow Titan 5000 dealsTitan 5000 Classic: was $2499 now $2374.05
This home battery system offers 5kWh expandable storage, 4000W output, 120V power, 3200W solar input, automatic backup switching, smart app control, and compatibility with EcoFlow's Smart Home Panel 10 system.View Deal
Titan 5000: was $3199 now $3039.05
This home battery system features 5kWh expandable storage, 7200W output, 120V/240V support, 4000W solar input, automatic backup switching, smart energy management, and compatibility with EcoFlow's Smart Home Panel 10 system.View Deal
Titan 5000 Plus: was $3699 now $3514.05
This advanced home battery system features 5kWh expandable storage, 7200W output, 8000W solar input, PV Boost technology, 120V/240V support, automatic backup switching, smart energy management, and home integration capabilities.View Deal
The Titan series offers the ability to choose how much electricity you want to store separately from how much power you need to deliver. The 5kWh starting capacity is useful for shorter outages, while expansion batteries can increase the available runtime.
A 5kWh battery could theoretically power a continuous 500W load for around 10 hours, although the actual runtime will vary because of conversion losses and other factors.
Expanding to 30kWh provides six times the stored energy, but additional batteries increase the total cost.
The Titan systems also offer automatic backup switching within 20 milliseconds, while the compatible Smart Home Panel 10 can manage up to ten selected circuits. EcoFlow's OASIS 3.0 software adds monitoring and energy management, including the ability to schedule charging around electricity tariffs.
Three models, three different power requirementsThe entry-level EcoFlow Titan 5000 Classic starts at $2,499 and provides 4,000W of output. It can power essential 120V appliances, including fridges, lighting, and more. It comes with approximately 5kWh of battery storage, expandable to 30kWh with additional batteries. Solar charging supports up to 3,200W of input.
The Classic only provides 120V output, so if you need more power consider the Titan 5000. Priced at $3,199, it gives you 7,200W of output and support for both 120V and 240V appliances. Solar input also increases to 4,000W, and the system works with EcoFlow's 240V Smart Home Panel 10 for automatic backup of selected household circuits.
The $3,699 Titan 5000 Plus shares the standard model's 7,200W battery output but doubles the maximum solar input to 8,000W, using two independent 4,000W MPPT controllers. Its PV Boost technology can increase available output to 10,000W when enough solar power is available.
Which EcoFlow Titan 5000 should you buy?✅ Buy the Titan 5000 Classic if...
You mainly want to keep essential 120V equipment running during power outages and don't need backup for large 240V appliances.
✅ Buy the Titan 5000 if...
You want 120V/240V backup power and enough output to support more demanding household equipment.
✅ Buy the Titan 5000 Plus if...
You have substantial solar generation capacity or want the additional power options for demanding appliances. Its 8kW solar input and PV Boost capability are the main benefits.
Apple’s on a roll! Just eight days after dropping the HomeView, HomePod mini 2, and Apple TV 4K, and four days before the iPhone Duo starts shipping, the Cupertino-based technology giant is teasing more.
In a post on X (formerly Twitter), Apple’s SVP of Marketing, Greg Joswiak, writes, “Can’t wait to pro and tell next week,” alongside an Apple logo being drawn. The same graphic was also posted to @HelloApple on Instagram with the caption, “About next week…” The latter gives us the timing and leaves us marking our calendars for a reveal similar to Apple’s recent home product launches. However, Joswiak’s post teases something Pro that could be on the horizon.
Alongside the teasers, Apple has also sent media invites for an experience in LA on October 28, 2026. That’s the same wording the company used to describe its ‘Welcome Home’ event, so I’d suspect there won’t be a formal keynote, but there will be plenty of hands-on time.
The teaser depicts the Apple logo being drawn using an array of colors, mostly silver, white, and blue, with small, vibrant pops of red, orange, and yellow. To me, it looks as though a finger could be drawing the logo, given the overall shape, or perhaps a brush of some sort is being used to create it.
Either way, it points to the likely arrival of new Macs or iPads. Remember, like most of Apple’s products, these devices feature an Apple logo on the back.
Can’t wait to pro and tell next week. https://t.co/3wUkxwq35iOctober 19, 2026
There’s been no shortage of rumors, and it’s likely that Apple will drop a significant update to the MacBook Pro family next week, finally delivering a touchscreen laptop.
That’s something the company has been pretty firm about ruling out, but it seems to have turned a corner if recent reports are to be believed. Both the new 14-inch and 16-inch models are expected to pair the first touchscreen on a Mac with an OLED display, delivering the same vibrant, rich viewing experience as an OLED iPhone or iPad Pro, all within a redesigned, slimmer notebook.
(Image credit: Lance Ulanoff / Future)Under the hood, these flagship MacBooks will likely get Apple’s best chips, whether that’s the M6 or the M5 Ultra, which premiered with the Mac mini and Mac Studio in August 2026.
Recent reports also hint that the M6 could be coming to the iMac, which is due for an upgrade after launching with the M4 in 2024. A new entry-level 14-inch MacBook Pro could also arrive with a design similar to the current generation, likely featuring the M6 chip instead of the M5 for better performance across the board, particularly for AI tasks.
Alongside the Mac, the iPad could also be in the mix, potentially hinted at by the vibrant colors and what appears to be a finer, brush-drawn Apple logo. Coming shortly after the iPhone Duo starts shipping, a major iPad mini upgrade is also rumored. It could carry a considerably higher price — a reminder that the current model starts at $699 / £699 / AU$949 — and add a ProMotion OLED display, a redesigned body, and a more capable chip under the hood.
(Image credit: Future/Jacob Krol)I’ve been wishing for a redesigned iPad mini with Magic Keyboard support and a better screen for a while, so this would be music to my ears, and likely to many others’ too. The iPad lineup is still in pretty good shape, with the Air and Pro models already receiving updates with better processors earlier this year. Besides the iPad mini, the only other model likely due for an upgrade is the entry-level iPad, but it’s unclear whether it will be updated next week.
Either way, we only have a few more days to wait to see what Apple has been working on. After all, the company has promised to ‘Pro and Tell.’ Let me know what you’re most excited about in the comments below.
As a big 4K Blu-ray fan, it was a delight to visit the team at Silver Salt restoration several weeks ago, where I learned about the 4K Blu-ray restoration and HDR mastering process. I looked at the meticulous restoration work that goes into taking a film from its negatives, all the way to the finished product we collectors have stuffing our shelves.
During my visit, I got to speak to the team and hear their in-depth knowledge and expertise, and while we discuss plenty of movies and projects Silver Salt had worked on, the main movie I was there to discuss was the 1958 Hammer classic Dracula (known as Horror of Dracula in the US) starring Christopher Lee as the titular vampire, with Peter Cushing as Van Helsing.
Arguably Hammer’s most iconic movie and easily one of Silver Salt’s biggest projects, I saw a glimpse into the work being done to bring this classic flick to new life.
A painstaking restoration(Image credit: Future)For a more in-depth look at the initial stages before the restoration process (table inspection, cleaning and scanning) check out my previous article here. Once the digital files have been scanned in, these DPX files are handed over to the restoration artists, who must then go through the painstaking process of removing excess dirt, tidying up film grain (but not too much) and a general maintenance and tidy on each individual frame.
After being shown some of the work that goes into this restoration process on other titles (which you can again read about in my previous article) I speak with Paul Gowlett, the Project Lead for Hammer at Silver Salt Restoration. He’s overseeing Dracula and gives me a glimpse into the work that’s gone into revitalising this Hammer classic.
One particularly arduous process he shows me involves the movie’s opening sequence (a shot of the exterior of the castle, walking amongst some tombstones). During this shot, which lasts approximately 90 seconds, Gowlett points to the bottom of his monitor and points out a hair.
“It was part of the original presentation of the film, but was a production issue of the cleaning the camera gate, it is not intentional” he tells me. This brings me back to an earlier conversation I’d had with Anthony Badger, Head of Restoration at Silver Salt. He said “It can be a bit of an ethical dilemma on how much we intervene, but we need to consider if an extreme problem will take you out of the story.” Although the hair was part of the ‘original film’ it could serve as a distraction.
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792402757519-yhbvqw8fn *, #fv-chart-1792402757519-yhbvqw8fn *:before, #fv-chart-1792402757519-yhbvqw8fn *:after, #fv-chart-1792402757519-yhbvqw8fn-slideshow *, #fv-chart-1792402757519-yhbvqw8fn-slideshow *:before, #fv-chart-1792402757519-yhbvqw8fn-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792402757519-yhbvqw8fn, #fv-chart-1792402757519-yhbvqw8fn-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792402757519-yhbvqw8fn { position: relative !important; overflow: visible !important; --riv-primary: #AA1124; } #fv-chart-1792402757519-yhbvqw8fn .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792402757519-yhbvqw8fn.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #AA1124; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-nav-btn.disabled, #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792402757519-yhbvqw8fn-slideshow .fv-slideshow-select:focus { outline: 2px solid #AA1124 !important; border-color: #AA1124 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792402757519-yhbvqw8fn .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792402757519-yhbvqw8fn .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792402757519-yhbvqw8fn .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792402757519-yhbvqw8fn .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row, #fv-chart-1792402757519-yhbvqw8fn .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792402757519-yhbvqw8fn.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792402757519-yhbvqw8fn .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792402757519-yhbvqw8fn.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-expand-btn, #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-expand-btn:hover, #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-pie-container, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-stacked-product, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-grouped-bar-product, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-row, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-stacked-product, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-label, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-grouped-product-title, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-label, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-container, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-cluster, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-container, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-x-axis-wrapper, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-x-axis-label-space, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-x-axis-chart-space, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-benchmark-title, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-dropdown-title, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-carousel-nav-btn, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-chart-title, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-chart-subhead, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-header, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select-wrapper, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-vs, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select-container, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-versus-select, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792402757519-yhbvqw8fn.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792402757519-yhbvqw8fn .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row, #fv-chart-1792402757519-yhbvqw8fn .fv-stacked-product, #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-label, #fv-chart-1792402757519-yhbvqw8fn .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-container, #fv-chart-1792402757519-yhbvqw8fn .fv-bar-cluster { width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402757519-yhbvqw8fn .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-label-space { display: none !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-stl-shop-all-logo, #fv-chart-1792402757519-yhbvqw8fn .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792402757519-yhbvqw8fn .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792402757519-yhbvqw8fn.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Dracula (1958)", "description": "A shot of Christopher Lee as Dracula, with the original file on the left and the remaster on the right, the latter of which shows much more color and depth", "creator": { "@type": "Organization", "name": "Default" }, "isAccessibleForFree": true, "dateCreated": "2026-10-19T09:39:17.519Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Image Comparison", "benchmark", "comparison", "performance", "review", "Default" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": []}{"version":2,"exportedAt":"2026-10-19T09:39:17.519Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"Default","logoUrl":"","colors":{"primary":"#AA1124","secondary":"#FFFFFF","accent":"#1A1A1A","background":"#ffffff","text":"#1F2937"}},"textContent":{"title":"Dracula (1958)","subhead":"A shot of Christopher Lee as Dracula, with the original file on the left and the remaster on the right, the latter of which shows much more color and depth","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/Y4fPNuXPEGPLxJSSypweeg.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/YXp6V7akxByKBhyqNPKheg.jpg","label1":"Original raw file","label2":"Remastered","showTitle":false,"showSubhead":true}},"slides":[]}A shot of Christopher Lee as Dracula, with the original file on the left and the remaster on the right, the latter of which shows much more color and depth
Original raw fileRemastered window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792402757519-yhbvqw8fn', false); }); } else { initialize('fv-chart-1792402757519-yhbvqw8fn', false); } })();Gowlett informed me that each individual digital frame had to be checked for this hair. Each frame was removed digitally by using information from frames from later on in the shot, leading to the final image. The final result: a staggering 2000 frames. When I asked Gowlett how long it had taken him to remove this hair, he said several days. All for 90 seconds of footage. It was just a clear indication of how much work had gone into this project.
The other issue the team found with the original film (which was prevalent in the digital files) was a heavy amount of yellow staining. This yellow staining was only apparent when isolating the ‘blue channel of the image’ in the restoration process. Along with the hair and this staining, the team also made sure to ‘de-flicker’ the image to make the colours more stable throughout.
A stunning grade and updated soundtrackOnce the restoration work is complete, the files are handed over for grading. Dracula is being handled by Ray King, Head of Film at Silver Salt, while also being overseen by Mark Stanborough, Head of Restoration, Hammer Films, but during my visit, it’s Ray’s grading I’m seeing in action.
King has worked on most, if not all, of the Hammer titles handled by Silver Salt. He shows me how Peter Cushing’s skin tone has taken on a red tint after applying the HDR grade, saying how it’s the old stage makeup used during these sorts of productions being picked up during the grade. With some alterations, the result looks natural and lifelike, breathing new life into all characters in the clips I saw.
I’m also shown the opening title sequence again, only this time with the blood-red ‘Dracula’ text overlaid. To get this, King had to separate out the picture and the words into two separate layers, to get that blood-red color on the words themselves. He told me the color of the titles had faded, so he separated the layers and grades here to get the colors worthy of the words.
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792402737488-dazyeqhs3 *, #fv-chart-1792402737488-dazyeqhs3 *:before, #fv-chart-1792402737488-dazyeqhs3 *:after, #fv-chart-1792402737488-dazyeqhs3-slideshow *, #fv-chart-1792402737488-dazyeqhs3-slideshow *:before, #fv-chart-1792402737488-dazyeqhs3-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792402737488-dazyeqhs3, #fv-chart-1792402737488-dazyeqhs3-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792402737488-dazyeqhs3 { position: relative !important; overflow: visible !important; --riv-primary: #AA1124; } #fv-chart-1792402737488-dazyeqhs3 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792402737488-dazyeqhs3.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #AA1124; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-nav-btn.disabled, #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792402737488-dazyeqhs3-slideshow .fv-slideshow-select:focus { outline: 2px solid #AA1124 !important; border-color: #AA1124 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792402737488-dazyeqhs3 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792402737488-dazyeqhs3 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792402737488-dazyeqhs3 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792402737488-dazyeqhs3 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row, #fv-chart-1792402737488-dazyeqhs3 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792402737488-dazyeqhs3.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792402737488-dazyeqhs3 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1792402737488-dazyeqhs3.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-expand-btn, #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-expand-btn:hover, #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-pie-container, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-stacked-product, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-grouped-bar-product, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-row, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-stacked-product, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-label, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-grouped-product-title, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-label, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-container, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-cluster, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-container, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-x-axis-wrapper, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-x-axis-label-space, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-x-axis-chart-space, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-benchmark-title, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-dropdown-title, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-carousel-nav-btn, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-chart-title, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-chart-subhead, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-header, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select-wrapper, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-vs, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select-container, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-versus-select, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792402737488-dazyeqhs3.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792402737488-dazyeqhs3 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row, #fv-chart-1792402737488-dazyeqhs3 .fv-stacked-product, #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-label, #fv-chart-1792402737488-dazyeqhs3 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-container, #fv-chart-1792402737488-dazyeqhs3 .fv-bar-cluster { width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792402737488-dazyeqhs3 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-label-space { display: none !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-stl-shop-all-logo, #fv-chart-1792402737488-dazyeqhs3 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792402737488-dazyeqhs3 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792402737488-dazyeqhs3.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Dracula (1958) - Castle", "description": "Color fade was an issue with the original raw files, but the HDR remastered grade revistlized these colors ", "creator": { "@type": "Organization", "name": "Default" }, "isAccessibleForFree": true, "dateCreated": "2026-10-19T09:38:57.488Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Image Comparison", "benchmark", "comparison", "performance", "review", "Default" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": []}{"version":2,"exportedAt":"2026-10-19T09:38:57.488Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"Default","logoUrl":"","colors":{"primary":"#AA1124","secondary":"#FFFFFF","accent":"#1A1A1A","background":"#ffffff","text":"#1F2937"}},"textContent":{"title":"Dracula (1958) - Castle","subhead":"Color fade was an issue with the original raw files, but the HDR remastered grade revistlized these colors ","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/dFhHC52VT3tgRJyB6YBokQ.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/6nWzBqa4VgqWZyj8eAjfqQ.jpg","label1":"Original raw file ","label2":"Remastered","showTitle":false,"showSubhead":true}},"slides":[]}Color fade was an issue with the original raw files, but the HDR remastered grade revistlized these colors
Original raw file Remastered window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792402737488-dazyeqhs3', false); }); } else { initialize('fv-chart-1792402737488-dazyeqhs3', false); } })();Color fade was also true of the original elements that had been scanned in. A lot of the beautiful, bold colors weren’t popping as much and after showing me the red, green and blue waveforms, which highlighted the colors' degradation, he then showed me the picture after the grade had been applied. The difference was staggering.
The ornate furnishings, particularly a set of lush, velvet red curtains, now dazzled thanks to HDR. Instances of blood popped on screen and even clothing had a more dynamic, modern-day look to them. Again though, it was the skin tones of the people on screen that really impressed me, as this seemed to give the movie an almost-modern look. “Once we’re done, some of these movies like they could have been filmed last week” King says, rightfully admiring the HDR grade before us.
Even darker scenes have been given a facelift. Black tones are richer, deeper and, when paired with candlelight or lamps, create strong contrast that would look superb on some of the best OLED TVs. The grade in every clip I’m shown is nothing short of masterful and having tested multiple Hammer titles as part of the Blu-ray Bounty, Dracula is set to be the best.
I discussed with Stanborough later on about the new 5.1 soundtrack, something that’s been included with those other Hammer titles I tested. Stanborough talked to me about the process.
To achieve the 5.1 surround, AI was used to split the dialogue and music tracks before being mixed in a studio. “60-70% of the film is in surround, which is quite nice” but he also stressed the importance of “trying not to go too far and staying sympathetic to the original theatrical experience”.
When the movie returns to cinemas on 16th October (on a two week run until 1st November), viewers will experience the 5.1 soundtrack and HDR grade. The 4K disc lands on 23rd November, but whether you can get along to a cinema screening or are getting the 4K disc for your collection, after what I’ve seen and heard, fans will be in for a treat.
Dracula is in UK cinemas now, with the 4K UHD Limited Edition and Standard Editions arriving 23rd November. Check here for your nearest screenings.
Phishing emails are notorious for often working exceptionally well, but which ones are the most effective? We all know that these lures need two things: A) to carry a sense of urgency; and B) the idea that the victim will either miss out on something or suffer material troubles.
But no two emails are alike, and some campaigns prove to be more successful than others.
Security researchers Kaspersky set out to learn which themes work best, and which fail, to give businesses better insight into the biggest risks lurking in the depths of their employees’ inboxes. To do that, they analyzed anonymized voluntary provided data from their Phishing Simulator. “A high click rate among users clearly highlights what specific cybersecurity training is required,” they said.
Responding to sensitive emailsThe data showed five topics that yield the best results for the attackers: AI & Tech, Healthcare & Insurance, IT Policies & Compliance, Gifts & Promotions, and HR & Corporate Communications.
AI & Tech was the best-performing topic overall, with themes such as “introducing next-gen artificial intelligence” having a 45% click-through rate. In other words, almost every other recipient would click on a malicious link and potentially get served malware or share login credentials with threat actors.
Healthcare & Insurance lures tricked an average of 28% of the audience, but among the different emails, one stood out. Emails regarding a sanitary inspection report reached a 92% click-through rate. IT & Policies were third with a 26% click-through rate, followed by Gifts & Promotions (24%).
Two-thirds (66%) of recipients clicked an email inviting them to wear their’ national team’s football jersey and win a prize. HR & Corporate comms yielded a 22% click-through rate, with emails raising sensitive and high-interest internal topics being “especially dangerous”, Kaspersky said.
“People naturally respond to sensitive and highly contextual emails, especially when phishing mimics their exact workflow or local specifics. Knowing this, cybercriminals make their traps more personalized and this trend is set to accelerate with the rise of generative AI,” said Svetlana Kalashnikova, Security Awareness expert at Kaspersky.
“Fortunately, proper cultivation of cyber vigilance demonstrates measurable risk reduction: regular training and attack simulations drastically reduce phishing susceptibility rates from 60% to a mere 5–7%, according to KASAP effectiveness analytics. To protect people and businesses from human-targeting threats, we strongly recommend that organizations implement ongoing cybersecurity awareness program for all employees.”
According to Kaspersky, phishing remains the most prevalent cyber-incident for businesses at any stage of growth and ranks top among incidents leading to damaging business consequences. At the same time, attacks on humans grow more sophisticated, faster, and broader in scope and are, thanks to Artificial Intelligence (AI) now becoming a multi-stage effort.
Spotting a phishing emailBefore Artificial Intelligence (AI), phishing emails were relatively easy to spot. Since they were mostly written by threat actors who aren’t native English speakers, their language was rather clunky and could not properly convey the style or the tone set up by the legitimate company’s communications team.
AI has now made malicious emails almost indistinguishable from legitimate communications, pushing identification further down the infection chain: towards links and attachments, as well as the overall sentiment.
A few things remain the same for all weaponized emails: the sense of urgency. Most legitimate organizations would not threaten their customers with account suspensions within 24 hours. They would also not host their documents on unrecognizable third-party services, and would not share attachments in executable formats.
Double-checking the domain from which the email is being sent is still a good way to spot an attack, too. Most phishing emails originate from a stolen email address, or one created on a public service. The UK postal service does not have a Proton email account.
Therefore, raising awareness, training, and doing simulations, remains the number one way to defend in 2026.
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
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 hackThe 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.
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 iPadApple’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 moreWhen 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:
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.
Let’s get one thing out of the way: the Logitech G Pro X2 Rapid commands a premium price tag. At $229.99 / £209.99 / AU$399.95, it sits near the top of the gaming keyboard market — costing more than similarly high-end alternatives like the Razer Huntsman V3 HE or Corsair K70 Max. It’s currently the most expensive gaming keyboard that Logitech sells, reflecting its positioning as the very best of the best.
What does that price get you, though? The big draw here is the custom KS-20 POM switches. They’re manufactured by Gateron, one of the most popular keyboard switch brands, with contactless Hall effect operation. They feature a customizable actuation point, allowing you to select actuation depth all the way from 4mm to a very shallow 0.1mm in 0.05mm increments.
(Image credit: Future)Raising the actuation point reduces the time taken for each keystroke to be registered, facilitating lightning-fast responses in intense competitive titles like Counter-Strike 2 or Valorant. You can customize the actuation point on a per-button basis as well, meaning you can make your movement inputs as sensitive as possible while leaving the button to switch weapons, for example, a more deliberate press to prevent misclicks in key moments.
This works in tandem with the rapid trigger setting, which sets the point at which a key needs to be lifted in order to reset. You can practically remove the delay between rapid inputs, meaning much more responsive movement. Getting used to the snappy responses certainly took some adjustment in my testing, but I found strafing felt much more precise, and this could make a big difference in a competitive setting where speed can make the difference between a win and defeat.
(Image credit: Future)You can also set up key priority, which determines how the keyboard interprets almost simultaneous inputs via metrics like key travel or a chosen override. This sounds great on paper, as it should allow for much easier counter-strafing or ‘jiggle peeking’ (emerging from cover for a split second to try and bait an opponent into taking a shot), but there’s a big catch. This feature is banned in some competitive titles (including Counter-Strike 2) and will result in automated server kicks, so it should be treated with some degree of caution.
The built-in OLED display is also a pretty cool addition, though honestly, it’s not as useful as I first assumed it would be. It’s a small vertical display positioned on the far right-hand side of the keyboard above a small button and a little scroll wheel. By default, the wheel controls your system volume, but a quick tap of the button opens a menu with access to activation point adjustment, rapid trigger, mkey priority, RGB lighting, and game mode settings.
Adjusting them like this is very fiddly and much more easily accomplished right in the compatible Logitech G Hub software. With G Hub, you can save settings directly onto the keyboard’s memory, and I suspect that most pro players would rather create their settings in advance with the software rather than try and adjust them on the fly in the middle of a game.
The spec sheet is also impressive, with highlights like an optional 8,000Hz report rate. The keyboard also has a physical game mode switch, designed almost like a light switch. Flick this on to enable your game mode preset, which disables the two Windows keys by default to prevent accidental tab changes.
The physical design of the Logitech G Pro X2 Rapid exudes quality too, with the compact TKL form factor making it easy to incorporate into your setup. All three colorways (Black, White, and Magenta) look excellent, and key presses feel suitably satisfying with a very smooth motion and lovely sound. It feels great to type on as a result, but I am still disappointed that the exterior of the keyboard is entirely plastic when most gaming keyboards above a hundred bucks incorporate more durable metal faceplates instead.
I also don’t understand why Logitech G didn’t opt to go for a nice braided USB Type-C cable rather than a rubbery plastic one at this price. Maybe there’s some reason for pro players to prefer plastic, but if that’s the case, the brand could surely just throw in two alternate cable options given the $229.99 / £209.99 / AU$399.95 price tag.
There’s also the matter of the included wrist rest, which I unfortunately don’t think is particularly good. It’s basically just a huge rectangular hunk of cold, rubbery plastic that you have to flop awkwardly onto your desk. It’s not well padded, and I quickly relegated it to confinement back in the box. It’s presumably a very cheap extra to include, but I’m not too happy with the prospect of having to store it.
Logitech G Pro X2 Rapid review: Price & availabilityAt $229.99 / £209.99 / AU$399.95, the Logitech G Pro X2 Rapid is expensive for a gaming keyboard, particularly a wired-only model with a predominantly plastic construction.
To give just two examples, similarly priced high-end options such as the Razer Huntsman V3 HE or Keychron Q1 Ultra 8K incorporate more premium materials like aluminum and, in the case of the Keychron model, offer wireless connectivity.
Still, it’s not offensively bad value by any means, as you are paying specifically for the high-end spec sheet, built-in screen, custom switches, and suite of esports features. You also get a wrist rest in the box and, while I’m not a huge fan, it might be useful for some.
The Logitech G Pro X2 Rapid can be purchased directly from the Logitech G website or at online retailers like Amazon.
Should I buy the Logitech G Pro X2 Rapid?ScorecardValue
Expensive for a wired gaming keyboard, but goes some way to justify its price with its feature set.
4/5
Design and features
Looks great and is tuned to deliver serious esports performance with specialist features like rapid trigger and custom actuation points.
4/5
Performance
A joy to type on and an excellent pick for competitive games.
4.5/5
Final score
Expensive, but worth it if you’re serious about competitive gaming given the performance and features.
4/5
Buy it if…You want esports-grade performance
The Logitech G Pro X2 Rapid is all about competitive gaming performance with features like the optional 8,000Hz polling rate and custom actuation point settings designed to help you do your best when it counts.
You’re after the ultimate switch customization
The Logitech G Pro X2 Rapid offers multiple ways to customize its KS-20 POM switches. You can adjust the actuation depth to your preference on a key-by-key basis, or enable the rapid trigger mode for accurate repeat inputs.
You’re used to more premium materials
The exterior of the Logitech G Pro X2 Rapid is fully plastic, which is unfortunate when cheaper alternatives offer more durable-feeling metal elements.
Razer Huntsman V3 HEThis Razer keyboard offers Hall effect magnetic switches and features an integrated OLED screen, yet costs significantly less than the Logitech G Pro X2 Rapid. It even has a metal faceplate, which feels more premium than the X2 Rapid’s plastic.
Read our full Razer Huntsman V3 HE review
Keychron Q1 Ultra 8K
This high-end option from Keychron is often on sale for cheaper than the Logitech G Pro X2 Rapid and delivers an excellent typing experience with a robust aluminium chassis. It’s also capable of an 8K report rate, but unfortunately isn’t widely available in the UK or Australia.
Read our full Keychron Q1 Ultra 8K review
(Image credit: Future)How I tested the Logitech G Pro X2 RapidI tested the Logitech G Pro X2 Rapid for multiple weeks alongside the Logitech G Pro X3 Superstrike mouse, with my hands on both before and after the official reveal and release.
I used it for gaming sessions and productivity tasks throughout my days. This included plenty of time in popular esports titles such as Counter-Strike 2 and Call of Duty: Black Ops 7. I also played a range of other games, including the likes of Gears of War: E-Day, Cities: Skylines 2, and Far Cry 6.
Throughout my time with the keyboard, I compared it to my hands-on testing of other gaming keyboards across the price spectrum.
Russian authorities have reportedly explored using artificial intelligence to identify and block virtual private networks with a staggering 95% effectiveness.
According to a report by Russian newspaper Kommersant, the proposal surfaced in a draft national plan for implementing AI technologies through 2030. The ambitious scheme envisioned AI models analyzing the characteristics of 70% of VPN services targeted for censorship.
While Russia’s Digital Development Ministry claims this AI measure is absent from the plan's current iteration, the underlying intent remains clear. Moscow is already heavily investing in a permanent censorship infrastructure, with recent reports highlighting plans for Russia to double its internet censorship budget.
For citizens or visitors trying to secure their connection, finding the best VPN is increasingly difficult as the state tightens its grip on circumvention tools. Currently, Russia relies on "intelligent algorithms" rather than true AI to analyze internet traffic. However, the government still intends to increase the capacity of its traffic-filtering infrastructure 2.5-fold to 954 terabits per second by 2030.
Collateral damage and false positives(Image credit: Getty Images / Surasak Suwanmake)An AI-powered system would sit atop Russia's existing technical systems for countering threats (TSPU), the dedicated filtering hardware already installed on telecom operators' networks.
Speaking to Kommersant, a source in the Russian networking industry explained the technical mechanics. “AI automates and accelerates the analysis of connection patterns,” the source noted. The technology would evaluate data points like packet size and timing, session duration, traffic ratios, and neighboring IP addresses to indirectly root out VPN infrastructure.
However, deploying artificial intelligence to blindly hunt down hidden traffic comes with a steep cost.
Industry sources cautioned that an AI layer could lead to a surge in false positives, trapping legitimate business and corporate traffic in the dragnet. One source estimated that the algorithmic error rate is already 5% to 6%, and early-stage AI models would likely produce a significant number of incorrect blocks.
As noted by United24 Media, rolling out such a system requires immense resources. A fully operational AI detection net requires large-scale telemetry storage, massive computing clusters for model training, and a complex infrastructure to distribute updated models directly to filtering nodes.
A broader push for "sovereign" techThe drive to automate VPN detection is just one piece of a broader effort by Moscow to tightly control mobile communications and escalate VPN blocks. Alongside restricting circumvention tools, Russia is attempting to force the tech industry to adopt strictly domestic security standards.
A recent draft order from the Digital Development Ministry mandates that smartphones operating on Russia's future 5G networks must support "Kuznyechik", an encryption algorithm developed with participation from the FSB’s information-security centre and InfoTeKS. Scheduled to take effect on March 1, 2032, this is not part of the standard 3GPP encryption suite.
Because the algorithm must be baked into modem chipsets, it could effectively force global manufacturers like Apple and Samsung to build Russia-specific hardware just to operate in the country.
Ultimately, it appears the Kremlin is prepared to use every technological weapon at its disposal to isolate its digital borders.
As the US midterms rapidly approach, the FBI is once again warning Americans about the flood of election-related scam campaigns coming their way.
Thousands of websites have already been spotted getting ready to spool up for election season, with phishing sites, fake donation portals, and Doppelganger clones also emerging as November draws closer.
Finances and personal data are both at risk, the FBI has warned, with many campaigns leveraging new AI technologies to make scams even more convincing.
Scammers leveraging AI and deepfakesOne of the ways scammers are taking advantage of the elections is by launching campaign investment pool schemes. These campaigns ask victims to pay into a campaign pool that promises to pay more money than the victims invested if the candidate wins.
Similar scams have been spotted surrounding investment in stocks and cryptocurrencies, but campaign investments are a novel new approach.
Fake political action committee (PAC) scams have also been popping up, requesting donations to help fund campaigns, but rather than any of the money going towards furthering the candidate’s political aims, the money is instead kept by the scammers.
Political merchandise is also being abused by scammers. Fake websites advertise clothing and trinkets bearing political logos and candidate’s names, but never arrive once they are purchased.
Election phishing on the riseOutside of what the FBI has warned against in its advisory, there are a number of other common scams that are targeting Americans looking to exercise their right to vote.
Scammers are sending out text messages en masse stating that the recipient has not yet registered to vote and that the deadline is closing soon.
This sense of urgency can easily push past the better judgement of those looking to participate in the midterm elections, and upon visiting a fake voter registration website the victims hand over their sensitive information.
Subsequent phishing, scams, and even identity theft can follow.
Iran, Russia, and China are also launching disinformation and misinformation campaigns aimed at polarizing voters across the political spectrum. Similar campaigns were spotted for the 2024 Presidential election surrounding everything from US support for Ukraine, to election interference claims.
Via The Register
With energy prices soaring thanks to the ongoing conflict in the Middle East, you might be looking to plug-in solar panels to help cut your bills. To that end, the UK’s Fuse Energy has just announced the country’s first plug-in solar panels that come with an included battery, so you can harvest your own energy and store it for when it’s needed most — though the combination isn't yet legal in the UK.
The Jules by Fuse scheme lets you plug up to four 500W solar panels into a standard socket and use them to collect solar energy. This can be stored in the included 2.5kWh battery, with the Fuse app deciding when to store power and when to start using it from the battery.
Fuse frames the device as a handy product for people who a renting, living in an apartment or whose house roof is not suitable for solar panels. Instead of requiring scaffolding and a suitable home structure, the panels and battery can be placed on a balcony, mounted on a wall or placed in a garden.
That means accessing solar energy and storing it at home need not be limited to homeowners living in properties with suitable roof spaces. That said, there is a catch to be aware of with Fuse’s new initiative.
Waiting to clear the legal hurdle(Image credit: Fuse Energy)As we noted earlier, you can’t get one of Fuse’s Jules setups installed today, as they’re not technically legal in the UK yet. Fuse says that the first deliveries of the product are “expected post legislation approval in 2027,” so if you’re interested, all you can do for now is pre-order one using Fuse’s waitlist.
Once the relevant legislation is passed and the Jules does become available, Fuse says it will cost £577 and will save you around £180 a year in electricity bills, meaning it’ll be paid off in a little over three years. In contrast, Fuse says that standard rooftop solar panels can set you back between £7,000 and £8,000, plus scaffolding and installation costs.
The big difference with plug-in solar kits — which only became legal in the UK in August 2026 — is Fuse’s inclusion of a battery in its Jules setup. This can make a real difference because it lets you power your house using the energy you’ve collected even when the sun isn’t shining, keeping you juiced up in all conditions.
(Image credit: Fuse Energy)Rival provider Octopus Energy is planning similar home battery products called the Nook Cube (2kWh) and Nook Colossus (5kWh or 10kWh, expandable to 30kWh) — also due to launch in 2027. Octopus’s own plug-in solar panels have repeatedly sold out since going on sale, although they don’t come with their own batteries.
While we’re waiting for battery legislation to pass, it’s a good idea to read up on the existing rules surrounding solar batteries and panels, as they’re not as simple as you might think. Hopefully things will become clearer next year, when the likes of Fuse and Octopus are confident that plug-in batteries will have passed the legal hurdles in their way.
Your social media profiles are a goldmine for scammers looking to harvest personal information for phishing, social engineering, or identity theft. Between birthday posts and family photos, you’re essentially building a detailed dossier that cybercriminals can weaponize against you.
Here’s the good news: with just a few adjustments, you can dramatically reduce your attack surface without losing the convenience and fun of socializing online.
This article is the fourth in a series of content relating to Cybersecurity Awareness Month 2026, which runs throughout October. The previous articles have covered VPN dark web alerts and free alternatives, VPN protection when using AI, and the benefits of dedicated antivirus over packaged solutions.
Less is moreThe UK’s National Cyber Security Centre (NCSC) emphasizes that privacy settings exist for a reason: they keep your personal information “inaccessible to anyone but you.” Their guidance focuses on using each platform’s settings to control who can see your posts, contact you, or find your profile.
Scammers can piece together seemingly harmless details to craft highly convincing, targeted phishing attacks. Even a pet name or tagged location – innocent on their own – can become ammunition for someone trying to impersonate you or guess your security questions.
Platform-by-platform quick hits(Image credit: Getty Images)Here are the most impactful privacy switches to flip on each major platform:
Regardless of which platforms you use, two actions should be at the top of your list:
First, enable Two-Factor Authentication (2FA) everywhere. Even if someone guesses or steals your password, they can’t get in without the second factor – ideally an authentication app.
Second, audit your connected apps. There may be games, quizzes, and other services logged in that you haven’t touched in years. Head to each platform’s third-party app settings and revoke access for anything unused or unfamiliar.
In summarySpending just five minutes adjusting these settings across your apps reduces your visibility to bad actors and can help keep your data out of the hands of cybercriminals. You don’t need to delete your accounts or leave social media behind – just be intentional about what you share and who can see it.
We're barely past the midpoint of October, but some Black Friday sales are already being teased. That's exactly what's happening over at Samsung, where there are a small number of offers on its latest phones, TVs, tablets, smartwatches, and more for Samsung Week.
• Browse the full Samsung Week sale
Some of the best offers are found on the latest Samsung Galaxy S26 Ultra and Galaxy Z Fold 8 Ultra, if you're looking to upgrade. You can get a guaranteed minimum of £150 off the former when you trade in any other device, while the latter features trade-in discounts of up to £730 with select smartphones.
As for TVs, you have several options, depending on the display type and any extras you're after. For example, there's 20% off when you buy a TV with a soundbar, up to £500 cashback on select TVs, and the option to trade in and upgrade to a 2026 display for £250 less.
Even though Samsung is teasing these as its early Black Friday deals, I doubt that this is everything the manufacturer will offer during the big end-of-year sales. So if there isn't a deal on the tech you're after, it's worth checking back later next month when the full Black Friday sales start.
For now, here are my top picks from Samsung Week, which, despite the name, actually runs all the way through to November 3.
Samsung Week — quick linksSamsung Galaxy S26 Ultra: guaranteed £150 off with a trade-in
The £150 discount you get for trading in a phone works with any device in any condition, so you could really stretch the value out with a super-cheap or super-old phone. This is missing the cashback that was available in a previous offer, so it isn't the cheapest I've seen Samsung's flagship smartphone, but it's still a reasonble offer for one of the best high-end Android phones available now.
Samsung Galaxy Z Fold 8 Ultra: up to £730 off with a trade-in
This is one of the biggest trade-in offers on the premium Galaxy Z Fold 8 Ultra since the foldable launched earlier this year. If you have an eligible device to hand over, it could be a good time to upgrade if you don't want to wait until closer to Black Friday. We gave it an incredible 4.5 stars in our review for its power, slick screen with no crease, excellent cameras, and respectable battery life.View Deal
Samsung Galaxy Tab S12 Ultra: up to £730 off with a trade and £100 extra off with PayPal
Samsung only just released the Galaxy Tab S12 Ultra, so we're still in that early window of strong launch offers, thanks to a combined trade-in discount of up to £730 and an extra £100 saving if you check out using PayPal. As we found after spending two weeks with the Galaxy Tab S12 Ultra, it's an impressive and powerful slate, although it's likely an unnecessary upgrade for most if you already have a top-end tablet.View Deal
R85H 65-inch Micro RGB TV: was £1899 now £1699
The 65-inch version of Samsung's latest R85H is now £400 off after a combined £200 discount and £200 cashback offer. Plus, there's another £150 off if you recycle your old TV. The R85H stands out for its excellent colour and image quality, thanks to the array of micro RGB LEDs. That means it also boasts superior brightness and fantastic contrast, ensuring you get a smooth, sharp and vibrant image. It's an ideal all-rounder for films, movies, sports, and gaming, as it also supports 144Hz and a variable refresh rate to give you a smooth and responsive picture. With all the offers combined, it's easily one of the best premium TV deals I've seen right now.View Deal
The Frame Pro 55-inch 4K TV: was £1499 now £1299
If you want your TV to blend into the environment when it's not in use, then you'll want to check out this deal on the latest version of Samsung's The Frame display. With a stylish design and a bezel included for free, it disguises itself well as any other picture and can even display your own chosen art or photos. It's solid as a TV, too, with a bright and colourful picture that's best suited to shows and movies. For a gaming TV, though, I'd look elsewhere.View Deal