VirtualBox is often considered among the best virtual machine software available, particularly for users looking for a free and flexible solution. Its cross-platform support and open-source model make it a popular starting point for anyone exploring virtualization, even if more advanced users may eventually outgrow its limitations.
VirtualBox: Plans and pricingOne of VirtualBox’s biggest advantages is that the core platform is completely free to use and distributed as open-source software under the GPL license.
However, not all functionality falls under the same licensing model. The optional Extension Pack, which adds features such as enhanced USB support and remote desktop capabilities, is free for personal and educational use but requires a commercial license in business environments.
In practice, this means that while individual users can access most of VirtualBox’s functionality at no cost, organizations may need to factor in additional licensing considerations depending on how the software is deployed.
Recent changes in the virtualization market, including VMware making its desktop hypervisors free for personal use, have also reduced VirtualBox’s traditional advantage in this area.
VirtualBox: Features(Image credit: Oracle // Future)VirtualBox supports a wide range of guest operating systems, including Windows, Linux, and other platforms, and allows users to allocate system resources such as CPU cores, memory, and storage on a per-virtual-machine basis.
It includes core virtualization features such as snapshots, which allow users to save and restore the state of a virtual machine, as well as shared folders and clipboard sharing between host and guest systems when Guest Additions are installed. Multiple networking modes are also available, including NAT and bridged networking, enabling different connectivity scenarios depending on user needs.
Additional functionality is provided through Guest Additions, which improve display handling, enable better mouse integration, and support features such as dynamic screen resizing. While the feature set is comprehensive for a free solution, some capabilities, particularly in areas such as graphics acceleration, remain more limited compared to commercial alternatives.
Recent versions have also introduced support for features such as virtual TPM, making it easier to run newer operating systems, including Windows 11.
VirtualBox: Interface and use(Image credit: Oracle // Future)VirtualBox uses a familiar, structured interface centered around a main dashboard for managing virtual machines and a detailed settings panel for configuration. Compared to earlier versions, the interface shows clear signs of improvement, with a more organized layout and better separation of system and machine-level tools.
That said, the overall design still feels more functional than refined. While navigation is logical once you understand where everything is, the experience lacks the level of polish and guidance seen in competing platforms, particularly for less experienced users.
Creating a virtual machine is handled through a guided setup process that covers operating system selection, resource allocation, and storage configuration. The process is generally straightforward, although certain steps such as attaching installation media or adjusting system parameters require a basic understanding of virtualization concepts.
In day-to-day use, the experience is stable but not always seamless. During testing, interaction within the virtual machine worked reliably for basic tasks, but usability is affected by small friction points, including mouse and keyboard capture behavior, which can feel unintuitive at first. While these issues can be managed with experience, they highlight the platform’s more technical orientation compared to more streamlined alternatives.
VirtualBox: Performance(Image credit: Oracle // Future)In use, VirtualBox delivers adequate performance for basic virtualization tasks, but it does not match the consistency or responsiveness of more polished alternatives. During testing, the virtual machine booted reliably and handled light workloads such as web browsing and system navigation without major issues.
However, performance can become less stable under heavier use. Applications may take longer to respond, and overall system interaction can feel less fluid compared to competing platforms. This is particularly noticeable in graphics handling, where VirtualBox’s limited acceleration capabilities restrict its suitability for more demanding workloads.
Resource usage is another factor to consider. Running a virtual machine requires careful allocation of CPU and memory, and on more modest systems, this can impact both host and guest performance. While the platform remains usable for everyday tasks, it is not optimized for high-performance scenarios.
Overall, VirtualBox performs well enough for testing environments, development setups, and general-purpose virtualization, but users seeking consistently smooth performance or advanced graphical capabilities may find stronger options elsewhere.
VirtualBox: SupportVirtualBox primarily relies on documentation and community-driven resources, including official manuals and user forums, as its main support channels.
Oracle does offer paid support through its enterprise programs, but this is limited to specific configurations and use cases. For most users, support is therefore largely self-service, which can make troubleshooting more time-consuming compared to commercial virtualization platforms with dedicated support channels.
VirtualBox: The competitionVirtualBox operates in a competitive space alongside tools such as VMware Workstation and Parallels Desktop, both of which offer similar core virtualization capabilities but target slightly different user needs.
Recent changes, including VMware making its desktop hypervisors free for personal use, have significantly increased competition in this space.
VMware Workstation is often seen as the more polished alternative, with stronger integration across enterprise environments and broader ecosystem support. While VirtualBox has largely caught up in terms of core features, VMware still tends to offer a more refined experience and better integration with other VMware products.
Parallels Desktop, on the other hand, focuses more on ease of use and performance, particularly on macOS systems. It offers tighter system integration and more seamless workflows, although this comes at a cost, unlike VirtualBox’s free and open-source model.
In practice, VirtualBox remains a strong option for users who prioritize cost and flexibility, while VMware and Parallels are often better suited to those who need higher performance, deeper integration, or a more streamlined user experience.
VirtualBox: Final Verdict(Image credit: Oracle // Future)VirtualBox remains one of the most accessible virtualization tools thanks to its free and open-source model. It covers the essentials well and offers a high degree of flexibility, but the experience still lacks the polish and consistency of commercial alternatives. While it performs reliably for basic tasks, users looking for smoother performance or a more intuitive interface may be better served elsewhere.
Proxmox VE is often listed among the best virtual machine software options, although it belongs to a different category than most desktop virtualization tools. Rather than running as an application inside Windows, macOS, or Linux, it is designed as a server virtualization platform that manages workloads through a web-based interface.
At its core, Proxmox VE combines KVM for full virtual machines with LXC containers for lighter workloads. This gives users the option to run complete operating systems when needed, while also deploying more efficient containerized services where a full VM would be unnecessary. That combination is one of the main reasons Proxmox has become popular in homelab environments, where users often want to run many services on limited hardware.
The platform has also gained momentum because of changes in the broader virtualization market. VMware remains a powerful enterprise platform, but licensing and ecosystem changes have made many homelab users and smaller organizations look for alternatives. Proxmox does not replace VMware in every enterprise scenario, but it offers a strong mix of flexibility, cost control, and practical capability.
This makes Proxmox VE particularly interesting for users who want to move beyond basic desktop virtualization. It is not the easiest tool in this category, but it is one of the most capable once the underlying concepts are understood.
Proxmox VE: Plans and pricingProxmox VE is free to download and use, which is one of its biggest advantages. There are no per-VM, per-core, or per-user licensing fees for the core platform, and users can install it on their own hardware without paying for a traditional software license.
The commercial model is built around annual subscriptions, priced per physical CPU socket. This is an important distinction, especially when compared with platforms that price around cores, editions, or broader enterprise bundles. For Proxmox VE, the number of cores on a processor does not change the subscription count.
The current subscription tiers start with Community at €120 per year per CPU socket, which provides access to the enterprise repository and community support. Basic costs €370 per year per CPU socket and adds three support tickets with a one-business-day response time. Standard costs €550 per year per CPU socket and includes 10 support tickets with a four-hour response time for critical requests within a business day. Premium costs €1,100 per year per CPU socket and includes unlimited support tickets with a two-hour response time for critical requests within a business day. All prices are listed as net prices, with VAT added where applicable.
This does not mean that free users are locked out of the core platform. The main virtualization features, including virtual machines, containers, clustering, high availability, and live migration, remain available without a paid subscription. Free users can use the no-subscription repository, although production environments will generally be better served by the enterprise repository and vendor-backed support.
Free installations also display a “no valid subscription” notice when logging into the web interface. This is a familiar Proxmox quirk rather than a functional limitation, but it is worth mentioning because almost every free user will encounter it.
In practice, Proxmox’s pricing model is one of the reasons it has gained more attention in recent years. Homelab users can run the platform at no cost, while businesses can add support without moving to a per-core licensing model. That makes Proxmox particularly attractive for users evaluating alternatives to VMware, although organizations still need to consider support, skills, migration planning, and operational risk rather than looking only at the license cost.
Proxmox VE: Features(Image credit: Proxmox // Future)Proxmox VE provides a broad set of features that go well beyond basic VM creation. The platform integrates KVM virtual machines, LXC containers, software-defined storage, networking, clustering, and high-availability tools into a single environment. This gives it a level of scope that is closer to infrastructure management than traditional desktop virtualization.
The support for both VMs and containers is particularly important. Full virtual machines remain useful when complete operating system isolation is needed, while LXC containers offer a lighter way to run services with lower overhead. For users running many small services in a homelab, this can be a major advantage over platforms that focus only on full virtual machines.
Storage is another major part of the platform. Proxmox can work with technologies such as ZFS, LVM, NFS, iSCSI, and Ceph, depending on the deployment. This flexibility is powerful, but it also requires care. Unlike desktop virtualization tools, where storage is often abstracted away, Proxmox expects users to understand how their storage choices affect performance, snapshots, replication, and reliability.
Backup integration is also a strong point. Proxmox Backup Server adds support for efficient backup workflows, including incremental and deduplicated backups. This has become an important part of the Proxmox ecosystem, especially for users who want a backup approach designed around virtual machines and containers rather than a generic file-based tool.
Clustering and high availability extend the platform further. Users can group multiple nodes together, migrate workloads, and design environments that are more resilient than a single standalone host. These features are valuable, but they require planning and are not as simple as creating a local VM on a desktop hypervisor.
Proxmox VE: Interface and use(Image credit: Proxmox // Future)Proxmox VE is managed primarily through a browser-based interface. This is one of its biggest practical advantages, because most common tasks can be handled without installing a separate management application. The interface provides access to nodes, virtual machines, containers, storage, networking, logs, and tasks from one central view.
The design is functional rather than polished. Compared to VMware’s more refined enterprise tools or desktop applications such as Parallels and VMware Workstation, Proxmox can feel more technical and less guided. However, the layout is logical once the main concepts are understood, and common actions such as creating a VM, opening a console, checking storage, or viewing node resources are easy to reach.
Creating a virtual machine follows a structured wizard, but the process still assumes that users understand ISO images, storage targets, CPU allocation, memory, networking, and disk formats. This is not difficult for experienced users, but it is a noticeable step up from tools that automatically hide most of these decisions.
The same applies to containers and networking. LXC containers are efficient and powerful, but users need to understand how they differ from virtual machines. Networking can also become complex, especially when moving beyond a simple bridged setup into VLANs, software-defined networking, or clustered environments.
For homelab users and administrators, this level of control is part of the appeal. For casual users who only want to run another operating system occasionally, it may feel like too much infrastructure for the task.
Proxmox VE: Performance(Image credit: Proxmox // Future)Proxmox VE can deliver strong performance, particularly when installed directly on suitable hardware. Because it is built around KVM and runs as a server virtualization platform rather than a desktop application, it avoids some of the overhead and friction associated with Type 2 hypervisors.
That said, performance depends heavily on hardware, storage design, and configuration. A well-configured Proxmox system can run virtual machines and containers efficiently, but poor storage choices, unsuitable networking, or underpowered hardware can limit the experience quickly. This is especially true when using ZFS, Ceph, or more advanced replication setups, where configuration decisions have a direct impact on performance.
Containers are one of Proxmox’s strongest performance-related advantages. LXC workloads are lighter than full virtual machines and can help users run more services on the same hardware. This matters in homelab and small infrastructure environments, where memory and storage are often limited.
GPU passthrough is also available and can be useful for advanced users who want to assign hardware to specific workloads. However, it requires compatible hardware and additional configuration, so it should not be treated as a beginner feature.
In longer-term use, Proxmox is often praised for stability, especially in homelab scenarios. Once configured properly, it can provide a reliable base for running persistent workloads, although it remains less polished than VMware in some areas. That balance is important: Proxmox performs well, but it rewards users who understand the platform rather than those expecting a fully guided experience.
Proxmox VE: SupportProxmox has extensive documentation, an active community, and a growing ecosystem of guides, scripts, and third-party resources. This community activity is one of the reasons the platform has gained momentum among homelab users and smaller organizations.
Official support is tied to paid subscriptions, which also provide access to the enterprise repository. For businesses, this model makes sense because it provides a clearer support path and more conservative update source. For individual users, community documentation and forums will often be the main support channel.
This is one area where expectations matter. Proxmox offers strong value, but free users should not expect the same support experience as customers of a fully commercial enterprise platform. The platform is usable without a subscription, but production environments should consider the support model carefully.
The broader ecosystem has improved. Proxmox Backup Server strengthens the native backup story, and third-party backup vendors have started adding support for Proxmox environments. This makes the platform easier to consider for more serious deployments than it was in the past.
Proxmox VE: The competitionProxmox VE competes most directly with VMware vSphere and ESXi in infrastructure environments, although it is also often discussed by users moving beyond desktop tools such as VirtualBox, VMware Workstation, and Hyper-V.
Compared to VMware, Proxmox offers a more accessible cost structure and a stronger appeal for homelabs, smaller deployments, and users who prefer open-source infrastructure. It also has advantages in container support through LXC, which gives it a useful middle ground between full virtual machines and lighter service deployments.
VMware still has strengths that Proxmox has not fully matched. Its enterprise ecosystem remains more mature, and areas such as advanced storage, polished management tooling, and large-scale enterprise support are still important differentiators. For large organizations with complex requirements, VMware may remain the safer and more familiar choice.
Hyper-V remains relevant for Windows-centric environments, especially where integration with Microsoft infrastructure matters. However, Proxmox is more flexible for users who want an open-source server virtualization platform with strong Linux foundations.
In practice, Proxmox VE is best suited to users who want serious virtualization without commercial licensing pressure and who are willing to learn the platform properly. It is not the easiest tool in the category, but it offers one of the strongest combinations of value, flexibility, and control.
Proxmox VE: Final VerdictProxmox VE is one of the strongest open-source virtualization platforms available for homelab users, small infrastructure environments, and users who want more control than desktop virtualization tools can provide. It combines KVM virtual machines, LXC containers, clustering, storage, networking, and backup integration into a single platform, making it far more ambitious than tools such as VirtualBox or VMware Workstation.
That strength also defines its limitations. Proxmox is not designed as a simple desktop application. It is installed as a server-focused operating environment, managed through a browser, and built around concepts such as nodes, storage pools, bridges, containers, and clusters. Users familiar with Linux and infrastructure tools will appreciate the control, while beginners may find the learning curve significant.
For users willing to work through that complexity, Proxmox VE delivers excellent value. It is free to download and use, has strong community momentum, and offers a capable alternative to commercial virtualization platforms. It still lacks some of VMware’s enterprise polish and ecosystem depth, but for homelabs and smaller deployments, it is a serious and increasingly compelling option.
For a simple device, there’s a lot going on with the Google Fitbit Air. People feel very strongly about it, for better or for worse, and there’s been a lot of chatter and interest surrounding its release. My experience actually wearing the device has generally been very positive, with tracking accuracy comparable to that offered by my Apple Watch Ultra 3, which is pretty much the gold standard for wrist-based health tracking. Metrics relying on the tracker’s onboard heart-rate monitoring are reliable, matching the Apple Watch closely during work, rest, and exercise during my week with the Fitbit Air.
Set-and-forget trackers are clearly having a moment. Oura has released the Oura Ring 5 just one year after the Ring 4, and Whoop’s success has given rise to a number of copycats from brands looking to recreate the experience of a distraction-free screenless ‘focus band’ for a less premium price.
Google is one such copycat, but the screenless, slender form factor suits the Fitbit brand — the original Fitbit was a digital pedometer — down to the ground. It speaks to the core of what Fitbit used to be, before it became just another company churning out mediocre smartwatches running a limited proprietary operating system. Your Fitbit was always meant to be a discreet little device, and devices don’t come more discreet than the Google Fitbit Air. Weighing just 12g and using a very slender 17mm-wide band, the Fitbit Air is a lovely and (crucially) comfortable device to wear and use. It’s much more comfortable to wear during sleep than any full smartwatch I’ve ever tried (and I have tried a lot), or even the Whoop.
However, it’s hard to separate the Fitbit Air from the Google Health app, with Google’s redesign of the Fitbit app causing particular ire amongst Fitbit users. The app is a bit of a mess, and not intuitive to use, with features dotted all over the place. It feels like it’s designed to primarily function as a home for the AI Health Coach chatbot, which is very intelligent and perhaps the best in-app AI assistant I’ve tried, but it’s not the best way to operate a health app. Whoop’s balance of AI and on-page metrics is much better.
If you’re looking for a consistent screenless focus band to track different sorts of workouts like gym, sports, and yoga, alongside sleep, heart health and general wellness, you can use the Google Fitbit Air as is, paying just the up-front price, and keep your tracking simple.
Whether or not you can get onboard with the Premium option will depend on how much you like chatbots — I found its flexibility immensely helpful, but its constant chirpy summaries and insistence on hiding my data inside walls of text became annoying, so it’s a mixed bag for me. Overall, though, this is the best, most interesting Fitbit to have been released in years.
Google Fitbit Air: Price and availabilityThe Google Fitbit Air costs $99.99 / £84.99 / AU$199, and for that you get the tracker, a band of your choice, and a charger specific to the Google Fitbit Air — proving once again that Google seems to be allergic to making a charger that’s compatible with more than one device.
The Google Health Premium subscription, which gives you access to Google’s AI Health Coach, costs $9.99 / £7.99 / AU$14.99 a month, or $99.99 / £79.99 / AU$140 annually. Existing Google AI Pro members get it at no extra cost.
For comparison, the cheapest Apple Watch SE 3 starts at $249 / £219 / AU$399, while Whoop’s complex pricing structure begins at £169 / $199 / AU$299 per year for the lowest tier. The Google Fitbit Air’s pricing is cheap for what you get, with the Health Coach as an optional add-on rather than a mandatory subscription.
The Google Fitbit Air’s design can be split into two components: the physical device, which is excellent, and the new Google Health app, which is a bit of a misfire.
Let’s start with the positives. The Fitbit Air comprises the tracker itself, and a wraparound band in a choice of three styles — a silicone Active band, the woven Performance Loop, or the polyurethane (pleather) Elevated Modern band. Each comes with their own color options, and a plastic clasp. On the underside of the tracker are the optical heart rate sensor, skin temperature sensor, and an accelerometer and gyroscope for counting steps.
It weighs just 12g, even with the Performance Loop strap, so it’s light and easy to wear, which is crucial for sleep tracking. I wore it on my right wrist, with a watch on my left during the day, and I didn’t feel like an obnoxious techie: unless someone looks closely, it just looks like a wristband, with the lack of a screen helping here. The Performance Loop strap that came with my review unit is the best-looking of the three options in this respect, but none of them look bad.
The tracker also has a haptic vibrate function — if you set an alarm in the app, this can be disabled with a tap on the top of the device. And that’s pretty much all the interaction you have with the sensor and band as a whole; everything else, as with one of the best smart rings or other screenless tracking options, is done via the app.
(Image credit: Future)The app is where Google’s design falls down. Split into four tabs — Today, Fitness, Sleep and Health — the Google Health app features a dashboard with key metrics at the top, and insights or libraries of content below it.
But with information scattered across a quartet of tabs, it’s hard to find certain granular metrics or content you’re looking for compared to the old Fitbit app. I searched for Mindfulness content for 10 minutes before finding the five-minute meditation I was after, for example, and I often ended up starting new chats with the AI coach rather than resuming a chat from my history. It’s just not intuitive to use.
What is right in your face, for Premium users, is the AI coach, which cloaks your metrics in paragraphs of cheery text, so it takes longer to get to your information. It’s clever, and we’ll get onto its functionality in a moment, but I wish it summarized and contextualized less, and just offered more 'glanceability'.
The Fitbit Air records the usual metrics you’d expect with a modern fitness tracker, including step count, heart rate, floors climbed, sleep stages, and so forth. Fitbit’s Daily Readiness score shows you how prepared your body is for exercise, based on recent activity and sleep scores, while it also surfaces weekly cardio goals, hydration, and basic food logging. It can offer irregular heart rate rhythm notifications, which is great for potentially diagnosing atrial fibrilation, and allows you to take an ECG scan manually to monitor your heart health.
Basic tracking is all the free version gets you; there’s no workout builder, mindfulness content, way to log sickness, or any other extras beyond the numbers. It doesn’t add any special metrics for runners, such as stride or cadence, as many of the best running watches do. For some users who just want the numbers, this will be fine, with no need to subscribe to the Premium tier.
For Premium users, food logging can be done via the AI Health Coach, by taking a picture of your food. It’s very good at logging packaged food (it was bang on logging a crinkled package of chips with the message ‘log this’ as a 74kcal snack, also breaking down macros and salt content) but can struggle with plates of homemade food, although a basic description such as ‘log this lentil curry’ is enough for it to provide an estimation. The more information you can provide (weight etc), the more detailed it gets.
It’s the best version of this feature I’ve tried across many different apps, but those without the Health Coach can log food manually, as you can in other apps like MyFitnessPal.
(Image credit: Future)The app also has access to Fitbit’s library of workout and meditation content, including individual moves, which you can use to build your own workout. Again, this is only available through the Premium subscription.
Through it all runs the AI Health Coach, which I actually found to be useful. Although there was no field to input illness as such, I typed my cold symptoms out to the Health Coach, and it remembered I was ill and adjusted its messaging and advice throughout the rest of the week based on my symptoms. I went to the gym without following one of the app’s pre-prescribed workouts, typed my sets and reps into the Coach’s ‘Ask Coach’ field, and it not only logged the workout, but suggested complementary routines to work different muscle groups for the rest of the week.
The AI Coach is a flexible ‘macro-feature’ that works well in conjunction with the rest of the app, and almost allows you to bypass the chaotic layout: you can just ask the Coach to serve you up what you need, which I’m sure was Google’s intent. Your use of the Coach will depend on your tolerance for chatbots: those who use Gemini or ChatGPT for everything will get a lot out of it, while those who loathe AI and just want numbers will likely loathe the Premium tier.
As I noted when I compared the Google Fitbit Air against the Apple Watch Ultra 3, the tracker performed well during my 10K test run, at least for the metrics like heart rate and calorie count, which it can use its onboard sensors for. The metrics it uses my phone's GPS to estimate, like distance, were off significantly.
I’ve embedded the results below, but generally there was no statistically significant difference between heart rate or calorie estimations from the two devices. I'll be updating the review with confirmation of heart rate scores tested against a new Polar H10 chest strap, as my old testing unit has malfunctioned.
@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'); @import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,900;1,900&display=swap'); /* Reset & Base */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper *, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper *:before, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper *:after, #fv-chart-1780054953725-jxfr84byr-slideshow *, #fv-chart-1780054953725-jxfr84byr-slideshow *:before, #fv-chart-1780054953725-jxfr84byr-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper, #fv-chart-1780054953725-jxfr84byr-slideshow { font-family: 'Open Sans', sans-serif !important; } /* Main Wrappers */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } /* Slideshow Styles */ #fv-chart-1780054953725-jxfr84byr-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } /* Top Navigation Row (Redesign) */ #fv-chart-1780054953725-jxfr84byr-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-1780054953725-jxfr84byr-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-1780054953725-jxfr84byr-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1780054953725-jxfr84byr-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-1780054953725-jxfr84byr-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; } /* Slideshow Dropdown Navigation */ #fv-chart-1780054953725-jxfr84byr-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-1780054953725-jxfr84byr-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } /* Typography */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } /* Versus Chart */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } /* Image Comparison Styles */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-expand-btn, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-expand-btn:hover, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } /* Fullscreen State */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .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-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } /* Footer */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } /* Display Mode Controls */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } /* Legend */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } /* Multi-Value Legend */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } /* Chart Core Styles */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } /* Multi-Value Bar Logic */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } /* Stacked Bar */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } /* Grouped Bar */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; } /* Line Chart Grid */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } /* X-Axis */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */ margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } /* Shop The Look */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; transition: min-height 0.3s ease !important; overflow: hidden !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.fv-full-bleed .fv-stl-container { width: 100% !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.fv-full-bleed .fv-stl-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-image { display: block !important; width: 100% !important; height: auto !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-hotspot-container { position: absolute !important; z-index: 10 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-hotspot-btn { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 300ms !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-hotspot-btn:hover { transform: scale(1.1) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-hotspot-btn:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #000000 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-hotspot-btn[aria-expanded="true"] { background-color: #3b82f6 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-hotspot-pulse { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #2E6E93 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-stl-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; } @keyframes fv-stl-ping { 75%, 100% { transform: scale(2); opacity: 0; } } @media (max-width: 640px) { #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-hotspot-pulse { animation-fill-mode: none !important; } } /* Shop the look button */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-shop-all-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; height: 2.5rem !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; color: #111827 !important; padding: 0 1rem 0 3rem !important; border-radius: 0.25rem !important; font-weight: 700 !important; font-size: 0.875rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; border: none !important; cursor: pointer !important; transition: all 0.2s !important; z-index: 10 !important; display: flex !important; align-items: center !important; text-transform: uppercase !important; overflow: hidden !important; white-space: nowrap !important; max-width: calc(100% - 2rem) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-shop-all-btn span { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-shop-all-btn:hover { background-color: #ffffff !important; transform: scale(1.05) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; object-fit: cover !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; flex-shrink: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon { position: absolute !important; left: 0 !important; top: 0 !important; width: 2.5rem !important; height: 2.5rem !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: #ffffff !important; border-right: 1px solid #f3f4f6 !important; color: #1f2937 !important; flex-shrink: 0 !important; } /* All Products Modal */ #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr { position: fixed !important; inset: 0 !important; background-color: rgba(0, 0, 0, 0) !important; backdrop-filter: blur(0px) !important; -webkit-backdrop-filter: blur(0px) !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 99999 !important; pointer-events: none !important; transition: background-color 0.3s ease, backdrop-filter 0.3s ease, -webkit-backdrop-filter 0.3s ease !important; padding: 1rem !important; overflow: hidden !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr { position: absolute !important; padding: 0 !important; align-items: flex-end !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr.is-active { background-color: rgba(0, 0, 0, 0.2) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; pointer-events: auto !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-content { width: 100% !important; max-width: 42rem !important; max-height: 100% !important; display: flex !important; flex-direction: column !important; position: relative !important; background-color: rgba(255, 255, 255, 0.95) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border-radius: 1rem !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; overflow: hidden !important; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease !important; opacity: 0 !important; transform: scale(0.95) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr.is-active .fv-stl-all-products-content { opacity: 1 !important; transform: scale(1) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr.is-active .fv-stl-all-products-content { transform: translateY(0) !important; } /* V2 Bottom Sheet Style */ #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr.v2 { align-items: flex-end !important; padding: 0 !important; } @media (min-width: 640px) { #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr.v2:not(.mobile-view *) { justify-content: flex-end !important; } } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr.v2 .fv-stl-all-products-content { max-width: 100% !important; height: 85% !important; max-height: 85% !important; border-radius: 1.5rem 1.5rem 0 0 !important; transform: translateY(100%) !important; opacity: 1 !important; } @media (min-width: 640px) { #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr.v2:not(.mobile-view *) .fv-stl-all-products-content { max-width: 700px !important; border-radius: 1.5rem 0 0 0 !important; } } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr.v2.is-active .fv-stl-all-products-content { transform: translateY(0) !important; opacity: 1 !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 1.5rem !important; border-bottom: 1px solid #e5e7eb !important; flex-shrink: 0 !important; position: sticky !important; top: 0 !important; background-color: rgba(255, 255, 255, 0.8) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; z-index: 10 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-header { padding: 0.75rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-logo { height: 1.5rem !important; width: auto !important; object-fit: contain !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-logo { height: 1.25rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-title { font-size: 1.25rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-title { font-size: 1.125rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-close { width: 2rem !important; height: 2rem !important; border-radius: 9999px !important; background-color: rgba(0, 0, 0, 0.05) !important; display: flex !important; align-items: center !important; justify-content: center !important; border: none !important; cursor: pointer !important; z-index: 10 !important; color: #6b7280 !important; transition: all 0.2s !important; padding: 0 !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-close:hover { background-color: rgba(0, 0, 0, 0.1) !important; color: #111827 !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-list { list-style: none !important; padding: 1.5rem !important; margin: 0 !important; overflow-y: auto !important; flex: 1 !important; display: flex !important; flex-direction: column !important; gap: 0.75rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-list { padding: 0.75rem !important; gap: 0.5rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-item { margin: 0 !important; padding: 0.25rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-link { display: flex !important; align-items: flex-start !important; padding: 0.75rem !important; text-decoration: none !important; color: inherit !important; transition: all 0.2s !important; border-radius: 1rem !important; border: 1px solid transparent !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-link { padding: 0.5rem !important; border-radius: 0.75rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-link:hover { background-color: #ffffff !important; border-color: #e5e7eb !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-item.is-highlighted .fv-stl-all-products-link { background-color: #ffffff !important; border-color: #d1d5db !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #111827 !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-image-container { position: relative !important; margin-right: 1.25rem !important; flex-shrink: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-image-container { margin-right: 0.75rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-number { position: absolute !important; top: -0.5rem !important; left: -0.5rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; background-color: #0f172a !important; color: #ffffff !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 0.75rem !important; font-weight: 700 !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 0 0 2px #ffffff !important; z-index: 10 !important; font-family: sans-serif !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-number { top: -0.375rem !important; left: -0.375rem !important; width: 1.25rem !important; height: 1.25rem !important; font-size: 0.625rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-image-wrapper { width: 6rem !important; height: 6rem !important; border-radius: 0.75rem !important; overflow: hidden !important; background-color: #f9fafb !important; border: 1px solid #f3f4f6 !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-image-wrapper { width: 4rem !important; height: 4rem !important; border-radius: 0.5rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-image { width: 100% !important; height: 100% !important; object-fit: cover !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-placeholder { width: 2rem !important; height: 2rem !important; color: #d1d5db !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-placeholder { width: 1.5rem !important; height: 1.5rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-info { flex: 1 !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; justify-content: center !important; margin-top: 0.25rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-info { margin-top: 0 !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-brand { font-size: 0.625rem !important; font-weight: 700 !important; color: #6b7280 !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; margin: 0 0 0.375rem 0 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-brand { font-size: 0.5625rem !important; margin: 0 0 0.25rem 0 !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-name { font-size: 1rem !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 0.375rem 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.25 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-name { font-size: 0.875rem !important; margin: 0 0 0.25rem 0 !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-meta { display: flex !important; align-items: center !important; font-size: 0.875rem !important; margin-bottom: 0.375rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-meta { font-size: 0.75rem !important; margin-bottom: 0.25rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-price { font-weight: 700 !important; color: #111827 !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-sale-price { font-weight: 700 !important; color: #dc2626 !important; margin-right: 0.5rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-sale-price { margin-right: 0.375rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-original-price { color: #9ca3af !important; text-decoration: line-through !important; font-size: 0.75rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-original-price { font-size: 0.625rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-commentary { font-size: 0.875rem !important; color: #4b5563 !important; margin: 0 !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; overflow: hidden !important; line-height: 1.375 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-commentary { font-size: 0.75rem !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-action { width: 2.5rem !important; height: 2.5rem !important; border-radius: 9999px !important; background-color: #f9fafb !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; margin-left: 1rem !important; flex-shrink: 0 !important; border: 1px solid #f3f4f6 !important; transition: all 0.2s !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-action { width: 2rem !important; height: 2rem !important; margin-left: 0.75rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-action svg { width: 14px !important; height: 14px !important; } #fv-stl-all-products-modal-fv-chart-1780054953725-jxfr84byr .fv-stl-all-products-link:hover .fv-stl-all-products-action { background-color: #111827 !important; color: #ffffff !important; border-color: #111827 !important; } /* Image Annotation Styles */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; overflow: hidden !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.fv-full-bleed .fv-ia-container { width: 100% !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.fv-full-bleed .fv-ia-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-image { display: block !important; width: 100% !important; height: auto !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-node-container { position: absolute !important; z-index: 10 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-node-button { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1) !important; transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1) !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-node-button:hover { transform: scale(1.1) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-node-button.is-active { background-color: #2E6E93 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-pulse-ring { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #2E6E93 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-ia-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; } @keyframes fv-ia-ping { 75%, 100% { transform: scale(2); opacity: 0; } } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-static-tooltip { display: none !important; position: absolute !important; top: -10px !important; left: 50% !important; transform: translate(-50%, -100%) !important; background-color: rgba(255, 255, 255, 0.95) !important; padding: 10px !important; border-radius: 6px !important; box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important; width: max-content !important; max-width: 200px !important; font-size: 13px !important; color: #1f2937 !important; z-index: 20 !important; pointer-events: none !important; white-space: pre-wrap !important; line-height: 1.4 !important; border: 1px solid #e5e7eb !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-node-button:hover + .fv-ia-static-tooltip { display: block !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-logo-explore-bar { position: relative !important; width: 100% !important; display: flex !important; justify-content: center !important; align-items: center !important; min-height: 30px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-logo-explore-bar .fv-logo { margin: 0 auto !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-explore-wrapper { position: absolute !important; right: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-logo-explore-bar { flex-direction: column !important; min-height: auto !important; gap: 0.75rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-ia-explore-wrapper { position: static !important; align-self: flex-end !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-explore-btn { background-color: rgba(255, 255, 255, 0.95) !important; color: #1e293b !important; border: 1px solid #e5e7eb !important; border-radius: 9999px !important; padding: 0.5rem 1.25rem !important; font-size: 0.875rem !important; font-weight: 600 !important; font-family: sans-serif !important; display: inline-flex !important; align-items: center !important; gap: 0.5rem !important; cursor: pointer !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1) !important; transition: all 0.2s !important; pointer-events: auto !important; flex-shrink: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-explore-btn:hover { background-color: #ffffff !important; transform: translateY(-2px) !important; box-shadow: 0 6px 8px -1px rgba(0, 0, 0, 0.15) !important; color: #2E6E93 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-explore-btn svg { transition: transform 0.2s !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-explore-btn:hover svg { transform: translateX(2px) !important; } /* IA Modal Styles */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-active-modal-container { display: none !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-modals { display: block !important; position: static !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-modal-item { display: none !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-modal-item.is-active { display: flex !important; flex-direction: column !important; position: absolute !important; top: 1rem !important; right: 1rem !important; z-index: 20 !important; width: 18rem !important; max-width: calc(100% - 2rem) !important; background-color: #ffffff !important; padding: 1rem !important; border-radius: 0.75rem !important; box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important; border: 1px solid #e5e7eb !important; border-top: 4px solid #2E6E93 !important; animation: fv-ia-fade-in 0.2s ease-out !important; gap: 0.75rem !important; max-height: 80% !important; overflow-y: auto !important; pointer-events: auto !important; } @keyframes fv-ia-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-modal-header { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; margin: 0 !important; gap: 0.5rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-node-title { font-size: 1rem !important; line-height: 1.25 !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-close-button { background: #f9fafb !important; border: 1px solid #e5e7eb !important; border-radius: 50% !important; width: 2rem !important; height: 2rem !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; cursor: pointer !important; padding: 0 !important; flex-shrink: 0 !important; transition: all 0.2s !important; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-close-button:hover { background: #e5e7eb !important; color: #111827 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-node-description { font-size: 0.875rem !important; color: #374151 !important; margin: 0 !important; line-height: 1.625 !important; white-space: pre-wrap !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-ia-node-description { font-size: 0.875rem !important; } /* Error Handling */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-ia-empty { display: flex !important; align-items: center !important; justify-content: center !important; height: 200px !important; background-color: #f1f5f9 !important; color: #64748b !important; border: 2px dashed #cbd5e1 !important; border-radius: 0.5rem !important; } /* Countdown Styles */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-container { display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; padding: 1rem !important; position: relative !important; width: 100% !important; box-sizing: border-box !important; font-family: Montserrat, sans-serif !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-header { text-align: center !important; margin-bottom: 2rem !important; z-index: 10 !important; width: 100% !important; display: flex !important; flex-direction: column !important; align-items: center !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-title { font-size: 1.25rem !important; font-weight: 900 !important; text-transform: uppercase !important; letter-spacing: 0.05em !important; margin: 0 !important; font-style: italic !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-subhead { font-size: 1.125rem !important; font-weight: 900 !important; text-transform: uppercase !important; letter-spacing: 0.05em !important; margin: 0.25rem 0 0 0 !important; font-style: italic !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-timer-wrap { display: flex !important; flex-direction: column !important; align-items: center !important; width: 100% !important; max-width: 64rem !important; z-index: 10 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-labels { display: flex !important; justify-content: center !important; width: 100% !important; margin-bottom: 0.5rem !important; padding: 0 0.5rem !important; font-size: 0.75rem !important; font-weight: bold !important; text-transform: uppercase !important; letter-spacing: 0.05em !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-labels > div { flex: 1 !important; text-align: center !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-box { position: relative !important; width: 100% !important; border-top: 6px solid #333 !important; border-bottom: 8px solid #333 !important; padding: 1rem 0 !important; background: linear-gradient(to bottom, #1f2937, #000000) !important; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-digits { display: flex !important; justify-content: center !important; font-size: 1.75rem !important; font-weight: 900 !important; letter-spacing: 0em !important; font-family: monospace !important; color: #fff !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-digits > div.digit-box { flex: 1 !important; text-align: center !important; white-space: nowrap !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-digits > div.colon { flex: 0 0 auto !important; opacity: 0.5 !important; position: relative !important; top: -2px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-spike-l { position: absolute !important; left: -15px !important; top: 50% !important; transform: translateY(-50%) !important; width: 0 !important; height: 0 !important; border-top: 15px solid transparent !important; border-bottom: 15px solid transparent !important; border-right: 15px solid #374151 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-spike-r { position: absolute !important; right: -15px !important; top: 50% !important; transform: translateY(-50%) !important; width: 0 !important; height: 0 !important; border-top: 15px solid transparent !important; border-bottom: 15px solid transparent !important; border-left: 15px solid #374151 !important; } @media (min-width: 600px) { #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-container { padding: 2rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-title { font-size: 1.75rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-subhead { font-size: 1.25rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-digits { font-size: 2.25rem !important; letter-spacing: 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-labels { font-size: 0.875rem !important; padding: 0 1rem !important; margin-bottom: 1rem !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-box { padding: 1.5rem 0 !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-digits > div.colon { top: -4px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-spike-l { left: -20px !important; border-top-width: 20px !important; border-bottom-width: 20px !important; border-right-width: 20px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-spike-r { right: -20px !important; border-top-width: 20px !important; border-bottom-width: 20px !important; border-left-width: 20px !important; } } @media (min-width: 768px) { #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-digits { font-size: 3.5rem !important; letter-spacing: 0.05em !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-countdown-digits > div.colon { top: -5px !important; } } /* Mobile / Forced Mobile View / Labels on Top */ #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster { width: 100% !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space { display: none !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title { font-size: 16px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title { font-size: 16px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title { padding: 0 8px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead { padding: 0 8px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-pie-container { flex-direction: column !important; gap: 1rem !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stacked-product, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-label, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-container, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { margin-left: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-label-space { display: none !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { padding-right: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 16px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-dropdown-title { font-size: 16px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-chart-title { padding: 0 8px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-chart-subhead { padding: 0 8px !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select-container { max-width: 100% !important; width: 100% !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-versus-select { font-size: 14px !important; width: 100% !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo, #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; }#fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ } #fv-chart-1780054953725-jxfr84byr-slideshow .fv-chart-wrapper.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } } [{ "@context": "https://schema.org", "@type": "Dataset", "name": "Overall Chart Title", "description": "Subhead to describe the test and what's being measured and why", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-05-29T11:42:33.728Z", "keywords": [ "Google Fitbit Air", "Apple Watch Ultra 3", "Average heart rate", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Google Fitbit Air – Average heart rate", "value": 158, "unitText": "" }, { "@type": "PropertyValue", "name": "Apple Watch Ultra 3 – Average heart rate", "value": 161, "unitText": "" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "Overall Chart Title", "description": "Subhead to describe the test and what's being measured and why", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-05-29T11:42:33.728Z", "keywords": [ "Google Fitbit Air", "Apple Watch Ultra 3", "Average Pace", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Google Fitbit Air – Average Pace", "value": 5.37, "unitText": "" }, { "@type": "PropertyValue", "name": "Apple Watch Ultra 3 – Average Pace", "value": 5.47, "unitText": "" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "Overall Chart Title", "description": "Subhead to describe the test and what's being measured and why", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-05-29T11:42:33.728Z", "keywords": [ "Google Fitbit Air", "Apple Watch Ultra 3", "Calories burned", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Google Fitbit Air – Calories burned", "value": 773, "unitText": "" }, { "@type": "PropertyValue", "name": "Apple Watch Ultra 3 – Calories burned", "value": 750, "unitText": "" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "Overall Chart Title", "description": "Subhead to describe the test and what's being measured and why", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-05-29T11:42:33.728Z", "keywords": [ "Google Fitbit Air", "Apple Watch Ultra 3", "Distance", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Google Fitbit Air – Distance", "value": 10.43, "unitText": "" }, { "@type": "PropertyValue", "name": "Apple Watch Ultra 3 – Distance", "value": 10.03, "unitText": "" } ]}] Previous 1 / 4 Next Average heart rate Google Fitbit Air 158 Apple Watch Ultra 3 161 050100150200 Average heart rate Data ProductValue Google Fitbit Air 158 Apple Watch Ultra 3 161 Average Pace Google Fitbit Air 5.37 Apple Watch Ultra 3 5.47 01.534.56 Average Pace Data ProductValue Google Fitbit Air 5.37 Apple Watch Ultra 3 5.47 Calories burned Google Fitbit Air 773 Apple Watch Ultra 3 750 0200400600800 Calories burned Data ProductValue Google Fitbit Air 773 Apple Watch Ultra 3 750 Distance Google Fitbit Air 10.43 Apple Watch Ultra 3 10.03 03.757.511.2515 Kilometers Distance Data ProductValue Google Fitbit Air 10.43 Apple Watch Ultra 3 10.03 window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { /* Global animation function for slideshow re-use */ window.fvAnimateCharts = function(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { /* Reset to 0 first to ensure animation triggers */ bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; /* Force reflow */ 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); /* Reduced initial delay */ }); } 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); }); } /* Execute */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { /* If in carousel/dropdown mode, hidden charts are display:none. */ /* We only animate what is visible. */ if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); } }); }; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); /* In slideshow mode, 'root' will be null because the container has '-slideshow' suffix. */ /* We handle that logic below. */ if (!root && !isSlideshow) return; /* Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper */ 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) { /* Fallback for when width isn't available yet (e.g., hidden tab) */ isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { /* Mobile if container is small OR if it's a physical mobile device (overriding fixed-width iframes) */ isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } /* Initial check */ checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } /* Always add window resize listener as a reliable fallback for DevTools and edge cases */ window.addEventListener('resize', checkMobileView); /* Labels on top handler */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { /* If there are multiple charts and we're not in a carousel/dropdown, we might have mixed types. */ /* But typically, labels-on-top is a global setting. We'll apply it initially, */ /* and showInternalChart will toggle it if needed. */ 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 === '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 leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper'); var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper'); 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); }); /* 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'); /* Text Elements */ 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 === 'Line') { /* Line chart animations if needed */ } else if (cType !== 'Pie') { window.fvAnimateCharts(chartWrapper); } /* Update labels-on-top based on current chart type */ var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === '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; /* Update Subhead and Caption */ 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 || ''; 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; /* Zoom state */ 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(); /* Max pan depends on how much the image is scaled beyond the wrapper */ 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; /* Prevent click after pinch */ } 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 }); } /* Expand/Close Logic */ 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.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; /* Load high-res images if available */ 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.preventDefault(); // Removed to allow text selection */ e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } /* Close on Escape */ 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 allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); /* Remove highlights */ var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); /* Remove min-height after transition */ 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'); /* Ensure container is tall enough */ var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } /* Highlight and scroll to item */ 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(); } } }); }); /* Shop All button */ if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); /* Ensure container is tall enough */ var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } /* Close button in all products modal */ if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } /* Close modals when clicking outside */ chartWrapper.addEventListener('click', function(e) { /* Only close if clicking on the wrapper or container, not inside a modal content */ 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 */ window.fvAnimateCharts(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 primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316'; var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff'; var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (true) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); /* Check if container exists to prevent errors */ if (slideshowContainer) { var currentSlideIndex = 0; var slides = slideshowContainer.querySelectorAll('.fv-slide'); var counter = slideshowContainer.querySelector('.fv-slide-counter'); var prevBtn = slideshowContainer.querySelector('.fv-nav-btn.prev'); var nextBtn = slideshowContainer.querySelector('.fv-nav-btn.next'); var dropdown = slideshowContainer.querySelector('.fv-slideshow-select'); function updateControls(index) { if (counter) counter.textContent = (index + 1) + ' / ' + slides.length; if (dropdown) dropdown.value = index; if (prevBtn) { if (index === 0) prevBtn.classList.add('disabled'); else prevBtn.classList.remove('disabled'); } if (nextBtn) { if (index === slides.length - 1) nextBtn.classList.add('disabled'); else nextBtn.classList.remove('disabled'); } } function showSlide(index) { if (index < 0) return; /* index = slides.length - 1; // Disable loop for linear nav style */ if (index >= slides.length) return; /* index = 0; */ currentSlideIndex = index; slides.forEach(function(slide, i) { slide.style.display = i === index ? 'block' : 'none'; if (i === index) { /* Re-trigger animations for the active slide */ var chartEl = slide.querySelector('.fv-chart-wrapper'); if (chartEl && window.fvAnimateCharts) { window.fvAnimateCharts(chartEl); } } }); updateControls(currentSlideIndex); } if (prevBtn) { prevBtn.addEventListener('click', function() { showSlide(currentSlideIndex - 1); }); } if (nextBtn) { nextBtn.addEventListener('click', function() { showSlide(currentSlideIndex + 1); }); } if (dropdown) { dropdown.addEventListener('change', function(e) { showSlide(parseInt(e.target.value)); }); } /* Initial setup */ updateControls(currentSlideIndex); /* Initial animation for the first slide */ if (slides.length > 0) { var firstChart = slides[0].querySelector('.fv-chart-wrapper'); if (firstChart && window.fvAnimateCharts) { setTimeout(function() { window.fvAnimateCharts(firstChart); }, 100); } } } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1780054953725-jxfr84byr', true); }); } else { initialize('fv-chart-1780054953725-jxfr84byr', true); } })();My experience of tracking my sleep with the same two devices — I wore one on each wrist — was similar to the above, with close enough metrics but slightly different outcomes.
The Fitbit Air’s total sleep time estimation was within five minutes of the Apple Watch, and sleep stages were similar. However, while my sleep score was 90 with the Apple Watch, Fitbit registered it as only 81, citing a 10-point difference in sleep quality. However, the Google Fitbit Air’s sleep tracking has consistently registered my wake-up times during testing, successfully recording my early-hours bathroom trips and my cat jumping on my legs at 5am.
Apple HealthFutureGoogle HealthFutureBecause of the lack of a screen, GPS, and specialist metrics, regular runners won’t get a whole lot out of the Fitbit Air. Compared to my usual wealth of data from Apple or the best Garmin watches, I found it lacking, and my GPS map — imported from my phone, as the Air has no GPS of its own —- inaccurate, off by 400m compared to the Apple Watch.
Battery life is excellent, exceeding the seven days the device promised. Charging is fast, with just five minutes delivering a full day of battery life, and a full charge taking around an hour. The device is very comfortable to wear, as previously mentioned — I’ve barely needed to take it off all week.
Category
Comment
Score
Value
Very well priced compared to rivals.
4.5
Design
Great tracker, flawed app.
3.5
Features
Limited free options, expansive Premium AI tools.
4
Performance
Excellent in most areas.
4.5
Google Fitbit Air: Should I buy?Buy it if...You want an affordable fitness tracker
The Google Fitbit Air is likely to shoot to the top of our best cheap fitness tracker list.
You like the AI chatbot interface
Google Health’s Premium service is entirely dependent on using and interacting with an AI companion.
You want a screenless focus band
Even at the basic free level, a slim screenless band to record all your metrics makes for a nice fitness tracking experience.
Don't buy it if...You’re a runner
You’ll be better served with one of the best Garmin watches.
Money is no object
For serial health optimizers looking to splash some cash, the Whoop app is better.
You’re concerned about data privacy
Google has pledged not to use Fitbit data for its ads business, but if you’re still concerned about feeding all your data to Google’s AI algorithms, maybe avoid the Fitbit Air.
Also considerWhoop 5.0 & Whoop MG
The Google Fitbit Air's biggest screenless rival.
Read our full Whoop review
Oura Ring 4
Another screenless favorite, albeit another premium subscription-based option.
Read our full Oura Ring 4 review
Samsung Galaxy Fit 3
Samsung's affordable fitness tracker, and a real bargain.
Read our full Samsung Galaxy Fit 3 review
How I testedI wore the Google Fitbit Air for eight days straight. I ran a 10K while wearing an Apple Watch Ultra 3 and (malfunctioning) Polar H10 chest strap, and a shorter run with a Huawei Watch Fit 5 Pro, as comparison testing alongside my usual workout routines. I also wore the Apple and Fitbit side-by-side during sleep. I tested its alarm, tried the features of its premium Health Coach, and used the app's workout and mindfulness content.
First reviewed: June 2026
KVM is often included among the best virtual machine software options, although it should be understood differently from most desktop virtualization tools. It is not an application that users simply open and operate on its own. KVM, short for Kernel-based Virtual Machine, is built into the Linux kernel and provides the low-level virtualization capability that allows Linux to run virtual machines with hardware acceleration.
In practice, KVM is usually part of a wider stack. QEMU handles device emulation and virtual machine execution, KVM provides hardware-assisted acceleration through the Linux kernel, and libvirt offers a management layer used by tools such as virt-manager, virsh, Cockpit, and other front ends. This is why users often see the combined term QEMU/KVM rather than KVM alone.
In a typical desktop Linux setup, this stack often consists of four parts: KVM for kernel-level virtualization, QEMU for device emulation, libvirt for management, and virt-manager for the graphical interface. This is why the experience users describe as “KVM” is usually shaped by several tools working together rather than by KVM alone.
This distinction is important because it shapes the entire experience. KVM can be very fast and reliable, but it does not offer the same integrated product feel as VMware Workstation or Parallels Desktop. Instead, it gives Linux users a powerful foundation that can be managed through different tools depending on the use case.
For users already comfortable with Linux, this is a major advantage. KVM fits naturally into the Linux ecosystem, works well on servers, and scales from local test environments to larger infrastructure platforms. For users expecting a guided desktop virtualization product, it may feel fragmented at first.
KVM: Plans and pricing(Image credit: KVM // Future)At the technology level, KVM has a licensing cost of $0. It is part of the Linux kernel and can be used with free tools such as QEMU, libvirt, and virt-manager. For individual Linux users, developers, and homelab environments, this means the core virtualization stack can be used without a paid license.
That does not mean every KVM-based environment is cost-free in practice. Support, packaging, management tools, and enterprise integration usually come from the Linux distribution or vendor stack around it. A user running KVM on a community Linux distribution may pay nothing, while an organization deploying KVM through an enterprise Linux platform will usually pay for the broader operating system and support subscription.
For example, Red Hat Enterprise Linux Server currently lists Self-support at US$383.90, Standard at US$878.90, and Premium at US$1,428.90 for one year. Ubuntu Pro is free for personal use on up to five machines, while paid plans list $25 per workstation per year and $500 per server per year. These figures are not KVM license fees, but they show how commercial support around a KVM-based environment is typically priced.
For individual users and homelab setups, KVM remains highly attractive because the core tools are available without a direct software cost. For businesses, the calculation is different. KVM can reduce licensing pressure, but organizations still need to consider support, management, automation, backup, monitoring, and staff expertise.
In practice, KVM’s pricing model is simple at the technology level but more variable at the operational level. The core virtualization layer is free, but the overall cost depends on whether users rely on community tools, enterprise Linux support, or a larger platform built on top of KVM.
KVM: Features(Image credit: KVM // Future)KVM provides the virtualization foundation, but most user-facing features come through the tools used with it. When paired with QEMU and libvirt, it can support a wide range of guest operating systems, including Linux, Windows, and BSD-based systems. Users can allocate CPU cores, memory, storage, and virtual hardware to each VM, while also taking advantage of hardware virtualization support from modern processors.
The QEMU/KVM combination is particularly important. QEMU provides the virtual machine environment and emulated devices, while KVM allows guest code to run with hardware acceleration. This reduces overhead compared to pure emulation and is one of the reasons KVM-based setups can perform very well on Linux hosts.
Libvirt adds the management layer that makes KVM practical for day-to-day use. Through libvirt, users can manage VMs locally or remotely, define storage pools, configure virtual networks, and control guest lifecycle operations. Virt-manager provides a graphical front end for this stack, making KVM much more approachable than using command-line tools alone.
KVM also supports more advanced use cases. GPU passthrough, PCI passthrough, headless operation, remote access, bridged networking, and integration into server platforms are all possible. These capabilities make it suitable for users who want more than a basic desktop VM tool.
However, many of these features require technical understanding. Passthrough depends on compatible hardware and correct IOMMU configuration. Storage pools and virtual networks can be powerful, but they introduce concepts that desktop users may not expect. KVM is flexible, but it does not hide the complexity as much as more consumer-focused tools.
KVM: Interface and use(Image credit: KVM // Future)KVM does not have one official interface. This is both a strength and a weakness. Users can manage KVM-based virtual machines through virt-manager, Cockpit, virsh, GNOME Boxes, Proxmox, OpenStack, or other tools, depending on the environment. That flexibility is useful, but it also means the experience is less consistent than with products that control the full stack.
For desktop Linux users, virt-manager is usually the most practical interface. It provides a graphical way to create and manage virtual machines, select installation media, assign CPU and memory, configure storage, and open guest consoles. It is not the most modern-looking interface, but it is functional and widely used.
While virt-manager remains a common and practical choice for desktop Linux users, web-based tools such as Cockpit are increasingly important in enterprise Linux environments, particularly where administrators prefer browser-based management.
Compared with VirtualBox, virt-manager can feel more technical at first. Concepts such as storage pools, NAT networks, bridges, SPICE display, VirtIO drivers, and libvirt permissions may require some learning. Once configured, however, many users find the workflow efficient and reliable, especially on Linux systems where KVM is already part of the platform.
The main challenge is that KVM does not always provide the same convenience features in the same obvious way as desktop-focused tools. Shared folders, clipboard behavior, display resizing, and graphical acceleration can require extra guest drivers or configuration. For a simple Linux VM, the experience can be smooth. For Windows guests or advanced graphical workloads, users may need more setup.
This makes KVM best suited to users who do not mind learning how the virtualization stack works. It is not hostile to new users, but it assumes more technical confidence than VirtualBox or VMware Workstation.
KVM: Performance(Image credit: KVM // Future)Performance is one of KVM’s strongest arguments. Because it is integrated into the Linux kernel and uses hardware virtualization extensions such as Intel VT-x and AMD-V, it can deliver very efficient virtualization on supported hardware. In many CPU and memory-heavy workloads, KVM-based virtual machines can feel close to native performance when configured properly.
This advantage is especially clear on Linux hosts. Instead of layering a separate virtualization product on top of the operating system, KVM works directly with the Linux kernel, while QEMU handles the surrounding virtual machine environment. The result is a stack that can be both flexible and efficient.
That said, performance depends heavily on configuration. The choice of storage backend, disk format, network mode, guest drivers, and display protocol can all affect the experience. VirtIO drivers are important for improving disk and network performance, especially with Windows guests. Poor configuration can make a KVM setup feel less impressive than its technical potential suggests.
This is particularly important because KVM handles CPU execution efficiently, while device and I/O handling still depend on the wider QEMU and driver stack. Using VirtIO drivers helps reduce overhead for storage and networking, but users who rely on default or poorly matched virtual devices may not see the same level of responsiveness.
Graphical workloads require particular care. For ordinary desktop use, SPICE or similar display options may be sufficient. Shared 3D acceleration through VirtIO-GPU, VirGL, and newer Venus-related work has improved the situation for some Linux guest scenarios, but it is still not as straightforward as the graphics experience in more desktop-focused virtualization tools. For Windows guests or heavier graphics workloads, GPU passthrough remains the more realistic advanced route.
For servers, development environments, Linux guests, and headless workloads, KVM is much easier to recommend. It is efficient, stable, and widely used in serious Linux virtualization environments. For casual local desktop virtualization, the performance may be strong, but the setup effort can outweigh the benefit for some users.
KVM: SupportKVM benefits from being part of the Linux ecosystem. Documentation is available through Linux kernel resources, distribution guides, libvirt documentation, QEMU documentation, and community tutorials. This makes information widely available, although not always centralized in one place.
For community users, support usually comes from distribution forums, project documentation, and user communities. This is often enough for common tasks such as creating VMs, enabling libvirt, configuring virt-manager, or installing VirtIO drivers. However, troubleshooting more advanced topics such as passthrough, bridged networking, or storage performance can require deeper Linux knowledge.
Enterprise support depends on the vendor or platform. Red Hat, Ubuntu, Oracle Linux, SUSE, and other enterprise Linux vendors may provide KVM-related support as part of broader Linux subscriptions. Platforms such as Proxmox also use KVM underneath but provide their own management and support model.
This makes support more fragmented than with a single commercial application. There is no single “KVM support plan” for all users. Instead, the support experience depends on how KVM is deployed and which tools or vendors surround it.
KVM: The competitionKVM competes in a different way from most desktop virtualization products. Against VirtualBox, it offers stronger Linux-native performance and deeper integration with the host platform, but VirtualBox can still be easier for users who want a simple graphical tool for occasional desktop VMs.
Compared with VMware Workstation, KVM offers open-source flexibility and strong performance, especially on Linux. VMware may still feel more polished for users who want a self-contained desktop application, particularly when running Windows guests with less manual configuration.
Against Hyper-V, KVM occupies a similar role in a different ecosystem. Hyper-V is the native virtualization layer for Windows Pro and enterprise environments, while KVM is the native virtualization foundation for Linux. The better choice usually depends less on raw capability and more on whether the host environment is Windows or Linux.
Proxmox VE is also important in this comparison because it builds a full virtualization platform around KVM. It does not replace KVM, but wraps it in a more guided web-managed environment with integrated storage, containers, backup, and clustering tools. For users who want KVM performance without assembling QEMU, libvirt, and storage tools manually, Proxmox may be more approachable, although raw KVM remains more flexible for users with highly custom workflows.
In practice, KVM is best for Linux users who want a powerful, flexible virtualization foundation and are comfortable choosing the tools around it. It is not the most polished option for casual users, but it remains one of the most capable and important virtualization technologies available.
KVM: Final VerdictKVM is one of the most important virtualization technologies in the Linux ecosystem, but it is not a conventional virtualization app in the same way as VMware Workstation, VirtualBox, or Parallels Desktop. Instead, it is a kernel-based virtualization layer that allows Linux to act as a hypervisor, usually working together with QEMU, libvirt, and front-end tools such as virt-manager.
This gives KVM strong performance, deep Linux integration, and a high degree of flexibility. For Linux users, developers, administrators, and infrastructure-focused environments, it can be a powerful and efficient way to run virtual machines. It also forms the foundation for larger platforms and stacks, including Proxmox VE and many Linux-based cloud or infrastructure environments.
However, that strength comes with complexity. KVM itself does not provide a single polished user experience, and the quality of the overall workflow depends on the surrounding tools. Virt-manager makes the stack much more approachable, but users still need to understand storage pools, networking, guest drivers, permissions, and the relationship between KVM and QEMU. For casual desktop users, VirtualBox or VMware may still feel easier. For Linux users who want performance and control, KVM remains one of the strongest options available.
The Wobkey Zen 65 is the third keyboard in the company's lineup, and the first to tackle the super compact 65% form factor. Available in two variants, the Lite ($125.99) and the Ultra ($149.99), it shares a CNC aluminum case across both models but differentiates on plate material, switch choice, and battery capacity.
The Wobkey Zen 65 Ultra model I’ve been testing here ships with Kailh Luna switches, an FR4 plate, and a 6,000mAh battery split across two cells, while the Lite has HMX Violet switches, a polycarbonate plate, and a single 3,000mAh cell instead.
Build quality on the Wobkey Zen 65 itself is superb, in keeping with some of the best keyboards, and it’s helped further by a premium unboxing experience with a couple of nice included extras. It arrives nestled in its own hard shell carrying case with a soft flannel storage bag, too. It’s a little thing, but it’s a nice touch and would do a great job of protecting the keyboard in a backpack if you move between setups.
The CNC aluminum case on the White Gold colorway in front of me is understated and elegant, though I’d say it’s closer to cream than white. The double-shot PBT keycaps feature subtle pastel blue and pink coloring and the whole thing would look right at home in an all-white desk setup. The legends on each key are bold and legible, though the lack of shine-through means you’ll need to ramp up the RGB backlighting brightness to have any real impact unless the room is dark.
Wobkey has fully committed to a minimalist aesthetic on the Zen 65 and bar the USB-C port on the back, there are almost no visible interruptions to its clean, flowing lines. That leaves it looking great.
(Image credit: Future)Unfortunately, though, it’s also at the expense of practicality because the power switch ends up tucked away under the Caps Lock key. I don’t just mean slightly obscured either: I mean you’ll need to completely remove the keycap in order to switch the board on or off. It’s a bizarre choice in both theory and practice, though admittedly I can’t remember the last time I actually turned a wireless keyboard off.
Much more clever is the hidden cubbyhole for the 2.4GHz dongle under the magnetic logo plate on the bottom. Could we not have tucked the power button in there too, Wobkey?
Weighing in at more than 3 lbs / 1.36 kg, this is a seriously dense keyboard for a 65% layout and I almost couldn’t believe how heavy it was for such a compact size. That heft keeps the board planted firmly on your desk during extended typing or gaming sessions, while also making the Zen 65 feel like a premium bit of kit.
The 240g internal brass weight is partly responsible, though it’s not just there for ballast. It sits between the PCB and battery compartment to absorb keystroke vibrations and it shifts the sound profile lower and deeper than the aluminum case alone would produce. The result is a smooth, satisfying thock that’s a pleasure to listen to. It’s not the quietest of boards but each clack is rounded off in a way that means it blends into the hum of an office rather than jumping out and grabbing attention.
(Image credit: Future)The Kailh Luna switches are linear and smooth, and the stabilizers across the spacebar, backspace, and shift keys are rock solid with zero rattle. They actuate at 0.07 inches / 1.8mm with just 1.6 oz / 45g of force, which is on the shorter end for these kinds of switches, and combined with the light spring weight can make the board feel a little twitchy. I had a noticeable number of accidental key presses during testing, particularly when in full typing flow. It’s not a major problem — there’s just not much margin for error if you clip a nearby key on your way to the one you wanted.
You’ll also need to adjust to the Zen 65’s fixed typing angle, which is set at seven degrees. The front edge isn’t overly high so I didn’t particularly struggle, but I’ll always campaign for some level of angle adjustment on any board.
The FR4 plate in the Ultra variant also contributes to a noticeably firm bottom-out. The total switch travel is on the short side too at 0.12 oz / 3.5mm, so there's less cushion before hitting the floor. Combined with the brass weight and foam dampening layers, the result is a controlled, defined stock keystroke rather than a plush one.
For gaming, those characteristics flip in the Zen 65's favor. The shorter actuation and light spring weight translate to faster inputs with less finger fatigue, and the firm bottom-out provides a clear feedback point that's easier to build muscle memory around. There’s a toggleable N-key rollover mode too that ensures every simultaneous keypress registers cleanly during complex combos.
(Image credit: Future)I say stock keystroke because while I enjoyed the out-of-the-box experience, there is plenty of room for fiddling with the Wobkey Zen 65. The ball-catch quick release pops the top case off in seconds with no tools and Wobkey includes parts to switch between four mounting configurations at various levels of rigidity. It's an impressive level of tunability for a pre-built board at any price, let alone this one, and the toolless case design means experimenting between them takes seconds rather than requiring a full teardown. If you’re new to taking apart your keyboard and dialing things in, this is a great choice.
Software customization is handled with the third-party VIA web app. It’s the same clunky setup experience you’ll find with other boards taking this approach and you’ll need to upload a JSON configuration file to unlock the full feature set. Once you’ve done this though, the feature set is rich with plenty of options to play with.
Tri-mode connectivity covers wired USB-C, 2.4GHz wireless, and Bluetooth 5.0, with support for up to three paired Bluetooth devices across both Windows and macOS (though annoyingly there are no Mac-specific alternate keycaps in the box). Switching between modes is handled through keyboard shortcuts, as are a number of other keyboard admin functions — Wobkey deserves credit for including a quick reference card in the box that clearly explains what does what. My favorite touch is checking the battery, where pressing the right key combination lights up the number row to show remaining charge. Neat.
One firmware oddity I encountered is the Caps Lock indicator LED, which illuminates the left half of the key in white, but doesn't turn off promptly when Caps Lock is disengaged. On multiple occasions during testing, the light remained on for anywhere up to 10 seconds after the function had already been disabled. I’m not going to lose sleep over it, but it’s a quirk I’d like to see corrected with a firmware update.
(Image credit: Future)Wobkey Zen 65 review: price and release dateThe Zen 65 originally launched via Kickstarter in June 2025 and is now available through various channels including the Wobkey store, though prices do seem to vary quite dramatically between outlets so it’s worth shopping around.
(Image credit: Future)Wobkey Zen 65 review: SpecsLayout
65% (67 keys)
Switches
Kailh Luna linear (hot-swappable, 3/5-pin)
Connectivity
Bluetooth 5.0, 2.4GHz wireless, USB-C wired
Polling rate
1,000Hz (2.4GHz and wired)
Actuation force
45g
Features
CNC aluminum construction, internal 240g brass weight, multi-layer foam dampening, 6,000mAh battery, NKRO, ball-catch quick release case, 4 mounting configurations
Compatibility
Windows / macOS / Linux
Software
QMK / VIA
(Image credit: Future)Should I buy the Wobkey Zen 65?Attribute
Notes
Score
Features
Tri-mode connectivity, four mounting configurations with ball-catch quick release cover, QMK/VIA support, 6,000mAh battery.
4/5
Performance
Deep, satisfying acoustics out of the box with rock-solid stabilizers. Slightly short actuation and bottom out.
4/5
Design
Understated clean lines with a high-quality finish. Hidden power switch is a strange choice.
4/5
Value
Reasonably priced considering what’s included. A great starter option for hardware customization.
4/5
Buy it if…You like to tinker (or think you might)
Four swappable mounting configurations, hot-swap switch sockets, and a toolless ball-catch case design make the Zen 65 one of the most easily adjustable pre-built boards available. Whether you want to experiment with different typing feels or simply swap switches down the line, the infrastructure is there.
You need a compact board that stays put
At 3.3 pounds, the Zen 65 Ultra is noticeably heavy for a 65% keyboard, and that's a feature. The brass weight and aluminum case keep it anchored to the desk during fast-paced gaming or aggressive typing sessions where lighter boards could slide about.
You appreciate an understated aesthetic
Wobkey has gone all out on clean lines with the Zen 65 and the result is a wonderfully understated board. The White Gold colorway I’ve been testing would be a pleasant addition to a crisp white setup.
You’re primarily on Mac
The Zen 65 supports macOS and has a dedicated Mac mode, but Wobkey doesn't include alternate Mac keycaps in the box. The Windows key functions as Command, but the legends won't match, which is an odd omission for a board that explicitly advertises cross-platform compatibility.
You prefer a softer, more cushioned typing feel
The Ultra's FR4 plate and shorter 3.5mm total switch travel produce a firm, defined bottom-out. If you favor a plusher keystroke with more give, the Lite model's polycarbonate plate would be a better fit.
You always turn your keyboard off after use
It’s a silly gripe, really, but banishing the power switch behind a keycap is a baffling decision. You’ll need to keep the keycap removal tool to hand just to shut things off.
Epomaker P65
If you like the idea of a CNC aluminum 65% board but want something a little more straightforward, the Epomaker P65 offers a similar build quality at $119. It lacks the Zen 65's toolless modding and mounting configurations, but it’s one of my favorites to type on and the sound profile is one of the best in the category. Read our full Epomaker P65 review.
Wobkey Rainy 75
If the 65% layout feels too compact but you’re keen on Wobkey, the Rainy 75 offers the same CNC aluminum construction and acoustic focus in a 75% form factor that retains dedicated function keys. Read our full Wobkey Rainy75 review.
My testing focused on the out-of-box experience using the default plate gasket mount configuration with stock Kailh Luna switches and keycaps. I used the Wobkey Zen 65 for extended writing sessions and gaming across both wired and wireless modes, and played around with configuration settings both with the VIA app and using onboard commands.
Capacity: 8TB (20TB)
Drive type: 3.5-inch spinning hard drive (HDD)
Interface: USB-C (USB 3.2 Gen 1, 5Gbps)
Power: Bus-powered via USB-C (requires 15W from host port)
Transfer speeds: Not officially specified
RGB: Customisable, Windows Dynamic Lighting compatible
Gaming certification: Officially designed for Xbox on PC
Backup software: Seagate Toolkit (Windows only)
Cable included: USB-C to USB-C, 50cm
Dimensions: 7.80 × 2.09 × 5.20in (198 × 53 × 132mm)
Weight: 2.84 lbs (1290g)
The FireCuda X Vault is a first when it comes to desktop hard drives. It essentially brings bus-powered USB-C to a 3.5-inch external hard drive, something that is common with the smaller 2.5-inch portable HDDs that have been around for years, but as yet untried for the larger format.
A quick look at the drive shows it has been primarily designed for the gaming market; however, as I often find, its specifications and performance also make it a great option for creative professionals. The gaming aesthetic is very obvious, but it’s not over-the-top, and the drive is more minimalist than most gaming-themed peripherals; in fact, its styling matches well with my Asus ProArt desktop case.
What I really like about the drive is that it uses a single USB-C cable for both power and data, which is obviously unique in the market at present. Power is delivered via the USB cable, eliminating the need for a power brick. Aside from reducing cable clutter, it also simplifies moving the drive between machines, which is handy when transferring large quantities of files. During the test period, I utilised the drive on both a MacBook Pro M1 Max running Final Cut Pro X and Premiere Pro, and an Asus ProArt PZ14 also running Premiere Pro.
In the test, the drive performed well on both Mac and PC, with the Windows machine definitely having the edge in terms of speed and compatibility. Although that performance difference was partly due to the older M1 Max’s ability to decode the video codec from the Canon EOS R5 C. In use, the drive showed decent transfer rates of around 214 MB/s read and 207 MB/s write across CrystalDiskMark, ATTO, AS SSD, and AJA benchmarks. Importantly, these speeds reflected use across three days of video editing.
While the performance was generally excellent for an HDD, there are two points: the first is the initial transfer speed of the footage to the drive, and the second is the Mac-incompatible backup software. Offloading 1.5TB of 4K Canon EOS R5 C footage from CFexpress Type B took roughly two hours, compared with ten to twelve minutes via a portable SSD. Then there’s the Seagate Toolkit, which is included with the drive for backup management, but it only works on Windows. If you’re a Mac user, then you will need to use your own backup solution. For photographers and videographers, this drive still offers superb value for money.
Seagate FireCuda X Vault: Price & availability(Image credit: Alastair Jennings)The Seagate FireCuda X Vault 8TB is available direct from Seagate in the US for $270 and from the UK site for £280. Currently, the 20TB model isn't in stock in the UK (but it's listed as £486), and doesn't appear available in North America yet.
I've also seem the 8TB drive sold for $320 on Amazon.com. Over on Amazon.co.uk, the 8TB is £253 and the 20TB is £438 - although there appears to be a labelling error. However, shipping takes between 3 and 7 months, so I'd opt for the official site if you can get quicker delivery.
The FireCuda X Vault's gaming theme is obvious but thankfully restrained, and its aesthetics actually look perfectly at home in the studio. The black exterior breaks from the usual box design that so often accompanies this type of drive, and the plastic fin slats reflect the cooling vents that I’ve often seen on high-performance creative drives. However, the RGB cutouts along the top are clearly aimed at a gaming audience rather than a creative one. Aesthetically, I do quite like the effect, and overall, the design is more minimalist than most gaming-themed hardware.
The size and weight are more in line with what I would usually expect from a 3.5-inch external drive, weighing in at 2.84 lbs (1290g), and measuring 7.80 × 2.09 × 5.20in (198 × 53 × 132mm). While it is obviously larger than a portable drive, it doesn’t dominate the workspace, and the flat top panel, despite the design, means that if you do need to place things on top, you can.
What marks this drive out from others is that it draws power and transfers data through a single USB-C cable. The cable in the box is standard, 50 cm, which is long enough to position the drive beside a monitor or at the edge of a desk without a cable coil, though I did find occasions when a longer cable would be useful.
USB-C has enabled a huge change in the face of hardware development, and the fact that just one cable is used with no other power required is a major step forward, and actually surprising that this hasn’t been done before. Of course, in order for the drive to function, the USB-C port you connect to must supply at least 15W. This means that, unlike many portable HDDs, which are widely backwards compatible with USB-A ports, this drive won’t be.
On both the MacBook Pro M1 Max and the Asus ProArt PZ14, the drive powered up without issue, and when running the MacBook Pro on battery without a mains connection, battery life was slightly reduced but not dramatically, and, as this is really a desktop drive intended to sit on a desk, the laptop is almost always plugged in during use.
Data transfer stability during sustained video editing appears excellent. As the drive worked hard to supply the data required by a variety of applications, the 1,290g chassis stays in with minimal vibration or noise. During a long video editing session across three days, the drive produced barely any audible noise. I could, on occasion, hear the spinning mechanism, but it was so low that it was hardly noticeable, particularly once audio from the edit was playing through the monitors.
After an extended test period across multiple workstations, PC and Mac, the build quality has held up well; after all, it was really just being transferred from one desk to another.
The bus-powered USB-C design is the FireCuda X Vault's unique feature, and one that, as I started to use the drive, seems well overdue. The use of the USB-C cuts out the need for a power brick, meaning one less cable and ultimately freeing up a plug socket. It also makes moving the drive between a MacBook Pro and a Windows laptop simple, as you only need to unplug a single USB-C cable and plug it into the next machine.
During the test period,, I found myself shifting between a MacBook Pro M1 Max and an ProArt PZ14 for different applications, and this ease made the larger-capacity drive as easy to use in the studio as a portable option, just with far more storage for the price.
During the test, I used the drive formatted as exFAT, which was out of the box and ensured cross-platform compatibility between macOS and Windows without the need for reformatting. Setup on both platforms was instant: plug in, mount, start working. As an example, the single-cable transfer of a large Premiere Pro project between the ASUS and the Mac was notably easier than it would have been with a drive requiring a separate power connection, and is something I would usually do with small SSD drives.
One feature of the drive is its RGB lighting, which supports Windows Dynamic Lighting. This is a gaming-focused feature that proved to be a minor aesthetic addition rather than a practical one.
Another game-focused feature is the Xbox on PC certification, which includes a one-month Xbox Game Pass Ultimate, which is aimed at gamers and is largely irrelevant for a content creation use case, though having the gaming library validation does offer some insight into the drive's intended use and the fact that it has been designed to handle sustained random reads.
An interesting addition is the Seagate Toolkit for backup management, which works well on Windows and lets you set up a backup schedule from a working footage folder to a NAS for long-term archive. It all seemed straightforward. However, Seagate Toolkit is not Mac-compatible, which is a notable gap for photographers and videographers working on macOS. Mac users will need to use Time Machine or a third-party backup solution for drive-level protection.
In this test, I’ve looked at the 8TB capacity, although there is a larger 20TB version. For a single drive option used as a working backup and rough-cut editing drive, 8TB provides a good balance for storing multiple concurrent projects over several months without needing to manage capacity.
The 20TB option would provide more headroom for longer-term archiving; however, managing 20TB on a single spinning drive introduces its own risks. The drive proved reliable, and if you have a 20TB backup drive, then why not? For photographers who shoot stills and moderate video, 8TB is a very workable starting point.
All benchmarks run on ASUS ProArt PZ14.
CrystalDiskMark Read: 214.24 MB/s
CrystalDiskMark Write: 207.64 MB/s
ATTO Read: 207.71 MB/s
ATTO Write: 201.26 MB/s
AS SSD Read: 202.82 MB/s
AS SSD Write: 198.78 MB/s
AJA System Test Read: 205 MB/s
AJA System Test Write: 197 MB/s
Getting started with the drive is fast; it’s essentially plug-and-play on both Mac and PC systems, and once the USB-C cable is connected, you’re ready to go. On the Mac, the drive icon appears on the desktop, and on Windows, it can be found alongside other drives in the OS.
To start testing the drive, I went straight to benchmark performance tests and found that across CrystalDiskMark, ATTO, AS SSD, and AJA System Test, the results were consistent. Read speeds across all four tools ranged from 202 MB/s to 214 MB/s, and write speeds ranged from 197 MB/s to 207 MB/s. This essentially shows reliable performance with minimal variation across test methods and, therefore, across the different real-world applications, file sizes, and formats you’re likely to use. More importantly, these speeds remained consistent throughout a three-day video editing test, with no thermal throttling or audible performance reduction.
To double-check the results, I left each AJA System Test Lite running for several hours without any real effect on the final result.
A large part of the real-world test was conducted while editing 4K video; the test footage was from a Canon EOS R5 C, and the files were recorded in 4K UHD (3840 × 2160) at 50 fps, in Canon XF-AVC Long GOP, YCC422 10-bit, in MXF format.
On the MacBook Pro M1 Max in Final Cut Pro X, there were occasional moments during editing when the timeline required the machine to catch up, primarily a codec-decoding issue on the older Mac rather than a drive-throughput problem.
I then tested a similar project in Premiere Pro on the ProArt PZ14 and found that it the edit was significantly smoother. For 1080p content and lighter 4K workflows, the FireCuda X Vault is a workable primary editing drive. For high-bitrate 4K with multiple grades and tracks, an SSD remains the better option, especially the LaCie Big8, which I was also reviewing at the same time.
One of the early indicators of speed was the initial transfer of files from a CFexpress Type B card to the drive. Transferring 1.5TB of Canon EOS R5 C footage from a CFexpress Type B card to the FireCuda X Vault took approximately two hours. The same transfer via a portable SSD took 10 to 12 minutes, just to highlight the difference between an HDD and an SSD.
I’ll also note that this is not an issue with the FireCuda X Vault; it’s working exactly as a 215MB/s spinning drive should, it’s just that SSD is that much faster. If you do look at it from that perspective, in speed terms, then the drive is better suited as a first backup destination after an initial fast offload to an SSD, rather than as the primary offload destination from a card.
Of course, as this drive is designed for gaming, I had to test it with a few Steam titles. After transferring the storage from my machine to the drive, it was time to load up a few games. The first was Indiana Jones and the Great Circle, and this, along with several other Steam titles, loaded from the FireCuda X Vault at speeds comparable to the Asus machine's faster internal SSD, showing that 215MB/s is more than adequate for game loading and save data, and that the gaming library certification is backed by genuine ability.
Noise levels throughout the test were minimal; to be honest, the noise from the video and games drowned out any noise, and it was so slow that I didn’t notice. Even under the sustained seek-and-write loads of a multi-hour video edit, the drive produced only a faint mechanical hum, inaudible over the monitor speakers.
The Seagate FireCuda X Vault 8TB, with its bus-powered USB-C design, is genuinely innovative, and it’s hard to see why this hasn’t been done before. It essentially makes the drive simpler with fewer cables, and while it's larger than a portable hard drive, it’s far cheaper for the capacity. After testing on a MacBook Pro M1 Max and an Asus PZ14, the single-drive design and ease of moving it around were obvious advantages over traditional desktop drives.
While the performance was significantly slower than that of an SSD, it was consistent, especially for the capacity and price. In the benchmark tests, the drive offered roughly 214MB/s read and 207MB/s write across multiple benchmarks and maintained those speeds in real-world tests. For photographers, this makes the FireCuda X Vault a great option as a working and backup drive, essentially offering a price per terabyte that external SSDs cannot match.
For videographers, the drive can handle 1080p and light 4K editing, but when it comes to high-bitrate 4K workflows, the limits are pushed, and as I discovered, the CFexpress Type B offload speed was approximately 2 hours for 1.5 TB, versus 10 to 12 minutes via a portable SSD. For video-heavy workflows, while far more expensive, a fast large-capacity SSD, such as the LaCie Big8, would be a better choice as the primary editing drive, then the FireCuda X Vault as an 8TB accessible project archive sitting on the desk.
Seagate Toolkit's lack of Mac compatibility is a clear gap that Seagate should address. Mac users make up a significant portion of the creative professional market that I think this drive will appeal to, although more creative users are moving away from Mac-based workflows due to the prohibitive costs.
At $270 / £280 for 8TB, this is exceptional value, and thankfully, as the gaming theme is restrained, the drive sits comfortably on a creative workstation without looking out of place. The FireCuda X Vault is a great desktop drive for PC gamers who want high-capacity game storage, and also a good choice for photographers who need accessible bulk working storage, and a useful archive and rough-cut editing drive for videographers, as long as your primary editing workflow runs on a faster internal or external SSD.
Value
8TB with bus-powered USB-C and excellent build quality
5
Design
Gaming aesthetic but understated and stylish
4
Features
Bus-powered USB-C is excellent; Seagate Toolkits backup being PC only is a shame.
4
Performance
Consistent performance at 215MB/s; CFexpress offload times show the HDD limitations on speed
4.5
Total
A useful desktop storage option for gamers, photographers and videographers
4
(Image credit: Alastair Jennings)Buy it if...You need high-capacity
At $270 / £280 for 8TB, the FireCuda X Vault offers a cost-per-terabyte that external SSDs can't match. For photographers archiving large amounts of images and video, the capacity makes it a great choice.
Keeps the desk clear
Bus-powered USB-C on a 3.5-inch drive is a first and a great feature. Not only does it keep your desktop tidy, but if you regularly move between a MacBook and a Windows machine, a single cable for swapping is far easier than moving data cables and power cables.
Don't buy it if...You need fast footage offload.
Offloading 1.5TB of 4K footage from a CFexpress Type B card took roughly 2 hours. While this gave me plenty of spare time, if deadlines are tight, this is not ideal.
You need cross-platform backup software on Mac.
Seagate Toolkit backup is Windows-only. If you’re a Mac user, then you will need to rely on Time Machine or a third-party backup solution.
For more storage options, we've tested the best portable SSDs around.
VMware Workstation Pro is often included among the best virtual machine software, particularly for users who prioritize stability, performance, and flexibility. Its long-standing presence in professional and enthusiast environments makes it a strong alternative to more basic free tools, especially for those who need a more consistent and feature-rich virtualization experience.
VMware Workstation Pro: Plans and pricingVMware Workstation Pro is now available free of charge, marking a significant shift from its previous licensing model. While earlier 2024 releases limited free access to personal use, subsequent updates expanded availability to a broader range of users, including commercial and educational environments.
The full Pro feature set is accessible without a license fee, although this comes with a trade-off. Free users do not receive direct technical support, and organizations that require guaranteed service levels must rely on enterprise agreements and support subscriptions.
VMware Workstation Pro: Features(Image credit: VMWare // Future)VMware Workstation Pro provides a comprehensive set of virtualization features designed for both development and testing scenarios. It supports a wide range of guest operating systems, including multiple versions of Windows and Linux, and allows users to allocate CPU cores, memory, and storage resources with a high degree of control.
Core functionality includes snapshots and cloning, enabling users to save system states and replicate virtual machines for testing or backup purposes. Networking capabilities are particularly strong, with support for NAT, bridged, and custom virtual network configurations, making it suitable for more advanced lab environments.
The platform also supports hardware-assisted virtualization and offers stable compatibility with modern operating systems, allowing users to run multiple environments in parallel without major limitations. These capabilities also make it a practical option for testing and sandboxing different environments, particularly when working with software that requires isolation from the host system.
VMware Workstation Pro also supports more advanced use cases, including running multiple virtual machines simultaneously and configuring more complex testing environments. This makes it particularly suitable for developers and IT professionals who need to simulate real-world scenarios across different systems.
VMware Workstation Pro: Interface and use(Image credit: VMWare // Future)VMware Workstation Pro uses a structured and relatively modern interface, with a central workspace for managing virtual machines and clearly organized configuration menus. Compared to more basic tools, the layout feels more polished and consistent, making it easier to navigate once familiar with the workflow.
Setting up a new virtual machine is a guided process, with predefined profiles for common operating systems that simplify configuration. In most cases, the platform automatically detects installation media and suggests appropriate settings, reducing the need for manual adjustments.
Once a virtual machine is running, interaction is smooth and responsive, with reliable mouse integration and display handling. Everyday tasks such as starting, pausing, or cloning machines are easily accessible, although the overall experience may still feel slightly complex for users without prior virtualization experience.
Accessing the software has become slightly more complicated than before, as downloads are now handled through the Broadcom support portal. This requires account registration and navigation through a less intuitive interface, which may feel unnecessary for a tool that is otherwise free to use.
VMware Workstation Pro: Performance(Image credit: VMWare // Future)In use, VMware Workstation Pro delivers a more consistent and responsive experience than many free alternatives. Virtual machines generally boot quickly and remain stable under typical workloads, particularly when running common Linux distributions or standard Windows environments.
Resource management is handled efficiently, allowing multiple virtual machines to run in parallel without significant slowdowns on capable hardware. While performance will always depend on the host system, VMware tends to make better use of available resources compared to simpler virtualization tools.
Graphics handling is generally more reliable than in many free alternatives, although the platform is not intended for demanding graphical workloads.
In longer sessions, VMware Workstation Pro tends to remain stable, even when running multiple virtual machines or switching between workloads. This consistency is one of its key advantages, particularly for users who rely on virtualization as part of their daily workflow rather than occasional testing.
However, the platform is not lightweight. Running multiple virtual machines or more demanding workloads can place noticeable strain on CPU and memory resources, making it less suitable for lower-end systems.
VMware Workstation Pro: SupportVMware Workstation Pro benefits from extensive documentation and a large user community, making it relatively easy to find guidance for most common issues. Official support is available through VMware’s enterprise channels, although it is primarily aimed at business users and paid support agreements.
For individual users, most troubleshooting relies on community forums, knowledge bases, and third-party resources. While this is sufficient for many scenarios, it may not match the level of direct support offered by some commercial alternatives.
VMware Workstation Pro: The competition(Image credit: VMWare // Future)VMware Workstation Pro operates in a competitive space that includes both free and commercial virtualization tools. Oracle VM VirtualBox remains the most direct free alternative, offering similar core functionality but with a less polished interface and more inconsistent performance.
Compared to VirtualBox, VMware Workstation Pro offers a more refined and stable experience, although it demands more system resources and may feel less accessible to beginners. VirtualBox remains a strong option for users who prioritize simplicity and open-source flexibility, but it often requires more manual configuration.
On macOS systems, Parallels Desktop continues to lead due to its tight system integration and ease of use, particularly for users who want a near-native experience when running Windows applications. VMware’s own Fusion product serves a similar role, although it typically appeals more to technical users.
Overall, VMware Workstation Pro positions itself as a middle ground, combining the accessibility of free tools with a level of polish and consistency that is closer to commercial solutions.
VMWare Workstation Pro: Final VerdictVMware Workstation Pro remains one of the most mature desktop virtualization platforms available, combining strong performance with a well-structured and feature-rich environment. The move to a free model makes it significantly more accessible, while its overall experience continues to feel more polished than many competing tools. It may not be the simplest option for beginners, but for users who need stability and flexibility, it stands out as a reliable choice.
The Ninja French Door Air Fryer and Countertop Oven is an efficient and flexible cooking appliance. It has 10 cook modes: Air Fry, Air Roast, Whole Roast, Bake, Pizza, Broil, Reheat, Dehydrate, Toast, and Bagel. You can quickly cook or heat up just about anything you can fit into its extra-large cooking area.
It pre-heats in seconds, and cooks your food faster than you would expect. Obviously we like fast-working appliances, but it also means you need to keep an eye on your food as it cooks. You can't just follow the directions on the prepared food box and walk away; I found that this appliance cooked some frozen items faster than the box directions indicated.
The Ninja French Door Air Fryer and Countertop Oven uses "Cyclonic Air Technology." It does allow for speedy all-over cooking and eliminates the need to rotate your food mid-cycle that many air fryer require. However, if you like to put foil and/or parchment paper down on your cook tray, make sure it's anchored down with food on all four corners. Otherwise, it will go flying up into the upper heat elements. Ask me how I know that.
Overall, I was very happy with the The Ninja French Door Air Fryer and Countertop Oven. While some parts of the foods got blackened while other parts remained pale, the difference wasn't enough to affect taste. Everything I made came out delicious.
Ninja French Door Air Fryer and Countertop Oven: price and availabilityThe The Ninja French Door Air Fryer and Countertop Oven is available at many major retailers both online and in stores. Find it at Amazon, Target, Best Buy, Walmart, Crate & Barrel, Ninja's own website, and more. It starts at $279.99 (about £210 / AU$420) but is currently only available in the US unless your import it.
The stainless steel version retails for $279.99 while the other shades are $20 more. It comes in four colors: Stone and Gold (mostly gold,) Black (with rose gold hardware,) Stainless Steel (as seen in my photos,) and Cyberspace (dark gray with gold hardware.)
Price
$279.99 (about £210 / AU$390)
Cooking functions:
Air Fry, Air Roast, Whole Roast, Bake, Pizza, Broil, Reheat, Dehydrate, Toast, and Bagel
Size (H x W x D)
13.5 x 15.8 x 16.5 inches / 34.3 x 40.1 x 41.9cm
Weight:
22.77lbs / 10.33kg
Accessories included:
5qt air fry basket, sheet pan, broil rack, recipe booklet
Color options:
Stone and Gold, Black, Stainless Steel, and Cyberspace
Ninja French Door Air Fryer and Countertop Oven: design and featuresThe Ninja French Door Air Fryer and Countertop Oven looks great on the counter. The French doors give it a more upscale look and the control dials are simple and uncluttered. I feared that French doors would require two-handed opening, but that's not the case. The doors work in tandem, so pulling or pushing either door handle moves both doors. The doors are glass, and there is a lightbulb inside, so you can easily see what's cooking.
(Image credit: Karen Freeman / Future)The power button is on the top left side of the control panel. On the right, a large dial spins to select mode, time, and temperature. Press that same dial to start and stop cooking. Next to the dial are four buttons: Temp/Shade, Mode, Time/Slices, and the light bulb.
The rest of the control panel is black when not in use, but lights up when you turn the oven on. It shows all of the cooking modes (Air Fry, Air Roast, Whole Roast, Bake, Pizza, Broil, Reheat, Dehydrate, Toast, and Bagel) and pertinent information for your current mode. For example, when you're toasting, the panel shows the number of slices and the shade you've chosen. If you're using one of the oven or air fry modes, the panel shows the time and temperature.
(Image credit: Karen Freeman / Future)The Ninja French Door Air Fryer and Countertop Oven does take up a fair bit of counter space, but since it replaces both a toaster oven and an air fryer, I didn't mind. It's quite spacious inside, it easily fits my favorite frozen pizza and could fit a modestly-sized chicken. Included accessories are a five-quart air fry basket, sheet pan, broil rack, and a recipe booklet. The interior cooking rack can be moved up or down to accommodate your desired foods. According to Ninja, the cooking surfaces do not contain PFAS. The crumb tray at the bottom is removable for easy cleaning.
(Image credit: Karen Freeman / Future)The Ninja French Door Air Fryer and Countertop Oven preheats in just 90 seconds and heats up to 450F / 232C. It cooks with cyclonic air, which does a couple of things. First of all, it cooks your food all over without you having to move your food around mid-cycle like you do with many air fryers. According to Ninja, the oven cooks up to 60% faster than conventional ovens and you can use 75% less fat than traditional frying in air fry mode.
This cyclonic air feature also means that if you like to place parchment paper or aluminum foil on your bake tray, you must use caution. The cyclonic air will suck it up into the heating element if you don't have it fully weighed down with food at every edge. Yes, I found that out the hard way. Luckily I was standing close by and cut the power before it caught fire.
(Image credit: Karen Freeman / Future)I tested many of the Ninja French Door Air Fryer and Countertop Oven's cooking modes. I had to start with toast, of course. You can adjust for the number of slices and the shade you like, so it's easy to have toast exactly the way you like it. It does take some trial and error. I first did a single slice at level three and got one very dark edge. Later, I did two slices at level four and they both came out perfect.
(Image credit: Karen Freeman / Future)I tested out Air Fry mode with a number of different foods. I made frozen French fries according to the package instructions (though I did end up adding a little more time) and they came out just right, crisp on the outside and soft and fluffy inside. Another time, I made frozen crinkle French fries. There were some very dark spots, but they tasted quite good.
Karen Freeman / FutureKaren Freeman / FutureKaren Freeman / FutureI also made some sweet potato fries from scratch in Air Fry mode. They don't look pretty, they are covered with dark spots, but I like them that way. They were delicious, nice and soft on the inside. I wouldn't say they were super crisp on the outside, but I barely used any oil. The more oil you use, the crisper your food turns out.
(Image credit: Karen Freeman / Future)I made tofu in Air Fry mode, with just a simple baking soda coating. It turned out beautifully, nice and crispy on the outside and soft inside.
(Image credit: Karen Freeman / Future)I made frozen veggies several times, in a number of different modes including both Air Fry and Air Roast mode. I find that the 'air' modes dried out the frozen vegetables a bit, which was what I wanted. Frozen veggies can be quite soggy when cooked in other ways, and I was very happy with how they turned out.
(Image credit: Karen Freeman / Future)I also made a one-pan meal in Air Roast mode. This included a veggie burger, frozen vegetables, and fresh vegetables. This came out great and only took 15 minutes.
(Image credit: Karen Freeman / Future)I didn't roast a whole chicken, but I did make a couple of chicken breasts in Whole Roast mode. They came out perfectly, nice and juicy, and I can't think of an easier and faster way to make chicken breasts.
(Image credit: Karen Freeman / Future)I made frozen pizza in Pizza mode. The first time, I followed the box instructions without watching, and it cooked so fast that it was nearly black at the end (though not too burnt to eat.) The second time, I watched it more closely and stopped it before the time the box indicated. This time it came out great. It's a bit dark around the edges, but it's a big, thick pizza and it was perfectly cooked in the center.
(Image credit: Karen Freeman / Future)I made some very simple 'bagels' in Bake mode. The dough is just Greek yogurt and self-rising flour. These came out amazing — golden brown on the outside and fluffy inside.
Karen Freeman / FutureKaren Freeman / FutureI tried out Reheat mode on two different restaurant leftovers: chicken parmesan and a quesadilla. Both reheated beautifully in just five minutes, without getting burnt or dried out at all.
Karen Freeman / FutureKaren Freeman / FutureI was continually surprised by how quickly the Ninja French Door Air Fryer and Countertop Oven cooked a variety of foods. While some foods did get a bit blackened around the edges, they never tasted burnt. Everything I made was thoroughly cooked in the middle and tasted great.
Attributes
Notes
Rating
Value
This is fairly pricey countertop appliance, though it does replace a toaster oven and air fryer.
4/5
Design
It looks nice enough on the counter and the controls are intuitive to use.
4.5/5
Performance
Baking, cooking, reheating, toasting, and air frying has never been faster or easier.
4.5/5
Overall
You do need to keep an eye on your food, but overall, I was impressed by its speed and efficiency.
4.5/5
Buy it ifYou want to save counter space
While the Ninja French Door Air Fryer and Countertop Oven does have a fairly large footprint, it eliminates the need for a separate countertop oven, toaster, and air fryer.
You want delicious food, fast
I kept being surprised by how quickly the Ninja French Door Air Fryer and Countertop Oven cooked both prepared foods and food from scratch.
You want to cook with less oil
You can make traditionally fried foods with little or even no oil.
Don't buy it ifYou're on a tight budget
You could get a traditional toaster oven plus a dedicated air fryer for a lot less money than this one appliance.
You prefer dedicated appliances
Some people really just prefer a stand-alone air fryer and a separate toaster or toaster oven.
You don't have room
This isn't the sort of appliance you can take on and off your counter to store away when not in use. It's a bit big and unwieldy for that.
Ninja French Door Air Fryer and Countertop Oven: also considerIf the Ninja French Door Air Fryer and Countertop Oven isn't for you, here are some other options you might consider.
Ninja Double Oven Air Fryer
Another all-in-one appliance you might like is the Ninja Double Oven Air Fryer. As the name implies, you can cook two separate items in different chambers at the same time.
Learn more in our full Ninja Double Oven Air Fryer review
Kalorik Vivid Touch Touchscreen Air Fryer
Are you more of a dedicated air fryer enthusiast? This one has a handy touch screen for all your favorite foods and a glass-front drawer so you can keep an eye on the contents cooking.
Check out my full Kalorik Vivid Touch Touchscreen Air Fryer reviewView Deal
Ninja Crispi 4-in-1 Portable Glass Air Fryer Cooking System
If you do want an air fryer that doesn't need to live on your counter, consider the Ninja Crispi. It's portable so you can even take it out with you to air fry or heat up food on the go. This is on our list of the best air fryers.
Read my full Ninja Crispi review
How I tested the Ninja French Door Air Fryer and Countertop OvenI cooked, heated, and reheated a variety of foods, both frozen prepared foods and fresh food from scratch. I used the Air Fry, Air Roast, Whole Roast, Bake, Pizza, Reheat, and Toast cycles multiple times. Over the course of a month, I used it daily, often multiple times per day. I made both fresh and frozen vegetables many, many times. I heated up frozen pizza. I made french fries, both from scratch and frozen, multiple times. I baked two-ingredient "bagels" many times. I reheated a couple of different restaurant leftovers. I air fried some tofu. I made chicken breasts and veggie burgers several times. I toasted bread just about daily.
Read more about how we test.
First reviiewed June 2026
Cape Fear was one of my most anticipated Apple TV shows of 2026, but I was also worried about it. Adapting such an iconic story is no easy task, as people will always end up comparing it to the original. That said, I was impressed by Nick Antosca's take on Max Cady and the terror he unleashes on everyone around him.
To give you a quick synopsis of Cape Fear, it follows Cady, a vicious and unreformed ex-convict who gets revenge on the two attorneys who put him behind bars. That's enough to send a chill down your spine, and it requires a really strong performance to stick the landing.
Fortunately, we get that thanks to Javier Bardem. It might be bold of me to say, but his take on Max Cady is my favorite thing he has ever done, because he left me feeling utterly terrified. Truly, he is deranged in this and brings so much to the role. A good villain is more than just scary, and he has it all: charm, charisma, and even certain moments where you feel sorry for him. It is a well-rounded, chilling performance indeed.
Amy Adams and Patrick Wilson star opposite him in great supporting roles as Anna and Tom Bowden, who are living an affluent and comfortable life when we first meet them. Nice house, nice pool, no deranged convict coming after them... yet.
When that threat does start looming, you're sure to be on the edge of your seat thanks to some superb tension building.
Amy Adams is terrorized by Javier Bardem in Cape Fear. (Image credit: Apple TV)I loved a lot about Cape Fear, but I had the chance to review six episodes, and I'm not entirely convinced it needs to be as long as 10 episodes. I'm happy to be proven wrong with a mind-blowing finale, but I did notice it was starting to suffer from some pacing issues at certain points.
There are also a few silly twists that may cause some division between viewers, and many of these seem to have been added in to keep the momentum going when things started to run out of steam. This is the main issue I have with Cape Fear; outside of that, I've been very impressed.
While not billed as a horror, it does lean into elements I know and love about the genre. I was surprised by some genuinely effective scares throughout, as well as some shocking scenes. This series does not hold back; it is just as intense as the 1991 movie, in case you had any doubts.
On top of that, it's very stylish and well filmed, especially when it comes to the more jarring moments. The series is visually stunning and has a lot of picturesque sets to offset the horrible things that happen within them. It really highlights how quickly Cady rips through this family's life and ruins the comforts they have been enjoying. According to the eerie repetition in the teaser trailer, they deserve this.
I think Cape Fear benefits from its weekly release schedule, rather than a full season drop. This is the kind of show you'll want to savor and tune in for once a week, as it may be too intense to binge all in one go. Some scenes are sure to stick with you and haunt your dreams.
Overall, it's a solid adaptation, and they've assembled a great cast to bring the story to life. It feels like another big win for Apple TV, which has already dipped its toes into horror thanks to Widow's Bay. I'm really excited to see what's next for one of the best streaming services.
If the answer is more Max Cady, I would not complain at all.
If you want the most all-encompassing, compromise-free storage for your shiny new Nintendo system, then the Nacon Storage Case for Nintendo Switch 2 might be ideal for you.
This large carry case is rammed with a whole lot of space for your console, dock, Joy-Con 2 controllers, traditional controllers, and accessories. It comes equipped with individual compartments for each part of your Switch 2 set up, so if you’re planning on setting up a gaming party, tournament, or travelling for a while, then it seems like the perfect companion?
But just how good is the Nacon Storage Case for Nintendo Switch 2 really? Well, I’ve spent a few days testing it and I have plenty of thoughts. Can it compete with some of the very best Nintendo Switch 2 accessories? Here’s what I think.
Let’s talk about the storage situation first, because this is probably the most spacious Switch 2 case I’ve ever seen — let alone tested.
You get a whopping 21 game card slots, which can also be used for microSD Express cards if you’d like, and that’s probably more than you’ll ever need. There’s also a net on the top side of the case where you can store HDMI cables, power leads and the like.
The main event, though, is the giant storage compartment with bespoke slots for specific Switch 2 gear. While this compartment isn’t anything flashy, and it doesn’t look the most attractive, it is admittedly pretty practical. I had room to place two Turtle Beach Rematch Wireless Controllers, four extra Joy-Cons, my Switch 2, dock, and power cable, enabling me to take my full setup anywhere.
Even when swinging the case around and dropping it from a controlled distance, everything stayed in place without a hitch.
My only real criticism here, would be that some of the slots are on the tight side of things. The joysticks on my controllers and on my Switch 2 were being pushed out of place in order for them to fit in the case, and while I don’t expect this would create lasting damage, it isn’t ideal.
(Image credit: Future)Otherwise, the case is a pretty solid all-rounder. The exterior is sturdy and rigid, and it was resistant to scratches when I tried roughing it up. It did pick up dust and fibres pretty easily, though, which some may find frustrating.
Still, the zips are well-made and firm, the handle is wide making it easy to grip, and the interior compartment is fully removable.
The main downside of this case, if you ask me, is that it just doesn’t look amazing. Frankly, it’s gigantic, and rivals like Nintendo’s official All-In-One case provide individual compartments and strong protection with about half of the overall footprint. It also has a fairly one note design, and as I say, picks up debris pretty readily.
Ultimately, this case doesn’t have to look beautiful or anything — after all it comes in at a relatively modest price-point of $44.99 / £29.90 (about AU$63). But whether it’s right for you or not will come down to one major factor: are you willing to lug such a giant case around? Do you really need quite this much space? The answer for me on both counts, would probably be no.
If you can get past the size then you have a durable and (mostly) well made case that will store just about everything you need. If not, then I’d suggest checking out my alternative picks in the ‘Also consider’ section.
(Image credit: Future)Nacon Storage Case for Nintendo Switch 2 review: price & specsPrice
$44.99 / £29.90 (about AU$63)
Dimensions
14.4 x 12.1 x 5.9 inches / 365 x 307 x 150mm
Weight
2.5lbs / 1.1kg
Number of game card slots
21
Compartments
3
Handle
Yes
Color
Black
(Image credit: Future)Should I buy the Nacon Storage Case for Nintendo Switch 2?Attribute
Notes
Score
Design
Not very pretty and perhaps too large, but durable and neat handle.
3/5
Storage
An outrageous amount of storage space, although parts of the main compartment are a little too tight.
4/5
Value
Fairly modest price considering the amount of storage.
4/5
Buy it if…You need a whole lot of storage space
If you need room for your console, dock, controllers, additional Joy-Cons, cables, and even more, then this case could be ideal for you. It’s one of the most comprehensive storage solutions I’ve seen for Switch 2 so far.
You have a lot of physical games
With 21 slots for games or microSD Express cards, the Nacon Storage Case is a great choice for the true physical gaming fanatics out there.
You want a compact option
This case is pretty large, meaning it will need to be carried separately, rather than stashed in a backpack, at least most of the time. If you want something more compact that can carry everything, then the Nacon Protection Case XL is a pretty neat choice.
You want the prettiest case around
Although this model is rammed with storage space, it’s not exactly the best-looking case I’ve tested. If you want something with a bit more personality, I’d recommend the alternative from Turtle Beach, listed below.
Nintendo Switch 2 All-In-One Carrying Case
Although it’s undoubtedly expensive, and a little tough to hunt down in some regions, the Nintendo Switch 2 All-In-One Carrying Case has remained my go-to when I need to bring my dock on the go. It’s well-protected, has compartments for all the essentials, is decent-looking, and crucially, is far smaller than this Nacon model.
Read my full Nintendo Switch 2 All-In-One Carrying Case review.
Turtle Beach PlayTrek Travel Case for Nintendo Switch 2
This case managed to get an elusive five-star score out of me when I reviewed it earlier this year, and really is the full package. Eye-catching design? Check. Hardy exterior? Also check. Plenty of game card slots? Ch-ch-ch-check! The lenticular DK theme really did it for me, and although this model’s built for the Switch 2 only — no room for the dock — it’s a model well-worth checking out.
Read my full Turtle Beach PlayTrek Travel Case for Nintendo Switch 2 review.
How I tested the Nacon Storage Case for Nintendo Switch 2(Image credit: Future)I spent a few days putting the Nacon Storage Case to the test, bringing it with me when out and about and cramming it with just about every Switch 2 accessory I have.
During my time testing the case, I performed durability tests, which included scratching the model, as well as dropping it from a controlled height. I also compared it against rivals like Nintendo’s official all-in-one model.
More generally, I’ve spent years testing tech and gaming gear here at TechRadar, including a whole lot of Switch 2 cases. I’ve also been a Nintendo Switch 2 owner from day one, and know exactly what it takes for a case to stand out from the competition.
US Fleet Tracking has been in the GPS hardware business since 2005, originally supplying tracking systems exclusively to 911 dispatch, law enforcement, and emergency services before opening to commercial fleets. That public safety heritage shows up in its core product: fast, reliable, no-frills location tracking at a price that doesn't require a three-year commitment. You can find it listed among TechRadar's best fleet management software, though it occupies a specific niche rather than aiming for broader industry appeal.
TechRadar reviewers spend hundreds of hours each month researching B2B software, but fleet management is a crowded and competitive category. Our overall pick for 2026 has to be Samsara, which offers a much broader platform. US Fleet Tracking is a different kind of product, I think it's worth being clear about that upfront.
The platform has been rebranded by over 350 GPS tracking companies, now claiming hundreds of thousands of business customers. It has also served as the tracking provider for every Super Bowl since 2007. Those are real endorsements of its core tracking hardware, even if the software around it feels spartan by modern standards.
US Fleet Tracking: At a glanceAttribute
Notes
Score
GPS tracking
Industry-leading 5–10 second refresh rates with satellite and cellular options
5/5
Asset management
Supports asset tracking with geofencing and location history, but no temperature monitoring
3.5/5
Usage analytics
Fleet summary and mileage reports are available, but depth is limited compared to competitors
2.5/5
Cost control
IFTA tracking, idle alerts, and one fuel card integration cover the basics
3/5
Compliance monitoring
DVIR available via Android app; ELD requires an add-on
2.5/5
Alerts & notifications
Fast, real-time alerts covering speed, idling, geofencing, ignition, and weather
4/5
Ease of use
Consistently praised for its clean interface and quick device activation
4/5
Price and scalability
Transparent, contract-free pricing; volume discounts available for larger fleets
4/5
Customer service
Live chat, phone, and email support available; no BBB rating; one-year hardware warranty
3/5
US Fleet Tracking is a focused product with a very clear strength: GPS speed. Everything else in the platform is adequate at best. I'd recommend it to fleet operators who want live location visibility without paying for features they won't use, but it falls short as an all-in-one management system.
US Fleet Tracking: Features(Image credit: US Fleet Tracking)The platform's headline feature is its refresh rate. The cellular "Most Popular" plan updates vehicle location every 10 seconds, while the "Blazing Fast" plan cuts that to every five seconds. Those speeds are genuinely faster than most competitors, many of which update every 30 seconds to two minutes. For operations where pinpoint real-time awareness matters, such as emergency response contractors or urban delivery fleets, that gap is meaningful.
Beyond GPS speed, the feature set narrows considerably. You get geofencing alerts, ignition notifications, idle warnings, maintenance reminders based on mileage or hours, and historical route playback. Weather and traffic overlays are built into the map view. There's also a remote kill switch, remote door unlock, and an ExxonMobil Fleet Affinity fuel card integration for managing fuel purchases. These are genuinely useful tools, but they cover a fairly small slice of what a full fleet management platform should handle.
Where US Fleet Tracking falls short is driver and vehicle management. There are no vehicle diagnostic tools, no maintenance records (only reminders), no automatic route optimization, no panic button, and no two-way messaging between drivers and dispatchers. ELD compliance, required for commercial carriers under FMCSA regulations, is only available as a paid add-on rather than a standard inclusion. Competitors like Samsara and Verizon Connect bundle most of this at comparable price points.
US Fleet Tracking: Ease of UseUS Fleet Tracking has a reputation for being one of the simpler fleet systems to set up and use. Device activation is handled online without needing a service call, and the interface is clean enough that most managers can navigate it without dedicated training. The mobile app is available on both iOS and Android, allowing location monitoring and alert management from a phone.
The web-based dashboard is functional but visually dated compared to platforms like Samsara or Motive, which have invested heavily in modern UI design. For users who don't need advanced dashboards, that's a reasonable trade-off. For teams expecting the kind of polished experience you'd get from newer entrants to the market, the interface may feel like a step back.
US Fleet Tracking: PricingUS Fleet Tracking offers four plans split across cellular and satellite options. The cellular plans cost $29.95 per vehicle per month for 10-second updates and $39.95 per month for five-second updates. Satellite plans are $24.95 per month for standard coverage with three daily updates, and $79.95 per month for premium satellite with five-minute refresh intervals. Battery-powered trackers add $10 per month to any plan. Hardware is purchased separately: the entry-level AT-V4 Wireless GPS Tracker costs $199, while the QT-V4 Pro with additional sensor support runs $249.
The biggest pricing advantage is the absence of long-term contracts. Most competing platforms, including Samsara and Verizon Connect, require commitments of one to three years. US Fleet Tracking operates on rolling monthly agreements, which makes it easy to test the platform or scale down without penalty. Volume pricing is available for larger fleets by contacting the sales team directly, though those rates aren't published online.
US Fleet Tracking: Customer support(Image credit: US Fleet Tracking)Support is available through live chat on the website, by phone at (405) 726-9900, and by email at sales@usft.com. The company also offers a free live demo for prospective customers, which is a reasonable substitute for the free trial many competitors provide. Hardware comes with a one-year limited warranty. There is no publicly listed Better Business Bureau rating, and independent user reviews are relatively sparse, which makes it harder to assess long-term support quality at scale.
US Fleet Tracking does not provide on-site installation technicians. For plug-and-play OBD-II devices, that's not a problem. For hardwired trackers across a larger fleet, you'll need to handle installation in-house or arrange a third-party technician. That's an extra cost and coordination burden that some operators may not anticipate upfront.
US Fleet Tracking: AlternativesUS Fleet Tracking occupies a clear but narrow position in the market. If your fleet's most pressing need is real-time location visibility at the fastest possible update speed, and you want to pay month-to-month without contracts, this platform is genuinely hard to beat at its price point. The satellite coverage options also make it a practical choice for operations in remote regions where cellular networks are unreliable.
Most commercial fleets, though, need more than a fast GPS signal. The missing maintenance records, lack of route optimization, absence of driver communication tools, and ELD locked behind an add-on are real gaps, not minor omissions. For any fleet where compliance, safety monitoring, or operational analytics are priorities, I'd point you toward Samsara or Verizon Connect instead.
US Fleet Tracking: How we testedMy evaluation drew on hands-on assessment of US Fleet Tracking's platform, published pricing and feature documentation from the company's official website, and corroborating data from independent review platforms.
I assessed the platform across nine key attributes relevant to fleet operators, comparing feature depth, pricing transparency, and support access against leading competitors in the category.
US Fleet Tracking: FAQsDoes US Fleet Tracking require a long-term contract?No. US Fleet Tracking operates on a month-to-month basis with no mandatory long-term commitment. This is one of its strongest differentiators against competitors like Samsara and Verizon Connect, which typically require one- to three-year contracts. Volume pricing agreements are available through the sales team for larger fleets that prefer that structure.
Does US Fleet Tracking support ELD compliance?ELD (Electronic Logging Device) compliance is available as an add-on, not included in the standard plans. DVIR (Driver Vehicle Inspection Reports) are supported through a dedicated Android app. IFTA mileage tracking by state is included natively. For fleets with heavy ELD compliance needs, platforms that bundle this as a standard feature may be a better fit.
What hardware does US Fleet Tracking use?The company manufactures its own GPS tracking devices, which it also supplies to over 350 third-party GPS companies. Hardware options include wired and wireless units, OBD-II plug-in trackers, dash cams, and asset trackers. Entry-level hardware starts at $199 for the AT-V4 Wireless GPS Tracker. Installation is self-managed, as the company does not provide on-site technicians.
How fast are US Fleet Tracking's GPS updates?The fastest cellular plan updates every five seconds, and the standard cellular plan updates every 10 seconds. Those are faster refresh rates than most fleet management platforms on the market. Satellite plans update either three times per day or every five minutes, depending on the plan tier, making them more suitable for coverage in areas without reliable cellular networks.
Is US Fleet Tracking suitable for small fleets?Yes. The pricing structure, starting at $24.95 per vehicle per month with no minimum fleet size requirement, makes it accessible for businesses tracking a single vehicle. The lack of long-term contracts also reduces the risk of committing to a platform before you've confirmed it meets your needs. That said, small fleets with growth plans may eventually find the limited analytics and driver management tools a constraint.
Utility apps for Mac abound, each pledging to keep your machine running smoothly. Some focus purely on junk removal, others on app management, and still others on malware protection. The challenge has always been that covering all of those bases typically means juggling several tools at once.
CleanMyMac X, developed by MacPaw, has long aimed to solve that problem in a single package, and the app has grown considerably since its early days as a cleanup-focused utility. Today, it bundles system optimization, application management, file tools, and a full Protection module into one interface. That Protection module, powered by MacPaw's Moonlock Engine, targets macOS threats such as adware, spyware, and cryptocurrency miners, while a companion privacy suite handles browsing history, chat logs, and app permission management.
It's a more complete offering than it once was, and it faces a more competitive field. Tools like CCleaner for Mac, MacKeeper, Cleaner One Pro, and Nektony App Cleaner and Uninstaller each chip away at parts of what CleanMyMac X offers, at varying price points and with varying degrees of depth. Whether CleanMyMac X justifies its premium position in that market is exactly what this review sets out to answer.
Plans and pricingCleanMyMac X is available through a yearly subscription or one-time purchase. The former gives you unlimited access to major updates, while the latter will require paying upgrade fees. The one time purchase currently starts at $119.95 for one Mac.
Subscription prices start at $39.95 for one Mac, scaling up through to $63.95 and $127.95 for two and five Macs respectively. You'll also find discounts when more than one license is purchased at a time. You can also download a free trial from the CleanMyMac X website.
Like other recently reviewed apps, including Canary Mail and Newton, CleanMyMac X is also part of the Setapp subscription plan, which gives you more than 230 Mac and iOS apps for $9.99/month.
FeaturesCleanMyMac X has evolved over the years and now includes multiple tools grouped under five broad categories: Cleanup, Protection, Speed, Applications, and Files. Running any of the tools takes no more than just a few clicks making it one of the easiest to use Mac apps on the planet.
Subjectively, the best CleanMyMac X feature is the Smart Scan, a two-step tool you can find at the top left of the app menu. After clicking on the hard-to-miss "Scan" button under this section, CleanMyMac X automatically searches for ways to quickly improve the computer's performance by concentrating on three of the five categories above, Cleanup, Protection, and Speed.
After CleanMyMac X generates its Smart Scan results, you can click on the "Run" button to automatically perform the recommended tasks or explore the individual findings in more depth. For example, under Cleanup, the app identifies system junk, mail attachments, and trash it believes are worth deleting to save space. Under Protection, you'll find possible malware. Finally, under Speed are recommendations to make the machine perform more quickly, such as freeing up RAM and flushing DNS cache.
CleanMyMac X's Cleanup, Protection, and Speed tools are its best ones. And thanks to the Smart Scan tool, the easiest ones to perform. If you rather not run the Smart Scan, you can run each tool individually from the app menu. This way is ideal for anyone who wants to feel more in control before wiping out files or freeing up RAM. I typically use Smart Scan, although there are times when I'm troubleshooting a problem and drilling down is best. Either way is pain-free and gets the job done.
(Image credit: Future)CleanMyMac X does a less impressive job with its Applications and Files tools. Under the former, you can quickly delete more than one app simultaneously, including leftover files from previous deletions. Regularly, I use this tool to identify apps I no longer need and remove them to save space and add some order. If they were downloaded from the Mac App Store, they can get added again at any time.
There's also an app update tool, which lets you install multiple app updates concurrently. Unfortunately, the tool tends to be hit or miss as some updates weren't found during my tests. The app also includes an extension tool in this location. Use it to delete Spotlight, Safari, and other types of extensions individually or as a group.
Finally, the three Files tools are Space Lens, Large & Old Files, and Shredder. The first one offers a visual comparison of your Mac's folders and files. It's intended to give you a birdseye view of what's located in storage. Unfortunately, the Space Lens design has much to be desired and doesn't look nearly as good as other solutions on the market, such as DaisyDisk, one of my favorites.
I'm not saying Space Lens is bad. However, some refinement in its design would go a long way in making the feature much better and easier to use.
The Large & Old Files tool is a little more valuable as it identifies "huge" and rarely used files that take up space you. With these identified, you can decide whether to delete them or keep them in place. For example, it's a great resource to find large video files no longer needed.
CleanMyMax X Space Lens (Image credit: Future)Security and PrivacyCleanMyMac X, best known for its optimization tools, has deeply integrated security into the app, moving it well beyond a simple add-on. The Protection module delivers two main functions: malware removal and privacy management. The malware scanner runs on MacPaw's proprietary Moonlock Engine, which targets macOS-specific threats, including adware, spyware, and cryptocurrency miners. While it won't replace a dedicated security suite for high-risk users, Moonlock receives regular threat definition updates and sweeps up the usual Mac-focused suspects, such as adware and miners, without bogging down the system.
The privacy side of the Protection module is where CleanMyMac X tends to stand out from traditional antivirus tools. The app quickly clears browsing history, chat logs from apps like Messages, and recent items lists. These aren't just convenience features. Clearing this kind of residual data reduces your exposure if a device is lost, stolen, or accessed without your knowledge.
The Application Permissions manager consolidates all apps that have been granted access to your microphone, camera, or disk into a single view, letting you audit and revoke access without hunting through System Settings. For users who have accumulated years of installed software, this alone can surface long-forgotten permissions that are unsettling.
It's worth noting what the Protection module doesn't cover. There's no real-time threat monitoring, no network firewall, and no VPN. CleanMyMac X is not positioning itself as a full security suite, and the Protection module is better understood as a practical privacy maintenance tool for everyday Mac users who want something faster and more approachable than a dedicated antivirus platform. For the average user, it strikes a smart balance between utility and ease of use.
Interface and in useMacPaw has gone out of its way to create a beautiful, easy-to-use app in CleanMyMac X. Besides Space Lens, ever section is designed with friendliness in mind. Better still, it offers explanations whenever it recommends file deletions.
SupportYou can find CleanMyMac X support from the MacPaw website. The site includes troubleshooting guides, a location to submit malware concerns, and a Contact Us page.
The competitionCleanMyMac X targets the premium end of the Mac utility market but faces real pressure from both specialized tools and broader all-in-one platforms. If you’re looking for a household name on a budget, CCleaner is still the obvious starting point. Its free tier handles basic junk cleanup with a straightforward, no-frills interface, which makes it accessible to users who want occasional maintenance without a subscription commitment. However, CCleaner's Mac version has historically lagged behind its Windows counterpart in depth and refinement, and it offers no comparable malware scanning or permissions management to CleanMyMac X.
MacKeeper has rebuilt its reputation considerably after years of aggressive marketing that damaged user trust. The modern MacKeeper has evolved into a solid all-in-one suite that now includes antivirus scanning, a bundled VPN, and 24/7 live support, all under a subscription model. For users who want security, privacy, and cleanup tools in a single package with human support available, MacKeeper has become a more credible option than it once was. CleanMyMac X still holds an edge in interface polish and the depth of its optimization tools, but the lack of a VPN is a notable omission compared to MacKeeper’s bundle.
Cleaner One Pro, published by Trend Micro, takes a different approach by prioritizing speed and simplicity. Its disk space visualization is genuinely useful for quickly identifying storage hogs, and the app has a lighter resource footprint than CleanMyMac X. It won't appeal to users who want detailed cleanup control, but as an affordable, low-commitment option, it serves casual users well.
Nektony’s App Cleaner and Uninstaller is more of a specialist tool. It's built specifically for thorough app removal, hunting down the preference files, caches, and support folders that macOS leaves behind after a standard drag-to-trash uninstall. Available as a one-time purchase rather than a subscription, it appeals to users who distrust recurring billing models. It doesn't compete with CleanMyMac X on breadth, but for users whose primary frustration is incomplete uninstalls, it's a sharper tool for that specific job.
Final verdictCleanMyMac X is a terrific maintenance solution that's reasonably priced and packed full of features. Of course, some of these are better than others. And yet, as a whole, the app serves a valuable purpose. At the minimum, you should download and install a trial version and see whether it's right for you.
You might also be interested in our report on the best Mac apps of the year.
The belief that Macs are immune to viruses is no longer credible. AI-assisted phishing, cross-platform malware, and increasingly sophisticated adware have changed the landscape, and even Apple's robust protections can't block every threat. That's where Intego steps in: with Mac Internet Security X9, the company stakes a clear claim for dedicated, Mac-native security as an important layer on top of what macOS already offers.
What sets Intego apart from most competitors is its deliberate focus. Unlike firms that build a cross-platform suite and later port it to macOS, Intego has designed its product around the Mac from the start. That philosophy appears in its two core security tools. VirusBarrier X9 handles real-time malware scanning for threats on both macOS and Windows. NetBarrier X9 is a two-way firewall that manages both incoming and outgoing connections. The higher-tier bundle adds a VPN that uses the Lightway protocol. Together, these features create what Intego positions as a privacy-first security stack.
The approach is coherent, but not unchallenged. Norton 360 for Mac, Bitdefender Antivirus for Mac, Surfshark One, and a revamped MacKeeper all compete for the same dollar. Each brings its own trade-offs in pricing, interface design, and feature depth. Whether Intego's Mac-native focus justifies its premium position is the key question this review intends to answer.
Plans and pricingIntego’s complete suite of Internet security, cleanup and organization, backup, and parental control utilities for Mac (packaged as the Intego Mac Premium Bundle X9) starts at $69.99/year for one Mac and is covered by the aforementioned 30-day money-back guarantee.
If you need coverage for more Macs, then the pricing scales accordingly, with an additional discount per-Mac. All in all, the price is quite high, but you do end up getting a good bundle of services.
If you want to add the optional VPN, you would be better off opting for the Intego ONE Complete plan, which starts at $89.99 (depending on the number of Macs requiring coverage).
If you’re looking for a cheaper option with Intego, you can opt for the Mac Internet Security X9 plan. This plan “only” offers VirusBarrier and NetBarriers but costs $39.99 for one Mac. Additional options are three Macs at $54.99 and five at $69.99.
VirusBarrierVirusBarrier performs well, managing to keep the definitions up to date easily. In addition, it offers easy whitelist creation for files that you want excluded from the scans, which will speed up the scanning process. Real-time scanning pops up each time you connect an external drive, managing to scan even compressed files.
(Image credit: Intego)The interface is one of the most Mac-friendly we’ve seen, offering a clean and intuitive experience that makes managing security settings effortless. With flexible scanning options, users can run on-demand quick or full scans, schedule automated scans, and enable real-time protection without any impact on system performance.
Batch testing performed well on our test, removing all of the infected files we introduced to the system. For us, the fact that it removed files from compressed infected dummy files we presented was a positive surprise.
NetBarrier(Image credit: Intego)NetBarrier is effectively a two-way firewall that can protect both incoming and outgoing traffic across your network(s). Setting customizations is quite intuitive and easy to perform, allowing for simple traffic and app monitoring. Like most firewalls, the initial setup and frequent pop-ups asking for permission for the first time can be annoying; however, once you set it up fully, it becomes a breeze to use. This location-aware firewall automatically adjusts security settings based on your network, whether you're at home, in the office, or on a public Wi-Fi connection, ensuring optimal protection wherever you are. Users can toggle switches to allow or block specific connections, while a simple profile selector at the top lets you manually switch between Home, Work, or Public settings to fine-tune firewall rules as needed.
Washing MachineWashing Machine is essentially an optimization app that should help you keep your Mac running smoothly. Its main focus is scanning for unnecessary files (cache, logs, downloads, trash, etc.). The initial run on our test removed roughly 50 MB of files, which was an acceptable result in our opinion since the computer was not used extensively, so we did not expect to have too many files. The scan also extends to duplicate files that we did not find any use for, but for users with a lot of images or video files that end up having duplicates, this can save a lot of space. Finally, the Washing Machine is rounded out via the Organize feature, which can help you declutter your workspace on your desktop. It makes short work of numerous files and folders, sorting them into easy-to-find folders. On our test, this feature finished in under 10 seconds, but again, the desktop was not cluttered.
Personal BackupIntego Personal Backup is like a safety net for your Mac, making sure your important files and system data are always protected. Whether you're backing up to an external hard drive, a USB stick, or even a network storage device, it handles everything smoothly. You can also sync data between two Macs or create a full backup of your macOS system, so you’re always prepared for the unexpected.
(Image credit: Intego )Restoring files is just as easy as backing them up. Whether you want a simple, one-click recovery or need more control over how and when your backups run, Personal Backup gives you the flexibility to do it your way. It’s hard to fault the backup tool, but in the same light, we cannot recommend it over Apple’s Time Machine, which comes built-in and covers all of the necessary functionalities.
ContentBarrierParental control apps are useful if you’re a young parent struggling to set boundaries for your children’s PC time. The app allows you to create customizable profiles for multiple children based on their age and even browsing habits. You can block inappropriate websites, track chats for predators, and even restrict access to certain apps. If you want to extend the oversight, you can expand the protection to include a log of visited websites, a log of chat conversations, and even keystroke recording. If it detects potentially unsafe messages, it can send email alerts, helping parents step in when necessary. The software also allows parents to control which apps can access the internet, block spam and illicit content, and even restrict game violence or file sharing. For those who prefer a more hands-off approach, there’s a “watch mode” that logs activity without blocking anything, providing insight without disrupting daily browsing. While some options may seem a bit excessive, the dangers of the internet and predators lurking for children online can help justify most of the options on offer.
Privacy Protection VPN(Image credit: Intego )Intego’s VPN starts by offering over 35,000 servers spread out across 83 countries. In the US, you can rely on blazing fast speeds, which partially extend to other countries on the list (of course, depending on which country). Also, before we forget, you can purchase the VPN service completely separately, starting at €4.17 a month, but as mentioned under plans and pricing, it comes under the “Mac premium bundle + VPN” plan.
With support for AES-128 and AES-256 encryption, users can choose their preferred level of security. It also offers multiple protocols, including OpenVPN (UDP and TCP) and WireGuard, ensuring both speed and reliability. One of its standout security features is the Kill Switch, which comes in three variations: a standard VPN Kill Switch, an Advanced Kill Switch, and Intego Privacy Protection MACE, all designed to prevent data leaks if the VPN connection drops. A unique VPN Snooze function lets users temporarily pause the VPN without fully disconnecting, making it a flexible option for those who want a seamless balance between security and convenience.
As VPNs go, it’s not the best option out there, but it does cover all of the functionalities that both intermediate and advanced users may want. If you’re getting the bundle, then the VPN is a great added value, but purchasing the VPN by itself would require pitting it against the heavyweights in the field. Overall, it will depend on your needs and the budget you have set for security features.
Security and privacyWhile many competitors focus on cross-platform versatility, Intego maintains a "Mac-first" security posture. In testing, I found that VirusBarrier does the heavy lifting, catching not just Mac bugs but Windows ones too, which is great if you're the designated 'tech support' for your family's PC network. Further, this helps prevent your Mac from spreading malware to other devices on your network. VirusBarrier also supports scheduled scans, so you can run full system sweeps during off-hours without disrupting your workflow. Scan results are detailed enough to be useful without overwhelming non-technical users.
NetBarrier X9 is a standout for privacy. Unlike macOS's built-in firewall, which handles incoming connections, NetBarrier controls outgoing data. It’s satisfying to see exactly which apps are trying to 'phone home' and having the power to shut them up with a click. You can set rules for each network type, so your Mac behaves differently on a trusted home connection than on public Wi-Fi. This kind of granular control is genuinely rare at this price point.
The higher-tier "Complete" plan adds Intego Privacy Protection, a VPN that uses the Lightway protocol to mask IP addresses and secure connections over public networks. It's a straightforward privacy tool that sidesteps the data-selling risks associated with free VPNs, though it lacks the multi-hop routing and advanced obfuscation found in standalone VPN services.
Beyond core security, you're getting local and network backups with versioning support, which complements Time Machine rather than replaces it. Washing Machine X9 tackles duplicate files, large attachments, and app clutter. These aren't security tools, but they add practical value for users who want system maintenance and protection in a single subscription. The tradeoff is that Intego still doesn't include a password manager, a gap that competing suites have moved to fill.
The competitionIntego isn't the only player in town anymore, and its rivals are packing some serious heat. Norton 360 for Mac is Intego's closest competitor in terms of brand recognition and overall feature depth. Norton offers a more unified interface and bundles a password manager and cloud backup, both of which Intego omits entirely. For users who want a single subscription to cover those bases, Norton has a clear edge. That said, Intego tends to be less intrusive on system resources, and its Mac-specific focus means fewer features that exist primarily to pad a Windows feature sheet.
Bitdefender Antivirus for Mac is the most commonly recommended option for users who want reliable protection with minimal ongoing involvement. It scores competitively in independent malware removal tests, maintains a smaller performance footprint, and typically carries a lower renewal price than Intego. The catch? Bitdefender is a bit of a 'set it and forget it' tool. If you want to see every outbound data packet (as NetBarrier allows), you’ll find Bitdefender too hands-off.
Surfshark One has emerged as a compelling option for privacy-first Mac users. It bundles a capable VPN with antivirus tools at an aggressive price, and the VPN component is arguably stronger than Intego's Lightway-based offering. However, Surfshark's firewall controls don't match NetBarrier’s depth, and its antivirus roots are shallower than Intego's decades of Mac-specific development.
MacKeeper used to be the black sheep of Mac software. While it’s cleaned up its act and earned Apple’s nod, it still feels more like a cleanup crew than the specialized security fortress Intego offers. It primarily appeals to users seeking both security scanning and system cleanup in one place. Performance optimization is genuinely central to the MacKeeper experience, and it feels more integrated than Intego's Washing Machine add-on, though Intego's core antivirus protection remains more battle-tested.
Final verdictIntego represents a good choice for users looking to add an additional layer of security on top of the built-in features Apple offers with its OS. The fact that you can get a bundle of 5-in-1 tools could represent a great offer if you’re actually going to use all of the tools. The antivirus tool updates fairly regularly, is easy to use, and is powerful enough to offer you peace of mind. The same can be said for the firewall tool and the Washing Machine.
Backup and parental control tools are a harder sell, especially if you don’t have children; then, parental control makes no sense for you. And thanks to Apple’s great built-in tools, the backup tool simply seems like an additional hassle.
So finally, the usefulness of the offer will depend on your actual needs. If the bundle seems overkill, you can always go for the 2-in-1 solution and evaluate the VPN offer separately. The features are well-designed, perform reliably, and make this a solid option worth considering.
Onfleet isn't exactly a traditional fleet management platform. At its core, it's a last-mile delivery management solution built for couriers, retailers, pharmacies, and similar operations that need to track drivers, optimize routes, and keep customers updated in real time. If you're comparing it against options on our best fleet management software list, that distinction matters before you commit.
The platform launched in 2012 and now serves over 1,000 customers across 60 countries, supporting more than 75 million completed deliveries. TechRadar reviewers spend hundreds of hours each month researching B2B software across multiple categories, and in this space, our top overall pick for 2026 remains Samsara for teams needing a full-featured fleet telematics solution. That said, Onfleet carves out its own unique niche.
Onfleet’s strengths are in the delivery workflow: assigning tasks, tracking drivers live, capturing proof of delivery, and keeping recipients informed with automated notifications. For operations where that's the priority, it works very well. For businesses that also need ELD compliance, fuel tracking, or vehicle maintenance scheduling, you'll need to look elsewhere or plan to run a parallel system.
Onfleet: At a glanceAttribute
Notes
Score
GPS tracking
Real-time driver location tied to delivery tasks; no vehicle diagnostics or ELD support
3.0
Asset management
No maintenance scheduling or fuel tracking; focused on delivery task management only
2.0
Usage analytics
Driver and delivery performance reporting; 90-day history on Launch, lifetime on Enterprise
3.5
Cost control
Route optimization reduces drive time and fuel costs; driver pay calculation included
3.5
Compliance monitoring
Age and ID verification, chain-of-custody proof of delivery; no HOS or DVIR
3.0
Alerts & notifications
Predictive ETAs, delay alerts, automated SMS, and two-way driver-dispatcher chat
4.5
Ease of use
Clean, intuitive interface; quick onboarding and consistently strong driver app ratings
4.5
Price and scalability
Task-based pricing scales with volume, but the $619/month entry point is hard for small teams
3.0
Customer service
Email support on all plans; scheduled phone support on Launch; dedicated CSMs on Scale+
3.5
The platform earns its strong ratings in last-mile delivery circles. The gaps become more apparent if you're expecting the vehicle monitoring depth that traditional fleet management software typically provides.
Onfleet: FeaturesOnfleet fleet management 2onfleetOnfleet fleet management 3onfleetOnfleet fleet management 4onfleetOnfleet fleet management 5onfleetOnfleet fleet management 6onfleetOnfleet's feature set is purpose-built for delivery operations, and it shows. Route optimization, auto-dispatch, proof of delivery, and customer notifications all work with a level of refinement that generalist fleet tools rarely match. The platform is best suited to mid-sized and enterprise delivery operations in sectors like grocery, pharmacy, cannabis, and courier logistics - essentially any business where the last mile is the most critical part of fulfillment.
The 2025 product updates added meaningful capability across the board. The Command Center, available on Scale and Enterprise plans, gives dispatchers a live map view of all active routes with color-coded driver paths. Vehicle-type routing now lets operations plan routes before assigning specific drivers, which is useful for mixed fleets with different vehicle capacities. Age verification and ID scanning were also strengthened, which benefits regulated industries like cannabis and pharmacy delivery. Fuel consumption tracking, maintenance alerts, and ELD compliance are nowhere to be found, despite being standard at competing platforms.
The API quality is worth a specific mention. Multiple users describe Onfleet's RESTful API as one of the best-documented in the logistics category, with native integrations covering Shopify, Zapier, Leafly, Dutchie, GigSmart, and more. For e-commerce and cannabis operations already running those platforms, the integration story is solid.
Onfleet: Ease of UseThe platform has built a reputation as one of the easier delivery management systems to get running. Setup is quick, the dispatcher dashboard is clean, and the driver app holds consistently strong user ratings: 4.8 on the App Store and 4.7 on Google Play. Most teams don't need significant technical training to be productive from day one.
One limitation worth flagging is the absence of a native mobile dashboard for dispatchers. The web UI is responsive but not purpose-built for mobile the way a dedicated app would be. Operations managers who regularly move between a desk and a warehouse floor may find that slightly inconvenient. The driver-facing app, by contrast, is polished and well-designed - and it's the one that sees the most daily use.
Onfleet: PricingOnfleet bills on a task-based model across three tiers. Launch starts at $619/month and covers 2,500 completed tasks, basic route optimization, and email and scheduled phone support. Scale starts at $1,349/month with 5,000 tasks, auto-dispatch, barcode and ID scanning, and access to the Command Center. Enterprise starts at $3,099/month for 10,000 or more tasks, with multi-brand support, enterprise SSO, and premium onboarding. A Courier Suite add-on is available from $299/month. A 14-day free trial requires no credit card.
The entry-level cost is significant, especially compared to per-vehicle pricing models like Verizon Connect (around $20 per vehicle per month) or Samsara. The task-based model does have a logical appeal: you pay for completed deliveries rather than vehicle seats, which can favor high-volume operations. The catch is that unused tasks don't roll over, so it's worth calculating your expected monthly delivery volume carefully before picking a plan.
Onfleet: Customer support(Image credit: onfleet)Support quality shows up as a consistent highlight across user reviews. Response times are generally fast, and the guided onboarding included with Scale and Enterprise plans gives new teams a structured path to getting the most out of the platform. Dedicated Customer Success Managers are assigned at the Scale tier and above, which makes a meaningful difference for larger operations with more complex workflows.
One recurring issue in user feedback is that automated SMS notifications occasionally get flagged as spam by mobile carriers, which affects customer communication reliability. This is partly a carrier-level problem rather than a product flaw, but it does create real headaches for operations that depend heavily on SMS delivery alerts. Onfleet's support team addresses it when raised, but there's no in-product resolution for it yet.
Onfleet: AlternativesFor last-mile delivery management, Onfleet is one of the stronger options available. The route optimization, proof of delivery, and customer notification features are well executed, and the API quality makes it a practical choice for operations that need to integrate delivery management into a broader technical stack. Teams in grocery, pharmacy, cannabis, and courier logistics will find it covers their core needs without too much friction.
Where the platform falls short is in the broader fleet management category. ELD compliance, fuel tracking, vehicle maintenance scheduling, and driver safety scoring are all absent, which narrows its applicability significantly for mixed-use fleets or regulated transport operations. The pricing also places a real barrier for smaller teams. If either of those gaps is a dealbreaker, Samsara or Verizon Connect are more appropriate starting points.
Onfleet: How we testedMy evaluation combined Onfleet's official documentation, feature pages, and 2025 product update posts with user review data. I cross-referenced pricing and plan details directly from Onfleet's pricing page and assessed each attribute against standard fleet management benchmarks to produce consistent category-level scores.
Onfleet: FAQsIs Onfleet a full fleet management platform?Not in the traditional sense. Onfleet is a last-mile delivery management platform with GPS tracking and route optimization, but it doesn't include ELD compliance, fuel monitoring, or vehicle maintenance tools that traditional fleet management software typically provides. It's best evaluated as a delivery operations tool first.
Does Onfleet offer a free trial?Yes. Onfleet provides a 14-day free trial with unrestricted access to your chosen plan. Your credit card won't be charged until you confirm a subscription through the dashboard.
What industries is Onfleet best suited for?The platform works particularly well for pharmacy, grocery, cannabis, courier, and food and beverage delivery operations. The age verification and chain-of-custody proof of delivery features are especially relevant for regulated industries.
Can Onfleet integrate with existing tools?Yes. Native integrations include Shopify, Zapier, Dutchie, Leafly, GigSmart, Square, and more. The RESTful API is well-documented and supports custom integrations with inventory management, order management, and warehouse systems.
How does Onfleet billing work?You're billed based on completed tasks - either deliveries or pickups - per month. Tasks are only counted when marked as completed via the driver app, dispatcher dashboard, or API. Unused tasks don't roll over to the following month, so accurate volume forecasting is important before committing to a plan.
Picking a fleet management platform is one of the more consequential decisions a fleet operator can make, and the market is not short of capable options. Lytx sits near the top of our best fleet management software shortlist, and it has earned that position primarily through its video-backed telematics and AI-powered safety coaching, two areas where it consistently outperforms the field.
The platform is built around DriveCam, a dual-facing dash cam system that uses Lytx's proprietary machine vision and AI (MV+AI) technology to detect risky behavior both inside the cab and on the road ahead. In nearly three decades of operation, Lytx has accumulated over 500 billion kilometers of commercial driving data, the largest driving database of its kind, which powers a risk detection engine capable of identifying more than 60 distinct behaviors. TechRadar reviewers spend hundreds of hours each month evaluating B2B software across categories, and I came away from this one impressed by the AI depth but less convinced by the overall value proposition for smaller fleets.
If you're weighing Lytx against our current top pick, Samsara, the practical difference comes down to specialization. Lytx goes deeper on video safety and coaching; Samsara covers more operational ground at a more accessible price. Which one suits you depends on whether driver safety or broad fleet flexibility is your top priority.
Lytx: At a glanceAttribute
Notes
Score
GPS tracking
Real-time GPS with geofencing and route visibility
4.0
Asset management
Tracks powered and non-powered assets via GPS
3.5
Usage analytics
AI analytics backed by 500B+ km of commercial driving data
4.5
Cost control
Fuel monitoring included, but no IFTA reporting
3.0
Compliance monitoring
ELD, HOS, and DVIR tools for DOT-regulated fleets
4.0
Alerts & notifications
Real-time in-cab audio and visual alerts, SMS/email for managers
4.5
Ease of use
Coaching workflow is intuitive; initial setup is more demanding
3.5
Price and scalability
No public pricing, no free trial; long-term contracts required
2.5
Customer service
Business hours only; complaints about response times are common
2.5
Lytx performs strongest where it has invested most: video-based risk detection and compliance tooling. Its weakest points, pricing transparency and customer support, are however areas that affect businesses at every scale.
Lytx: Features(Image credit: Lytx)Lytx's MV+AI technology, built into the DriveCam SF-Series cameras, is the platform's clearest differentiator. It detects more than 60 risky behaviors (distracted driving, drowsiness, seat belt violations, harsh braking, and lane departures among them) and delivers real-time multilingual audio and visual alerts so drivers can self-correct before an incident occurs. Fleet managers receive flagged video clips for structured coaching sessions, with the recently launched Coach Assist tool using AI to help coaches deliver faster, more targeted feedback.
Beyond safety, the platform handles GPS tracking, geofencing, ELD compliance, preventive maintenance scheduling, and fuel management. The new LytxOne solution combines video safety and telematics on a single platform, while Lytx+ with Geotab, launched in the second half of 2025, integrates Lytx's video capabilities with Geotab's telematics for fleets that want a unified system. Lytx also offers rugged GPS trackers for non-powered equipment like trailers and heavy machinery.
One gap worth noting: Lytx does not include IFTA fuel tax reporting, which several competitors offer as standard. Operational cost management tools are also less developed than what you'd get from Samsara or Verizon Connect. The feature set justifies the investment for large, safety-focused fleets, but smaller operations may find themselves paying for capabilities they rarely use.
Lytx: Ease of UseLytxLytxLytxLytxThe Lytx dashboard earns consistently positive marks from experienced fleet managers, particularly around the coaching workflow. Coaches receive notifications, pull up flagged video clips, and log feedback through a process that G2 reviewers repeatedly describe as intuitive and low-friction. The driver app adds useful functionality for event flagging and field communication on the road.
Initial setup is where the experience gets harder. Larger fleet deployments can involve significant installation complexity, and user reviews warn that self-installation is difficult without hands-on technical guidance. Video retrieval has also drawn criticism, with some users reporting that footage isn't always available as quickly as they need it after an incident — for time-sensitive evidence collection, that delay matters.
Lytx: PricingLytx does not publish its pricing. Based on third-party sources, costs typically start from $40 per vehicle per month with an additional upfront installation cost of $500 per vehicle, depending on the features selected and contract length, with hardware quoted separately. For a 50-vehicle fleet on a three-year contract, the total cost of ownership can reach $150,000 to $300,000.
Competitors like Samsara and Motive can often undercut those figures by $15 to $30 per vehicle per month. Lytx also does not offer a free trial, which means committing to a demo-and-quote process before you can properly evaluate the platform. If you're budget-sensitive or running a smaller fleet, those two factors in combination are a real barrier.
Lytx: Customer support(Image credit: Lytx)Lytx's support channels include phone, email, and ticket submission. Standard hours run Monday to Friday, 8am to 5pm PT. That's a notable gap for fleets running overnight schedules or operating across multiple time zones, and a knowledge base plus online academy are the only self-service options available outside those hours.
The support reputation is a persistent weak point. Review data consistently surfaces complaints about long wait times, difficulty reaching knowledgeable agents, and inflexible early termination terms. G2 reviews from large enterprise fleets tend to be more positive, which suggests the quality of support may scale with account size — for smaller operators, though, it's a meaningful risk worth factoring in before you sign.
Lytx: AlternativesLytx earns its reputation as one of the most capable video telematics platforms in the market. The MV+AI detection is sophisticated, the coaching workflow is well-designed, and the compliance tools cover everything a DOT-regulated fleet needs. Frost & Sullivan named it the 2025 Global Company of the Year in commercial vehicle video telematics and ABI Research ranked it the top overall video telematics provider. Based on my experience with the platform, the recognition appears more than justified.
That said, Lytx is not the right fit for every operation. The opaque pricing, limited support hours, and long contract commitments raise the barrier for smaller or budget-conscious fleets. If driver safety and video evidence are your primary concerns and you have the fleet size to justify the investment, Lytx is a legitimate leader in this space. If you need broader operational tools, clearer upfront costs, or more accessible support, Samsara is a stronger starting point.
Lytx: How we testedMy evaluation drew on Lytx's official product documentation, feature pages, and press releases, as well as independent review data from top review sites. I assessed each attribute against comparable fleet management solutions currently on the market and cross-referenced pricing estimates from multiple third-party analyst sources, since pricing is not disclosed publicly.
Lytx: FAQsDoes Lytx offer a free trial?No. Lytx does not offer a free trial or a free-tier plan. To evaluate the platform, you'll need to contact the sales team for a demo and a customized quote based on your fleet size and chosen features.
What industries does Lytx serve?Lytx is used across trucking, construction, utilities, waste management, transit, government, field services, and logistics. Its ELD and HOS tools make it particularly well-suited to DOT-regulated commercial fleets.
How does Lytx handle driver privacy?Lytx offers configurable privacy controls, including its Conceal Service, which automatically blurs faces and license plates in recorded footage. It also supports a Risk ID Without Recording mode, which detects and alerts for risky behaviors without continuous video.
Is Lytx suitable for small fleets?Lytx is technically available to fleets of any size, but the cost structure and contract requirements favor larger operations. Fleets with fewer than 20 vehicles may find the investment harder to justify compared to lighter-weight alternatives.
What is LytxOne?LytxOne is Lytx's newest all-in-one fleet management solution, combining video safety and telematics on a single natively integrated platform. It is designed for fleets that previously had to manage separate systems for safety monitoring and operational tracking.
Finding a fleet management platform that handles the compliance workload without becoming a chore to navigate is harder than it sounds. Geotab's MyGeotab platform handles all of it from one web-based dashboard, and for good reason it appears near the top of our best fleet management software roundup. With more than 3.2 million subscribers across 130 countries, it operates at a scale few competitors can claim.
TechRadar reviewers spend hundreds of hours each month evaluating B2B software categories covering fleet management, GPS tracking, and vehicular telematics. Geotab is a platform we find ourselves returning to frequently. ABI Research's independent telematics vendor comparison report has ranked Geotab number one in commercial telematics, and after putting the platform through its paces, I'd say that recognition holds up. If you're still comparing options, Samsara remains our top pick for 2026, particularly for teams that want a polished, easy-to-deploy experience.
Yet what Geotab does well is scale. The platform can support a three-vehicle operation on a basic GPS plan just as effectively as it handles a national fleet running AI analytics and EV monitoring. A recent addition, Geotab Ace, is a generative AI assistant that lets you query your fleet data in plain language, bringing complex reporting within reach for managers who aren't data analysts by trade.
Geotab: At a glanceAttribute
Notes
Score
GPS tracking
Near real-time tracking with Active Tracking available on higher-tier plans; no in-app traffic alerts
4.0
Asset management
GO Anywhere device enables non-powered asset tracking; requires a separate plan
4.0
Usage analytics
Geotab Ace AI assistant and customizable benchmarking reports deliver excellent data depth
4.5
Cost control
Fuel management tools are solid but limited to Pro and ProPlus plans
3.5
Compliance monitoring
FMCSA-certified ELD with 100+ HOS rulesets, IFTA, DVIR, and tachograph support
4.5
Alerts & notifications
Configurable alerts via email, pop-ups, and in-vehicle coaching; no real-time traffic alerts
3.5
Ease of use
Feature-dense dashboard with a noticeable learning curve for new users
3.5
Price and scalability
Scales well across fleet sizes, but reseller-set pricing complicates upfront budgeting
3.0
Customer service
24/7 live chat in English, French, and Spanish; phone support delivered through resellers
4.0
Geotab is a strong all-rounder suited to data-focused fleet operators. The compliance and analytics capabilities are among the best in the category, but the reseller pricing model and a steeper-than-average learning curve keep it from being the easiest starting point for first-time fleet managers.
Geotab: Features(Image credit: Geotab)MyGeotab covers the full range of fleet management needs: GPS tracking, driver behavior monitoring, compliance reporting, fuel management, and EV fleet support across a five-tier plan structure (Base, Regulatory, Pro, ProPlus, and GO). The platform starts lean and scales as your operation grows, but some of the most useful capabilities are locked behind the Pro and ProPlus tiers. It's worth mapping your requirements against the plan structure before you commit.
The analytics and compliance coverage is where Geotab earns real credit. Geotab Ace answers plain-language fleet queries without requiring you to build custom reports from scratch, and the compliance suite is one of the most thorough in the market. The platform supports over 100 HOS rulesets, IFTA reporting, and DVIR workflows, covering the bulk of what regulated North American fleets need in one place.
The Marketplace ecosystem adds further depth, with 250+ third-party integrations connectable via the IOX expandability system. You can attach dash cams, temperature sensors, NFC card readers, and more. Competing platforms like Samsara offer more native safety features out of the box, including built-in theft prevention and real-time traffic overlays, which Geotab currently lacks. For organizations that want to build a tailored solution on an open platform, though, the Marketplace breadth is difficult to beat.
Geotab: Ease of Use(Image credit: Geotab)MyGeotab runs in any major browser without a local install, and the dashboard puts a lot of information in front of you immediately. That depth comes with a real learning curve: most users describe a significant adjustment period during the first few weeks, especially when configuring exception rules or building custom reports. Geotab does provide good onboarding resources through MyGeotab Academy, a detailed knowledge base, and video tutorials, so the path to proficiency is well-supported even if it takes time.
The mobile app extends the core features reasonably well, covering trip history, alerts, and driver status. Navigation feels cluttered compared to newer, mobile-first platforms, and the map interface can lag on slower connections. For tech-comfortable fleet managers, these are manageable. For teams short on training time, they're worth factoring into your assessment.
Geotab: PricingGeotab sells exclusively through third-party resellers, so you won't find a published price list on its website. As a general guideline, hardware units typically cost $80–$120 to purchase outright, while bundled plans that include rented hardware run approximately $30–$40 per vehicle, per month. Independent pricing estimates suggest per-plan costs in the $20–$40/vehicle/month range depending on tier, but your actual quote depends on your reseller.
This model cuts both ways.
Resellers can bundle local installation, custom support tiers, and competitive discounts that Geotab wouldn't offer directly. But the trade-off is that comparing costs takes effort, and some resellers lock you into multi-year contracts. Platforms like Samsara publish their rates openly, which makes budget planning much more straightforward. For established fleet operations with procurement teams, the reseller model is workable. For smaller teams buying for the first time, it slows the process down.
Geotab: Customer support(Image credit: Geotab)Geotab's support offering is strong for the category. Live chat is available 24 hours a day, seven days a week in English, French, and Spanish, accessible directly from within MyGeotab, the community portal, or the website. Phone support is available 24/7/365 through authorized resellers, alongside email, a community forum, and a detailed self-service knowledge base.
The reseller layer is worth understanding. Your primary support relationship is with your reseller rather than Geotab directly, so response quality can vary depending on the partner you're working with. When your reseller is responsive, the system works well. When it isn't, there's an extra step between you and resolution. On balance, though, Geotab's support infrastructure is one of its stronger selling points, and the free installation assistance available through its authorized installer network is something several competitors don't offer.
Geotab: AlternativesGeotab is one of the most capable fleet management platforms available, particularly for organizations that need deep compliance coverage and detailed analytics across a large vehicle count. The FMCSA-certified ELD, Geotab Ace AI assistant, and 250+ Marketplace integrations give fleet managers tools that hold up at scale, and the open API makes it one of the most customizable options in the category.
That said, it's not the most plug-and-play solution out there. The reseller-only pricing creates friction for buyers trying to compare costs quickly, and the MyGeotab learning curve requires a real onboarding investment. Teams that prioritize ease of use and speed to deployment will likely be better served by Samsara. But for fleet operators building a long-term, data-driven operation they plan to customize over time, Geotab makes a compelling case.
Geotab: How we testedMy evaluation drew on hands-on testing of the MyGeotab platform alongside a review of official Geotab documentation, third-party reseller information, and independent research from ABI Research, Tech.co's February 2026 fleet industry survey, and verified user reviews. I assessed the platform across nine core attributes covering GPS tracking, analytics, compliance, pricing structure, ease of use, and customer support quality.
Geotab: FAQsDoes Geotab work for small fleets?Yes, Geotab works well for small fleets. The Base plan covers GPS tracking, driver ID, and basic alerts at a low per-vehicle cost, and you can upgrade individual plans as your needs grow. Third-party resellers typically offer flexible pricing that suits operations with just a few vehicles. That said, the platform's most valuable tools, including fuel management and Active Tracking, require the Pro or ProPlus tier.
What is Geotab Ace?Geotab Ace is the platform's generative AI analytics assistant. It lets you ask plain-language questions about your fleet data and surface quick answers without building reports manually, and it's particularly useful for managers who want fast visibility into fuel consumption, driver behavior, or maintenance trends without navigating the full reporting suite.
Is Geotab FMCSA compliant?Yes. Geotab's ELD solution is FMCSA-certified and covers Hours of Service (HOS), Driver Vehicle Inspection Reports (DVIR), and IFTA reporting. The platform supports over 100 HOS rulesets for the US and Canada, including exemptions for agriculture, short-haul operations, and 16-hour workdays.
Why doesn't Geotab publish its pricing?Geotab sells exclusively through a network of third-party resellers, so pricing is set by those resellers rather than Geotab itself. To get an accurate quote, you'll need to contact a reseller directly. This arrangement can limit pricing transparency, but it also means resellers can bundle local installation services and customized contracts that a standard subscription model wouldn't include.
How does Geotab compare to Samsara?Both platforms are highly capable, but they suit different buyers. Samsara publishes its pricing openly, offers a more approachable interface, and includes native safety features like built-in AI dash cams and real-time traffic overlays.
Geotab has a deeper open API, broader third-party customization options, and more flexibility through its reseller network. For teams that want simplicity and speed to deployment, Samsara has the edge. For organizations building a custom, scalable fleet solution over time, Geotab's open platform is the stronger fit.
Alice and Steve is the newest comedy series on Hulu (Disney+ internationally), and the premise might immediately suck you in due to how shocking it is.
Alice (Nicola Walker) is a woman whose decades-long friendship with Steve (Jemaine Clement) becomes strained when she learns he is dating her daughter, Izzy (Yali Topol Margalith). Yikes.
There's a lot to unpack here. Steve has been in Alice's life for many years, even going on holiday with her and her family and spending Christmas with them all. So learning that he is dating her 26-year-old daughter makes her lose her mind, understandably so, as it seems so out of the blue.
Despite the seriousness of the situation, Alice and Steve definitely leans more into the comedy and absurd elements to lighten things up. As an audience, we get to laugh at the mess they've all found themselves in, like flies on the wall. Rather them than me.
One of my biggest frustrations is that the chemistry between Steve and Izzy is lacking, and their relationship doesn't seem to make any sense. It moves very fast, what appears to be a rebound after Izzy's breakup escalates at lightning speed, and by the second episode, the two are in a relationship, labels and all. Hey, you do you, I guess, but it does feel like they've just been mashed together as the catalyst for some drama.
If you are willing to suspend your disbelief, there's plenty of fun to be had here. Nicola Walker never disappoints, and she does a great job here as a scorned mother and friend, absolutely horrified by the situation. Alice is a very well-rounded character who makes some childish decisions throughout the series, but given everything that's happening, it's easy to still feel sorry for her.
Alice tries to sabotage the relationship and get life back to normal, meddling and scheming in ways that cause division between her and everyone around her. It is a desperate attempt to put things right, even though she can't reasonably control the actions of anyone but herself.
I'd watch anything Nicola Walker is in, honestly. (Image credit: Hulu)Alice and Steve is funny and did make me laugh out loud on several occasions. Marcia Warren is a great addition to the cast as Alice's mother, Val, who delivers some sharp takedowns when needed, and Joel Fry adds tension as Alice's husband, who has a strained relationship with her at the best of times.
We also have Alice and Daniel's son, Dom (Tyrese Eaton-Dyce), and his girlfriend, Rome (Eilidh Fisher), whose sweet dynamic provides a break from the constant drama at the center of the show.
Across six episodes, we get to witness the various family dynamics and how chaotic they are. It feels well-paced, and there's plenty of screen time for supporting cast members, too.
The relationship between Steve and Izzy is the sort of scandal that can rapidly spiral out of control, with plenty of characters weighing in even when it's really none of their business. That element of it is wildly entertaining to watch as you form your own opinions, too. Nobody in Steve and Izzy's lives is particularly enthused by their relationship, making it impossible for them to be a normal couple.
Whilst many of the decisions and narrative beats in Alice and Steve are deliberately shocking, some frustrated me more than others. This is definitely the kind of show that will have people engaged in debates around what's happening and whether or not we think it was the right thing to do. You'll know what I mean when you watch it unfold.
There's a cliffhanger to the series, too, leaving the door open for a season 2, which might never arrive. In a world of streaming, where our favorite shows sometimes get canceled, I always worry that a story will be half-told.
Even though I didn't like Alice and Steve as much as others, and would go as far as to say it was "fine", I do hope that fans get a satisfying ending. Leaving everyone in limbo after so much character-driven drama feels very cruel indeed.
Managing a commercial fleet gets complicated fast. Between tracking driver behavior, scheduling maintenance, and keeping tabs on assets across multiple locations, you need software that will help rather than get in the way. If you're still working through your options, TechRadar's guide to the best fleet management software covers the full competitive picture.
TechRadar reviewers spend hundreds of hours each month evaluating B2B software across categories, and fleet management is no exception. Our current top pick for 2026 is Samsara, which leads on compliance tools and driver safety analytics. GPSWOX takes a different approach. It's a broad-reach platform that prioritizes hardware flexibility and affordability over depth in any single area.
Launched in 2014 and headquartered in London, GPSWOX now serves over 100,000 users in 123 countries and supports more than 900 GPS tracker models, which is one of the widest compatibility ranges in the category. That makes it a practical choice if you're working with existing hardware, operating across borders, or can't standardize devices across your fleet.
GPSWOX GPS: At a glanceAttribute
Notes
Score
GPS tracking
Real-time location updates every 3 seconds with 900+ device compatibility
4.5/5
Asset management
Covers vehicles, cargo, equipment, and personnel, though asset-level detail depth is limited
4.0/5
Usage analytics
Driver behavior, fuel consumption, idling, and route history are all tracked
4.0/5
Cost control
Maintenance scheduling and fuel monitoring support ongoing cost reduction
4.0/5
Compliance monitoring
Basic hours-of-service tracking is present, but ELD and FMCSA compliance tools are underdeveloped
2.5/5
Alerts & notifications
Configurable alerts via SMS, email, and mobile app for geofence, speed, and theft events
4.5/5
Ease of use
Clean interface with award recognition; setup completes in under five minutes
4.0/5
Price and scalability
Four clear tiers from $2.99/mo (1 object) to $99+/mo (unlimited); Pro plan caps at 50 objects, which may push mid-sized fleets to White Label
3.5/5
Customer service
24/7 support is standard across all plans, but only White Label gets prioritized service; some users report slow responses during outages
3.5/5
GPSWOX sits comfortably in the mid-tier of fleet management platforms. Its GPS tracking accuracy and alerting capabilities are among its strongest areas, and the pricing structure is transparent enough that smaller organizations can plan budgets without guesswork.
Compliance monitoring is the clearest gap. Fleets operating in heavily regulated environments will likely need a separate compliance-focused platform alongside it.
GPSWOX GPS: FeaturesGPSWOXGPSWOXGPSWOXGPSWOXGPSWOXGPSWOX covers the core requirements of fleet management well: real-time GPS tracking, geofencing, route history, driver behavior monitoring, fuel consumption analysis, and maintenance scheduling. The platform also supports dash cameras, temperature sensors, and a range of custom accessories, which extends its usefulness beyond standard vehicles to refrigerated cargo fleets and heavy equipment. For organizations that want to consolidate multiple tracking categories into one system, that breadth is a genuine advantage.
The driver behavior tools let fleet managers flag speeding, aggressive braking, and unauthorized vehicle use, feeding into vehicle-specific reports useful for coaching programs or identifying repeat issues. Maintenance scheduling can be triggered by mileage, engine hours, or elapsed time, with automatic alerts when service is due. According to GPSWOX's own documentation, a well-managed maintenance plan can cut repair and maintenance costs by up to 10%.
The white-label option sets GPSWOX apart from most competitors. Resellers and fleet service businesses can deploy the platform under their own brand, with a custom name, logo, and domain. That's not a feature most fleet operators need, but it signals a platform architecture built for scale. What's missing compared to leaders like Samsara is depth in regulatory compliance, AI-driven predictive analytics, and integrated ELD hardware.
GPSWOX GPS: Ease of UseGPSWOXGPSWOXSetup is one of GPSWOX's genuine strengths. Once a plan is active, the registration process takes under five minutes, and GPSWOX's team handles the initial technical configuration at no extra charge. The interface has earned a Great User Experience Certificate from FinancesOnline, which was consistent with my findings during testing. Navigation is straightforward, plus the map-based dashboard gives a clear read on fleet status without requiring menu-diving.
That said, the platform's flexibility creates some complexity at scale. Organizations managing thousands of devices across multiple user accounts will find the three-tier permission system functional but not especially granular compared to enterprise-grade alternatives. The mobile app, available for iOS and Android, is included across all plans and works well for field use.
GPSWOX GPS: PricingGPSWOX offers four plans. Lite covers a single object at $2.99 per month billed annually. Basic tracks up to five objects at $9.97 per month, also billed annually. Pro steps up to 50 objects at $49 per month billed monthly. Finally, the White Label plan starts from $99 per month and supports unlimited objects, and it is the only tier that includes API access, custom branding, admin tools, database backup, and prioritized technical support.
That structure is straightforward, but the object limits are worth reading carefully. The Pro plan's ceiling of 50 objects will rule it out for mid-sized fleets, pushing them to the White Label plan even if they have no interest in the reseller features. Google Maps integration also carries a separate fee, which is an additional line item most competitors fold into their base plans. Samsara and Verizon Connect tend to bundle more at comparable price points, though they typically require hardware commitments or annual contracts that GPSWOX doesn't.
GPSWOX GPS: Customer supportGPSWOX provides 24/7 technical support across all plans, though only White Label subscribers get prioritized service. The lower three tiers (Lite, Basic, Pro) receive standard support, which is worth noting for businesses that depend on fast response times. Free setup and training are available to all customers, along with a documentation library covering video guides, written manuals, and webinar resources.
User reviews paint a mixed picture. Many customers highlight fast, responsive support for routine queries. A smaller number report longer wait times during platform outages. In one documented case, a reseller experienced a three-hour server disruption and waited over five hours for a substantive response.
GPSWOX GPS: AlternativesGPSWOX is a capable, cost-transparent fleet management platform that does a lot of things well. The GPS tracking accuracy, broad hardware compatibility, and absence of long-term contracts make it a practical choice for small and mid-sized fleets, particularly those operating internationally or working with a mix of existing tracker hardware. The alerting and notification system holds up in practice, and free setup reduces the friction of getting started.
Where it falls down is compliance. Organizations subject to FMCSA regulations, or in industries where hours-of-service logging and ELD certification are mandatory, will find GPSWOX under-equipped for those requirements. For those fleets, a compliance-first platform is a better fit. For everyone else evaluating an accessible, hardware-flexible GPS tracking system with a transparent monthly cost, GPSWOX is worth a trial run.
GPSWOX GPS: How we testedMy evaluation of GPSWOX drew on a combination of hands-on platform testing, official product documentation, and verified user reviews. I assessed each major feature area, including tracking accuracy, alerting, reporting, usability, and support quality, against real-world fleet management requirements and compared the platform's pricing and capabilities against direct competitors in the mid-market category.
GPSWOX GPS: FAQsDoes GPSWOX work with my existing GPS hardware?GPSWOX supports more than 900 GPS tracker models, covering most major manufacturers including Teltonika, Ruptela, and Concox. If your existing device isn't on the supported list, the company says it can add new device protocols on request. This makes GPSWOX one of the more hardware-flexible platforms in the fleet management category, which is particularly useful if your fleet uses a mix of devices or you're transitioning from another system.
What are GPSWOX's pricing plans?GPSWOX has four plans. Lite is $2.99 per month (billed annually) and tracks a single object. Basic is $9.97 per month (billed annually) for up to five objects. Pro is $49 per month and covers up to 50 objects. The White Label plan starts from $99 per month with no object cap, and it is the only tier that includes API access, custom branding, and prioritized support.
Can GPSWOX handle large enterprise fleets?The Pro plan tops out at 50 objects, so larger fleets need the White Label tier. GPSWOX's architecture has been tested at significant scale. One case study on the company's site describes a reseller who grew from 400 to over 150,000 tracked objects on the platform. Performance at that scale can vary depending on whether you're using GPSWOX's cloud servers or a self-hosted deployment.
Does GPSWOX support compliance and ELD requirements?Basic hours-of-service tracking is available, but GPSWOX does not position itself as a compliance-first platform and does not offer certified ELD hardware. If FMCSA ELD compliance is a regulatory requirement for your fleet, you should evaluate a dedicated compliance solution such as Motive or Samsara, either instead of or alongside GPSWOX.
Can I white-label GPSWOX for my own tracking business?Yes. GPSWOX offers a white-label software package designed for GPS tracking resellers and fleet service businesses. It includes custom branding (name, logo, domain), multi-language configuration, and the option to add a payment gateway to charge end customers directly. The White Label plan starts from $99 per month.
Verizon Connect Reveal is a fleet management and GPS tracking platform built for companies that take their mobile workforce seriously. It traces its lineage to three major telematics brands, Telogis, Verizon Networkfleet, and Fleetmatics, and that combined history shows in the depth of its feature set. Whether you're managing a ten-vehicle service operation or a sprawling logistics network, Reveal is designed to be a platform you won't outgrow quickly.
At TechRadar, we evaluate dozens of fleet management tools each year, spending hundreds of hours examining how platforms perform across GPS accuracy, compliance coverage, reporting, and day-to-day usability. Verizon Connect consistently stands out for its analytics depth. For 2026, however, Samsara remains our top overall pick, offering stronger integration support and a more consistent customer experience. You can find all of our recommendations in our best fleet management software guide.
What draws fleet managers to Verizon Connect is the same thing that can frustrate smaller operations: this platform is built with enterprise scale in mind. The feature set is extensive, the data is granular, and customization goes deep. But that depth comes with a learning curve, a mandatory three-year contract, and customer support that too many users describe as difficult to reach when something goes wrong.
Verizon: At a glance(Image credit: verizon connect)Attribute
Notes
Score
GPS tracking
Near real-time updates at 30-second intervals, powered by Google Maps, with geofencing and full route replay
4.5
Asset management
Tracks vehicles, trailers, and equipment with live status, usage history, and diagnostic data
4.0
Usage analytics
Leads the industry on fuel and carbon reporting; driver scorecards are detailed and genuinely actionable
5.0
Cost control
Fuel monitoring and idle tracking are strong, but subscription costs limit ROI for smaller fleets
3.5
Compliance monitoring
Full FMCSA-compliant ELD, HOS tracking, and DVIR — one of the strongest compliance stacks in the category
4.5
Alerts & notifications
Real-time push alerts for harsh driving, geofence breaches, ignition status, and more
4.0
Ease of use
Clean web interface, but the mobile app has reported lag issues and the platform demands time to learn
3.5
Price and scalability
Custom-quote model with no published rates; three-year contracts with auto-renewal create friction for buyers
3.0
Customer service
24/7 phone support is listed, but response quality is widely criticized across reviews.
2.0
Verizon Connect earns high marks where it counts technically: tracking accuracy, compliance coverage, and analytics depth. Where it loses points is in the areas that affect the day-to-day experience of buying and running it, namely pricing transparency, contract flexibility, and support reliability.
Verizon: Features(Image credit: Verizon connect)Verizon Connect Reveal is feature-rich in ways that most competitors can't match outright. The analytics suite is the clearest differentiator. I found the fuel and carbon footprint reporting more detailed than anything I've seen from a comparable platform, including Samsara. The system tracks engine and cargo temperature, EV battery levels, driver scorecards built from harsh braking and acceleration events, and idling patterns across the entire fleet.
The compliance tools are equally strong. Verizon's ELD solution is fully FMCSA-compliant and covers hours-of-service (HOS) tracking and driver vehicle inspection reports (DVIRs) through both desktop and mobile apps. The Scheduler tool is a drag-and-drop job management system with live technician status and mobile job sheets, adding a field service layer that many fleet platforms treat as an afterthought. For fleets that need to stay on top of DOT regulations, this is one of the most complete compliance stacks available.
One area where Verizon Connect still lags behind is integrations. As of spring 2025, the platform offered 65 third-party integrations across a dozen categories, which is a genuine improvement over previous years but well short of Samsara's 300-plus app catalog. If your fleet depends on niche software for EV charging, fuel management, or maintenance scheduling, you'll want to verify compatibility before signing anything.
Verizon: Ease of Use(Image credit: verizon connect)The web interface is polished and well laid out, with a top navigation bar that keeps core tools accessible without much hunting. I found the customizable dashboard genuinely useful for surface-level fleet monitoring, and the live map, powered by Google Maps, responds quickly with smart clustering that keeps large fleets readable at a glance. Online training courses are available and worth working through, particularly if you want to get the most out of the reporting tools.
The mobile experience is less consistent. The Spotlight app for iOS and Android covers the essentials: search, live tracking, and two-way messaging between drivers and managers. But a recurring complaint among users is lag and occasional data drops during busy windows, and for a platform pitched at enterprise operations where timing matters, those glitches add real friction. New users should also expect several weeks before the platform clicks fully; this is not something you can hand off to a dispatcher and walk away from on day one.
Verizon: PricingVerizon Connect no longer publishes pricing on its website. You'll need to request a quote directly, and the final number depends on fleet size, hardware choices, and selected features. Based on user-reported data and independent testing, the Reveal Starter plan starts at around $23.50 per vehicle per month, while the full Reveal plan typically lands between $35 and $55 per vehicle per month. A 30-day free trial is available, beginning five days after hardware ships.
The bigger concern is the contract structure. Verizon Connect defaults to a 36-month agreement, and hardware installation terms typically lock you into that full duration. Cancelling early means paying out the remaining contract balance, which for a 15-vehicle fleet can translate to thousands of dollars.
Contracts also auto-renew annually after the initial term, and multiple users have flagged that catching this in time is harder than it should be. For small to mid-size fleets without a procurement team scrutinizing the fine print, that kind of commitment deserves careful consideration before you sign.
Verizon: Customer support(Image credit: Verizon connect)Verizon Connect offers 24/7 phone support for Reveal customers at 1-844-617-1100, with additional dedicated lines for Fleet and Government Fleet services. There's also a direct support email at reveal.support@verizonconnect.com and an online knowledge base for self-service troubleshooting. The coverage options look solid on paper.
In practice, the experience is far less reliable. Reviews consistently flag long hold times, unanswered emails, and issues left unresolved for weeks or months at a time. Some enterprise customers have documented hardware failures that went unaddressed for well over 100 days under their Master Subscription Agreement.
Trustpilot does highlight genuine bright spots, with several users praising specific account representatives who deliver excellent, personal service, but that inconsistency is a real problem for a platform that businesses depend on around the clock. Verizon Connect also received a failing BBB grade with over 100 unresolved complaints as of 2025, a figure that's hard to overlook.
Verizon: AlternativesVerizon Connect Reveal is a platform with genuine technical strengths. The analytics depth, particularly around fuel efficiency, carbon footprint, and driver behavior, is among the best in the industry, and the compliance tools cover everything from FMCSA ELD requirements to detailed DVIR workflows. If you run a large, compliance-sensitive fleet and need a platform that can scale with you, Reveal has real merit.
The problem is everything surrounding the platform itself. The custom-only pricing, three-year default contracts, and auto-renewal terms create buying risk for mid-size fleets that don't have dedicated teams to manage the fine print. A support operation that so consistently fails its customers is hard to recommend without that caveat front and center. For enterprise buyers with the resources to absorb that risk and the patience to climb the learning curve, Verizon Connect is a serious contender. Everyone else should compare carefully with Samsara before making a commitment of this length.
Verizon: How we testedI evaluated Verizon Connect by examining its feature documentation and testing the web-based Reveal platform directly, cross-referencing findings against verified user reviews from top review sites. I also compared Verizon Connect's performance against Samsara, Motive, and other fleet management suites across GPS tracking accuracy, compliance coverage, reporting depth, pricing structure, and customer service quality.
Verizon: FAQsDoes Verizon Connect require a long-term contract?Yes, the standard agreement for Reveal customers is 36 months, and hardware installation terms typically lock you into that full duration. After the initial term, contracts auto-renew annually, something that has caught many users off guard. A 30-day risk-free trial is available, starting five days after hardware ships, but cancelling beyond that window means paying out the remaining contract balance.
What types of vehicles and assets does Verizon Connect support?Verizon Connect tracks a wide range of assets, including cars, trucks, trailers, heavy machinery, and both battery electric vehicles (BEVs) and plug-in hybrids (PHEVs). For EVs, the platform shows charge state and battery level in near real-time. Asset trackers also work on non-powered equipment, covering job sites, storage facilities, and industrial environments. Coverage extends across the US, Canada, and Mexico.
How does Verizon Connect handle ELD compliance?Verizon Connect is fully FMCSA-compliant, covering hours-of-service tracking, electronic logging, and driver vehicle inspection reports. Drivers use the Reveal Driver app to submit inspection reports, review their logs before submission, and receive real-time road condition alerts. DVIRs are built into standard app startup and shutdown workflows, so compliance checks become part of regular driver routines rather than an added step.
Is Verizon Connect a good fit for small fleets?It depends on how much management overhead you can absorb. The platform is built with mid-to-large enterprise operations in mind and the pricing, contract terms, and learning curve all reflect that. For fleets under ten vehicles, a mandatory three-year commitment may not be worth it compared to lighter-weight alternatives with more flexible contracts. If your small fleet has complex compliance or reporting needs, the depth of Verizon Connect's tools might still justify the investment, but go in with a clear-eyed view of the total cost.
How does Verizon Connect compare to Samsara?Both platforms are enterprise-grade, but they differ in meaningful ways. Verizon Connect leads on fuel and carbon reporting and has stronger GIS data overlay for industry-specific fleets. Samsara has a larger integration ecosystem (300-plus apps versus Verizon's 65 as of spring 2025), a more accessible pricing model, and a stronger customer support reputation. For most businesses evaluating fleet management in 2026, Samsara is the safer starting point, though Verizon Connect's analytics depth can make it the better fit for data-heavy operations.
Azuga is a GPS fleet management platform from Bridgestone, serving over 14,000 commercial fleets across the US. If you're evaluating your options, it's one of the more established names on our best fleet management software list, and it earns its place.
TechRadar reviewers spend hundreds of hours each month researching B2B software across categories, including fleet management. In my evaluation of Azuga, I found it most compelling for small to mid-sized fleets that want a system they can deploy without IT involvement. Driver safety is clearly the platform's priority, and everything from its scoring system to its dashcam integration reflects that.
If your budget allows for a more advanced platform, Samsara remains our top pick for 2026. But Azuga is a credible alternative, particularly for businesses that want straightforward hardware, accessible reporting, and round-the-clock support without a steep learning curve.
Azuga: At a glanceAttribute
Notes
Score
GPS tracking
Real-time tracking accurate to within 5 feet via OBD-II; one-minute intervals locked to the top tier
4.0
Asset management
Equipment Beacons cover non-powered assets, but require additional hardware spend
3.5
Usage analytics
Driver scorecards and diagnostic reports are solid; custom reports only on CompleteFleet
4.0
Cost control
Predictive maintenance tools are a genuine strength; FuelSaver is gated to CompleteFleet
4.0
Compliance monitoring
ELD compliance is a paid add-on rather than a built-in feature; DVIR reporting is included
3.5
Alerts & notifications
Strong real-time alerts covering speed, hard braking, geofencing, seat belts, and distracted driving
4.5
Ease of use
Plug-and-play hardware installs in under a minute; dashboard and mobile app are clean and accessible
4.5
Price and scalability
Per-vehicle pricing is competitive, but the mandatory 36-month contract limits flexibility
3.5
Customer service
24/7 support on all tiers; dedicated customer success manager only on CompleteFleet
4.0
Azuga earns solid marks across most categories. Its strongest qualities are ease of setup and the depth of its safety alerts, which go well beyond what most entry-level fleet tools offer. The scores drop where the platform asks for extra spend: asset management and compliance monitoring both require add-on investment, and useful analytics and coaching features sit behind the top pricing tier.
Azuga: Features(Image credit: Azuga)Azuga's feature set covers the core needs of most commercial fleets: real-time GPS tracking, driver performance scoring, geofencing, maintenance alerts, and a dual-facing AI dashcam available as an add-on. The platform suits small to mid-sized fleets with mixed-use vehicles, and its design prioritises accessibility over depth. Fleets with more complex requirements, such as large-scale logistics or regulated transport, may find it thinner than Samsara or Verizon Connect.
The most distinctive element of Azuga's approach is its driver engagement model. Rather than monitoring drivers purely for compliance, the platform treats safety as a competition. Drivers receive scores from 0 to 100 through the DriveSafe system, and top performers earn quarterly rewards from brands like Amazon and Domino's. The Azuga Coach feature, which provides video-based online coaching for drivers who need improvement, is restricted to the CompleteFleet tier.
ELD compliance being a paid add-on is a meaningful gap, especially for fleets operating under federal Hours of Service rules. Asset tracking also requires separate hardware. That said, the three-tier structure covers enough for most small to mid-sized operators, and the 70-plus third-party integrations in the Azuga marketplace, including Fleetio, WEX fuel cards, and Route4Me, extend the platform's reach considerably.
Azuga: Ease of UseAzuga has built a reputation for being the easiest fleet management platform to get running, and that reputation holds. The OBD-II tracking devices plug directly into each vehicle's diagnostic port in under 20 seconds, with no professional installation required. Once the hardware is in place, the web dashboard and FleetMobile app are both well-organised, with live map views, driver reports, and maintenance flags easy to locate without much hunting.
The dashboard presents a lot of information without feeling cluttered, which is harder to achieve than it sounds in fleet software. The mobile app covers the same core features as the desktop version and is available for both iOS and Android. A number of users have reported occasional lag in the app's real-time updates, and the interface does show its age compared to newer platforms on the market.
Azuga: PricingAzuga publishes its base prices on its website. BasicFleet starts at $25 per vehicle per month and includes GPS tracking, alerts, driver scores, geofencing, and scheduled maintenance. SafeFleet at $30 per vehicle per month adds distracted driving detection, panic alerts, vehicle diagnostics, and fuel card integration. CompleteFleet at $35 per vehicle per month unlocks one-minute tracking, FuelSaver, Azuga Coach, custom reports, and a dedicated Customer Success Manager. The AI SafetyCam dashcam add-on costs $41.99 per vehicle per month as of Spring 2025, and ELD compliance carries a separate fee.
The per-vehicle rates are competitive with Samsara and Verizon Connect, but the mandatory 36-month commitment is a significant constraint for businesses that want flexibility. Some competitors offer annual contracts, and a handful operate on rolling monthly terms. There is no free trial for fleets with fewer than 30 vehicles, which means smaller operators are making a multi-year commitment based on a demo alone. If your fleet needs compliance tools or dashcams from day one, the total monthly cost climbs quickly.
Azuga: Customer support(Image credit: Azuga)All three Azuga tiers include 24/7 support via phone, email, and web ticketing, which is a meaningful advantage over platforms that restrict live support to higher-paying customers or business hours. The company also maintains an extensive library of online documentation and training materials, so most common setup questions can be resolved without waiting for an agent.
The main caveat is that a dedicated Customer Success Manager is only included with CompleteFleet. Quarterly fleet performance reviews, which can be useful for spotting trends and targeting driver coaching, are also reserved for that top tier. Customers on BasicFleet or SafeFleet get responsive, accessible support, but the more proactive, account-level guidance costs extra.
Azuga: AlternativesAzuga delivers a well-executed fleet management experience at the entry to mid-market level. The plug-and-play hardware and clean software make it accessible for operators without a dedicated IT team, and the driver safety tools are among the best I've tested at this price point. The gamified driver scoring approach is particularly effective for fleets where engagement and accountability are ongoing challenges.
The 36-month contracts and feature gating across tiers are real weaknesses. One-minute tracking, FuelSaver, and personalised coaching are all reserved for CompleteFleet, and ELD compliance costs extra on every plan. For fleets that can commit to the contract and are comfortable with the add-on model, Azuga is a dependable platform at a fair price. For those who want more flexibility or compliance tools built in from the start, Samsara or Motive are worth a closer look.
Azuga: How we testedI evaluated Azuga by reviewing its official documentation, published pricing pages, and product announcements, alongside independent testing in a sandboxed environment. I examined user feedback from top review sites to identify patterns in real-world experience and cross-referenced all feature and pricing details against Azuga's website to confirm accuracy at the time of writing.
Azuga: FAQsDoes Azuga require professional installation?No. Azuga's tracking devices plug directly into a vehicle's OBD-II port and can be installed in under a minute without tools or technical knowledge. The dashcam attaches to the windshield with an adhesive pad. Software setup is handled through the web platform, and Azuga provides migration support if you're switching from another system.
What does Azuga's BasicFleet plan include?BasicFleet at $25 per vehicle per month covers GPS tracking, geofencing, alerts and notifications, driver scores, the driver rewards programme, scheduled maintenance, and reporting. It also includes 24/7 phone, email, and web support. Features like vehicle diagnostics, distracted driving detection, FuelSaver, and custom reports require an upgrade to SafeFleet or CompleteFleet.
Does Azuga include ELD compliance?Not by default. Azuga ELD is a paid add-on that helps fleets meet federal electronic logging device mandates for hours-of-service tracking and driver log management. If ELD compliance is a core requirement, factor this additional cost into your overall budget before comparing plans.
How long are Azuga contracts?Azuga's standard term is 36 months, which is common across the fleet tracking industry but longer than the annual or monthly contracts offered by some competitors. Contracts are coterminous, meaning all devices on your account renew on the same date. If shorter contracts matter to your business, GPS Trackit and Force Fleet Tracking both offer more flexible terms.
What is the Azuga SafetyCam?The SafetyCam is a dual-facing dashcam that records both the road ahead and in-cab driver behaviour. The Plus and Pro models, released in April 2025, add Advanced Driver Assistance System alerts for events like rolling stops and tailgating, and a Driver Monitoring System that detects fatigue, phone use, and missing seat belts in real time. SafetyCam is a paid add-on priced at $41.99 per vehicle per month as of Spring 2025.