<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.techradar.com/uk/rss/reviews" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from TechRadar UK in Reviews ]]></title>
                <link>https://www.techradar.com</link>
        <description><![CDATA[  ]]></description>
                                    <lastBuildDate>Fri, 06 Nov 2026 01:00:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ JMGO N3 Ultimate review: this projector is so, so bright, but less compelling at night ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-jmgo-n3-ultimate-one-minute-review"><span>JMGO N3 Ultimate: One-minute review</span></h2><p>The JMGO N3 Ultimate is the new, top-of-the-line option from JMGO. It brings a lot of what the brand had already been packing into a new design with a motorized gimbal stand and adjustable optics that provide quick or finely controlled setup options. </p><p>The JMGO N3 Ultimate's projection can be splendid, thanks to bright RGB lasers that give the projector enough juice to hold up in even well-lit rooms. The N3 Ultimate has vivid color and crisp detail, too. Unfortunately, the brightness isn’t matched by effective dimming to offer better performance in dark scenes, which is perhaps its biggest setback. Its motion could also be smoother without so many artifacts, but it’s not terrible either. </p><p>All told, it’s a capable projector that could serve a lot of people well, as long as they’re not seeking out dark, home theater setups where contrast is as important as brightness. At its $2,999 / £2,499 list price, it’s competitively priced compared to the <a href="https://www.techradar.com/best/4k-projector">best projectors</a>, but it’s been on sale for much less and becomes all the better a bargain.</p><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-price-and-release-date"><span>JMGO N3 Ultimate Review: Price and release date</span></h2><ul><li><strong>Release date: 2026 </strong></li><li><strong>List price: $2,999 / £2,499</strong></li></ul><p>The JMGO N3 Ultimate launched in 2026 and is now widely available. It has a $2,999 £2,499 list price, but it has already seen substantial discounts. At the time of writing, it was available for $2,349 / £2,119.</p><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-specs"><span>JMGO N3 Ultimate Review: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Supported screen sizes</p></td><td  ><p>40-300 inches</p></td></tr><tr><td class="firstcol " ><p>Optical technology</p></td><td  ><p>3 Laser DLP</p></td></tr><tr><td class="firstcol " ><p>Brightness (specified)</p></td><td  ><p>5,800 Lumens</p></td></tr><tr><td class="firstcol " ><p>Audio</p></td><td  ><p>2x 12.5-watt speaker</p></td></tr><tr><td class="firstcol " ><p>Ports</p></td><td  ><p>1x USB-A, 2x HDMI 2.1 (1x eARC)</p></td></tr><tr><td class="firstcol " ><p>Smart TV</p></td><td  ><p>Google TV</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>12.14 x 9.05 x 10.79 inches / 308.36 x 229.87 x 274.07mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>15.32 lb / 6.94kg</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-design-and-features"><span>JMGO N3 Ultimate Review: Design and features</span></h2><ul><li><strong>Built-in Google TV</strong></li><li><strong>Motorized gimbal stand and optical lens adjustments</strong></li><li><strong>1080p/240Hz VRR mode for gaming</strong></li></ul><p>JMGO has been rocking the same design for a few years now, and the JMGO N3 Ultimate does little to shift that. It’s still a fairly compact, two-tone rounded box sitting aloft on a gimbal stand with a rotating base, making it easy to set up and point the projection where you want it. </p><p>This go around, JMGO has incorporated small motors for electronic control of the stand. By holding a dedicated button on the remote control and using gyro controls, you can adjust the tilt and rotation of the projector. It’s good for quick adjustment but not for fine tuning. </p><p>In an interesting twist, the N3 Ultimate is JMGO’s projector that least needed this technology, as the projector incorporates advanced optics with adjustable zoom and lens shift. The zoom can shift the projector from a 0.88:1 to a 1.7:1 throw ratio, giving it a ton of range. Meanwhile, the lens shift lets it move the projection up or down by 130% or sideways by 53%, so you really just need to point it perpendicular to your wall, and you should have no trouble shifting and squeezing the projection to fit without any keystone correction. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LVcfzyphnrQey2u7SC2x4S" name="JMGO N3 Ultimate (5).JPG" alt="A side view of the JMGO N3 Ultimate projector." src="https://cdn.mos.cms.futurecdn.net/LVcfzyphnrQey2u7SC2x4S-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Those manual controls are how you’ll get the best picture, but the JMGO N3 Ultimate has a host of automated tools that can quickly make adjustments for you, which may be convenient if you’re moving it often. It can analyze the projection area available to it, re-aiming, shrinking, and shifting the picture to fit. I found this using digital keystone even when it really wasn’t called for, though, so I wouldn’t count on it doing the best job. </p><p>One additional automatic tool that may be more helpful is the wall color adaptation. This uses the projector's camera and a series of test patterns to tweak colors so they appear better on your wall. You won’t need this if you use a screen, but it worked well on my beige walls. </p><p>Since the projector can move quite a bit in operation, it fits its connectors all at the base, rather than the rear of the projection unit itself. This can still get in the way of rotation, but makes vertical tilt a non-issue. The projector doesn’t have a great selection of ports, though, with just two HDMI 2.1 ports, one of which is eARC and probably should be kept for that purpose. There’s also a single USB-A port. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Y6sdeyMRFfJb9vPUy7EkPS" name="JMGO N3 Ultimate (7).JPG" alt="A close up of the ports at the back of the JMGO N3 Ultimate projector." src="https://cdn.mos.cms.futurecdn.net/Y6sdeyMRFfJb9vPUy7EkPS-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Thankfully, you don’t need to use any of those HDMI ports for basic streaming. The projector has built-in Google TV, and it operates quickly on its 4GB of memory. Annoyingly, it pauses playback while navigating menus sometimes (sometimes it doesn’t), but it’s quite serviceable otherwise. It even gets 64GB of storage, which can be useful if you use lots of apps. Perhaps, more crucially, the projector connects over Wi-Fi 6, giving it faster and more stable connectivity to work with while streaming.</p><p>For cinephiles, the JMGO N3 Ultimate supports HDR10 and Dolby Vision. Meanwhile, for gamers the projector can shift from 4K60Hz over to 1080p/240Hz and even brings VRR for smooth, low-latency, responsive gaming. There are some trade-offs though. Enabling VRR hurt clarity no matter if I left the projector at 4K or swapped to 1080p. Even at 1080p, VRR took a small toll on clarity. Fine text exhibited artifacts that looked like chroma subsampling. In games, it wasn’t an issue, but navigating Windows on PC to select games to play, it was a nuisance. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NT4vw929GQg25JRUCJGRJS" name="JMGO N3 Ultimate (10).JPG" alt="A view of the front of the JMGO N3 Ultimate projector." src="https://cdn.mos.cms.futurecdn.net/NT4vw929GQg25JRUCJGRJS-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Apart from its gyro controls, the Ultimate's remote is pretty basic. It has the standard Google TV controls and thankfully a pill-shaped volume control that’s easy to feel out in the dark. It includes shortcuts to Prime Video, Netflix, YouTube, and one app of your choice. Google TV Freeplay gets a separate shortcut at the top of the remote. Annoyingly, there’s no mute button for quick silencing and while the remote has motion-activated lighting behind some of its keys, it doesn't behind the shortcut buttons. </p><p>Since the JMGO N3 Ultimate is fairly portable, JGMO includes a foam carrying case that can fit it, the remote, and the power adapter all inside. It’s not exceedingly robust or impressive, but it’s not too bulky and should do a better job protecting the hardware than a typical backpack would.</p><ul><li><strong>Design &amp; features score:  4.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-picture-quality-and-performance"><span>JMGO N3 Ultimate Review: Picture quality and performance</span></h2><ul><li><strong>Wonderfully bright and colorful</strong></li><li><strong>Black levels could be darker</strong></li><li><strong>Crisp 4K visuals and responsive 1080p gaming</strong></li></ul><p>The JMGO N3 Ultimate has brightness in spades, and that’s where it shines best. When it comes to darkness, it can struggle. It fails to sink into darkness where it needs to, and the raised grays are distracting to see, never mind the regularly present letterboxes. Even when scenes aren’t very dark, these shortcomings are clear. Neither Dolby Vision nor adaptive brightness features seem to do the trick. </p><p>Thankfully, as soon as more light is called for, the JMGO N3 Ultimate delivers. It pumped out over 5,200 lumens by my measurements, which is plenty for most scenarios and not too far off the rated 5,800 lumens (nor did it require an awful picture setting). Bright scenes are clear and vibrant. Shadows look stronger in contrast to the brightness and the brightness is even enough to give the JMGO N3 Ultimate a solid showing in a modestly lit room. This makes it a great match for casual viewing, news, and bright cartoons. That brightness makes it all the easier to go big without the image getting too dim. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/dWueAPbrhKVF3SCqRNvaZS-1920-80.jpg" alt="A projected scene from Avatar 2: Way of Water from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/prenHjPsBPgPUF7xBKVPDS-1920-80.jpg" alt="A projection of blue meteors from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aafBGjYdGy4LK6QTaaw5ZS-1920-80.jpg" alt="A projection of blue meteors from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Alongside the brightness, the color of the RGB laser projection is stunning, just as it’s been in other projectors I’ve tested with the tech. When watching <em>Supergirl</em>, the glow of the green sun has plenty of depth, and the red cape glows majestically whenever the sun hits it. When Kara’s laser vision rips through the Brigands, it’s properly dazzling. The world of Pandora in the <em>Avatar</em> series is also lushly presented. </p><p>Motion can be hit or miss. By default the projector wants to use unsightly interpolation that presents loads of artifacts and makes the projection feel like anything but high-fidelity. With the MEMC setting dropped to low, it doesn’t look so bad, avoiding distracting soap opera effect and serious artifacts while helping reduce some of the stutter that occurs when it’s disabled entirely. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NDuuaMhHBsYzwJZamVn9NS-1920-80.jpg" alt="A projected scene of space from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DUQB2Nyhg3tUXDceRtiz8S-1920-80.jpg" alt="A projection of space from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/f9Vaa3CTeUNKaMaJ2qTkZS-1920-80.jpg" alt="A projected scene of space from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One area RGB laser projectors have been improving is the DLP rainbow effect. I’m not terribly sensitive to it, but I can usually catch it if I’m looking for it. Lately, I’ve been spotting it less and less on high-end laser projectors, but I can still catch it on the JMGO N3 Ultimate. Thankfully, it’s subtle, and I find it’s largely limited to subtitles</p><p>The adjustable optics help ensure a sharp picture from wherever you want to project. Stretched across about an 150-inch section of my wall, 4K looked brilliant in my living room.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5gqKMoNeHfhmxFTQS8J6ZS" name="JMGO N3 Ultimate (11).JPG" alt="A close up of the JMGO N3 Ultimate projector's remote control." src="https://cdn.mos.cms.futurecdn.net/5gqKMoNeHfhmxFTQS8J6ZS-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Outside of movies, the JMGO N3 Ultimate proves a great option for gaming. You want crisp detail from corner to corner in games, since you never know where something precious is hiding, and the optics help provide this. Latency is satisfyingly low at 4K but sinks to negligible levels at 1080p/240Hz. Mousing around my screen and zipping through levels in Hades 2, I didn’t feel a hint of latency in that mode. </p><p>The speakers on the JMGO N3 Ultimate aren’t bad, but they certainly aren’t an adequate match for the projection. They put out decent volume, helping ensure you’ve got enough sound to work with when you want to plop the projector down somewhere and start enjoying right away. They even provide some low-end, helping bump up effects in movies. But the quality of stereo sound won’t be very good unless you’re sitting perfectly in center with the projection.</p><ul><li><strong>Picture quality &amp; performance score: 3.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-value"><span>JMGO N3 Ultimate Review: Value</span></h2><ul><li><strong>Can serve multiple purposes well</strong></li><li><strong>Cheaper than many rivals while offering competitive brightness</strong></li></ul><p>The JGMO N3 Ultimate is a capable projector and can work well for folks who aren’t committing to a pitch-black home theater where its weaker black levels will steal focus.</p><p>At $2,999 / £2,499, it’s still fairly competitive with what’s on the market, but at $2,349 / £2,119, it’s more of a steal. It can compete with large TVs on value while providing the flexibility to enjoy movies and TV in 4K or switch over to 1080p for high-speed gaming. The different realms it can cover all from a single product help boost its value.</p><ul><li><strong>Value score: 4.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-should-i-buy-the-jmgo-n3-ultimate"><span>Should I buy the JMGO N3 Ultimate?</span></h2><div ><table><caption>JMGO N3 Ultimate Scorecard</caption><thead><tr><th class="firstcol " ><p>Attributes</p></th><th  ><p>Notes</p></th><th  ><p>Rating</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design and features</p></td><td  ><p>The JMGO N3 Ultimate brings a lot to the table. It’s built for flexibility with adjustable optics and a motorized stand that can make setup quick and easy without sacrificing image quality. It’s well equipped for movies and gaming, and it has built in streaming capabilities and serviceable speakers. It could have more ports and a better remote, though.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Picture quality and performance</p></td><td  ><p>The JMGO N3 Ultimate delivers on brightness and clarity, making it a joy to watch bright, colorful content with. It can even hold up well in rooms with a lot of ambient lighting. Where it falls short is in its contrast and motion, having distractingly elevated black levels that hurt dark scenes and either slight panning stutter or artifact-laden motion smoothing.</p></td><td  ><p>3.5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>With plenty of brightness and versatility at a surprisingly competitive pricing, the JMGO N3 Ultimate offers up a lot of value.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if">Buy it if...</h2><div class="product"><p><strong>You don’t like turning out all the lights</strong><br />The JMGO N3 Ultimate has brightness to spare, letting it handle dim and even well-lit rooms fairly well. If you don’t like viewing in the dark, this makes it a good match.</p></div><div class="product"><p><strong>You want quick and easy flexibility</strong><br />The JMGO N3 can work in a lot of different setups and it makes getting it all lined up easy. If you’re always moving your projector around, that can save you a load of time.</p></div><div class="product"><p><strong>You want versatility</strong><br />The JGMO N3 Ultimate can tackle 4K video, 1080p gaming, precise and careful optical setup, or quick and effortless setup. Its ability to step into different roles can be very convenient if you have a lot of different needs.</p></div><h2 id="don-39-t-buy-it-if">Don't buy it if...</h2><div class="product"><p><strong>You’re looking for OLED performance</strong><br />Few projectors do a great job with their black levels, and even the best aren’t really on the level with OLEDs. The JMGO N3 Ultimate isn’t even close, with raised black levels that don’t really look great in dark scenes.</p></div><div class="product"><p><strong>You have lots of input sources</strong><br />With just two HDMI ports, the JMGO N3 Ultimate is a recipe for annoyance if you have a handful of consoles, a Blu-ray player and the like. Heck, it doesn’t even have a 3.5mm jack you can use to free up the eARC port.</p></div><div class="product"><p><strong>You don’t move your projector ever</strong><br />A big part of the package, and therefore what you pay for, is the flexibility of the gimbal and optics. If you’re not planning to take advantage of them, you can save some money by looking elsewhere.</p></div><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-also-consider"><span>JMGO N3 Ultimate review: Also consider</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>JMGO N3 Ultimate</strong></p></td><td  ><p><strong>Valerion VisionMaster Max </strong></p></td><td  ><p><strong>Hisense C2 Ultra</strong></p></td><td  ><p><strong>Xgimi Horizon 20 Max</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$2,999 / £2,499</p></td><td  ><p>$3,999 / £ 3,799</p></td><td  ><p>$2,999 / £1,799</p></td><td  ><p>$2,999 / £2,599</p></td></tr><tr><td class="firstcol " ><p><strong>Screen sizes supported</strong></p></td><td  ><p>40 to 300 inches</p></td><td  ><p>40 to 300 inches</p></td><td  ><p>65 to 300 inches</p></td><td  ><p>40 to 300 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Brightness (specified)</strong></p></td><td  ><p>5,800 lumens</p></td><td  ><p>3,500 lumens</p></td><td  ><p>3,000 lumens</p></td><td  ><p>5,700 ISO lumens</p></td></tr><tr><td class="firstcol " ><p><strong>HDR support</strong></p></td><td  ><p>HDR10, HLG, Dolby Vision</p></td><td  ><p>HDR10+, HLG, Dolby Vision</p></td><td  ><p>HDR10+, HLG, Dolby Vision</p></td><td  ><p>Dolby Vision, HDR10+, HDR10, HLG, IMAX Enhanced</p></td></tr><tr><td class="firstcol " ><p><strong>Optical technology</strong></p></td><td  ><p>3 Laser DLP</p></td><td  ><p>3 Laser DLP</p></td><td  ><p>3 Laser DLP</p></td><td  ><p>3 Laser DLP</p><p><br /></p></td></tr><tr><td class="firstcol " ><p><strong>Smart TV</strong></p></td><td  ><p>Google TV</p></td><td  ><p>Google TV</p></td><td  ><p>Google TV</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Connections</strong></p></td><td  ><p>2x HDMI 2.1 (1 with eARC), 1x HDMI 2.0 , 1x optical, 1x 3.5mm</p><p><br /><br /></p></td><td  ><p>2x HDMI 2.1, 1x HDMI 2.0 (with eARC), 1x optical, 1x 3.5mm</p><p><br /><br /></p></td><td  ><p>2x HDMI 2.1 (1x with eARC), 2x USB, optical</p></td><td  ><p>2x HDMI (x1 eARC), 1x USB 3.0, 1x USB 2.0, 1x 3.5mm, 1x optical audio out</p></td></tr></tbody></table></div><div class="product"><p><strong>Valerion VisionMaster Max </strong><br />This projector may not be as bright, but it has wonderfully flexible optics, great visual performance and profound black levels that make it a far more worthy home theater projector. It tends to be a bit more expensive, though.</p></div><div class="product"><p><strong>Hisense C2 Ultra</strong><br />The Hisense C2 Ultra isn’t nearly as bright and doesn’t have the same degree of flexible optics as the JMGO N3 Ultimate. Still, it tends to cost nearly as much. This helps highlight how much the technology has progressed and come down in price in a short time. Read our full <a href="https://www.techradar.com/televisions/projectors/hisense-c2-ultra-review" data-dimension112="f3d60a04-cbbd-11f1-80ff-99ae7b123b77" data-action="Deal Block" data-label="Hisense C2 Ultra review" data-dimension48="Hisense C2 Ultra review" data-dimension25="">Hisense C2 Ultra review</a>.</p></div><div class="product"><p><strong>Xgimi Horizon 20 Max</strong><br />This model has most of the same capabilities and qualities as the JGMO N3 Ultimate, just in a different package. It had strong contrast in our testing, but it skips the motorized gimbal. If you know you want that dark performance, it’ll probably be the better pick, though you may be best just grabbing whichever is cheapest when you’re shopping since both have frequent discounts. Read our full <a href="https://www.techradar.com/televisions/projectors/xgimi-horizon-20-max-review" data-dimension112="f3d60a9a-cbbd-11f1-98b2-05bc879d6d93" data-action="Deal Block" data-label="Xgimi Horizon 20 Max review" data-dimension48="Xgimi Horizon 20 Max review" data-dimension25="">Xgimi Horizon 20 Max review</a>.</p></div><h2 class="article-body__section" id="section-how-i-tested-the-jmgo-n3-ultimate"><span>How I tested the JMGO N3 Ultimate</span></h2><ul><li><strong>Tested at home in multiple, real-world viewing conditions</strong></li><li><strong>Presented the display with a variety of media and formats</strong></li><li><strong>I have tested numerous projectors and displays over the last half-decade</strong></li></ul><p>I tested the JMGO N3 Ultimate at home, in real-world conditions. This saw it faced with ambient light coming in from numerous windows, in-room lighting, as well as ambient noise that both the projector and speaker systems had to overcome. The projector was tested both against a bare, white wall and an <a href="https://www.techradar.com/reviews/akia-screens-floor-motorized-tab-tension-cinewhite"><u>Akia Screens CineWhite screen</u></a>. It was presented with streamed content, HDR and non-HDR, and console gameplay. </p><p>My testing evaluates the projector’s performance with respect to its price and competition from other models I and colleagues at TechRadar have tested.</p><p>I have been testing projectors since 2021 and displays for even longer. </p><ul><li><em>First reviewed: November 2026</em></li><li><a href="https://www.techradar.com/news/how-we-test"><u>Read TechRadar's review guarantee</u></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/televisions/projectors/jmgo-n3-ultimate-review</link>
                                                                            <description>
                            <![CDATA[ JMGO’s N3 Ultimate is a high-end projector with competitive performance but a few drawbacks that keep it from perfection. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tA8QaEoEdmkfyzJjoCK7Qm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/TxbkMDqVWyVhsQG3DXs4QH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Nov 2026 01:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Projectors]]></category>
                                                    <category><![CDATA[Televisions]]></category>
                                                    <category><![CDATA[Home Theater]]></category>
                                                                                                                    <dc:creator><![CDATA[ Mark Knapp ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/i5YmbfHMgawfjNJCbYf7cm-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/TxbkMDqVWyVhsQG3DXs4QH-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A view of the front of the JMGO N3 Ultimate projector.]]></media:description>                                                            <media:text><![CDATA[A view of the front of the JMGO N3 Ultimate projector.]]></media:text>
                                <media:title type="plain"><![CDATA[A view of the front of the JMGO N3 Ultimate projector.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/TxbkMDqVWyVhsQG3DXs4QH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-jmgo-n3-ultimate-one-minute-review"><span>JMGO N3 Ultimate: One-minute review</span></h2><p>The JMGO N3 Ultimate is the new, top-of-the-line option from JMGO. It brings a lot of what the brand had already been packing into a new design with a motorized gimbal stand and adjustable optics that provide quick or finely controlled setup options. </p><p>The JMGO N3 Ultimate's projection can be splendid, thanks to bright RGB lasers that give the projector enough juice to hold up in even well-lit rooms. The N3 Ultimate has vivid color and crisp detail, too. Unfortunately, the brightness isn’t matched by effective dimming to offer better performance in dark scenes, which is perhaps its biggest setback. Its motion could also be smoother without so many artifacts, but it’s not terrible either. </p><p>All told, it’s a capable projector that could serve a lot of people well, as long as they’re not seeking out dark, home theater setups where contrast is as important as brightness. At its $2,999 / £2,499 list price, it’s competitively priced compared to the <a href="https://www.techradar.com/best/4k-projector">best projectors</a>, but it’s been on sale for much less and becomes all the better a bargain.</p><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-price-and-release-date"><span>JMGO N3 Ultimate Review: Price and release date</span></h2><ul><li><strong>Release date: 2026 </strong></li><li><strong>List price: $2,999 / £2,499</strong></li></ul><p>The JMGO N3 Ultimate launched in 2026 and is now widely available. It has a $2,999 £2,499 list price, but it has already seen substantial discounts. At the time of writing, it was available for $2,349 / £2,119.</p><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-specs"><span>JMGO N3 Ultimate Review: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Supported screen sizes</p></td><td  ><p>40-300 inches</p></td></tr><tr><td class="firstcol " ><p>Optical technology</p></td><td  ><p>3 Laser DLP</p></td></tr><tr><td class="firstcol " ><p>Brightness (specified)</p></td><td  ><p>5,800 Lumens</p></td></tr><tr><td class="firstcol " ><p>Audio</p></td><td  ><p>2x 12.5-watt speaker</p></td></tr><tr><td class="firstcol " ><p>Ports</p></td><td  ><p>1x USB-A, 2x HDMI 2.1 (1x eARC)</p></td></tr><tr><td class="firstcol " ><p>Smart TV</p></td><td  ><p>Google TV</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>12.14 x 9.05 x 10.79 inches / 308.36 x 229.87 x 274.07mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>15.32 lb / 6.94kg</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-design-and-features"><span>JMGO N3 Ultimate Review: Design and features</span></h2><ul><li><strong>Built-in Google TV</strong></li><li><strong>Motorized gimbal stand and optical lens adjustments</strong></li><li><strong>1080p/240Hz VRR mode for gaming</strong></li></ul><p>JMGO has been rocking the same design for a few years now, and the JMGO N3 Ultimate does little to shift that. It’s still a fairly compact, two-tone rounded box sitting aloft on a gimbal stand with a rotating base, making it easy to set up and point the projection where you want it. </p><p>This go around, JMGO has incorporated small motors for electronic control of the stand. By holding a dedicated button on the remote control and using gyro controls, you can adjust the tilt and rotation of the projector. It’s good for quick adjustment but not for fine tuning. </p><p>In an interesting twist, the N3 Ultimate is JMGO’s projector that least needed this technology, as the projector incorporates advanced optics with adjustable zoom and lens shift. The zoom can shift the projector from a 0.88:1 to a 1.7:1 throw ratio, giving it a ton of range. Meanwhile, the lens shift lets it move the projection up or down by 130% or sideways by 53%, so you really just need to point it perpendicular to your wall, and you should have no trouble shifting and squeezing the projection to fit without any keystone correction. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LVcfzyphnrQey2u7SC2x4S" name="JMGO N3 Ultimate (5).JPG" alt="A side view of the JMGO N3 Ultimate projector." src="https://cdn.mos.cms.futurecdn.net/LVcfzyphnrQey2u7SC2x4S-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Those manual controls are how you’ll get the best picture, but the JMGO N3 Ultimate has a host of automated tools that can quickly make adjustments for you, which may be convenient if you’re moving it often. It can analyze the projection area available to it, re-aiming, shrinking, and shifting the picture to fit. I found this using digital keystone even when it really wasn’t called for, though, so I wouldn’t count on it doing the best job. </p><p>One additional automatic tool that may be more helpful is the wall color adaptation. This uses the projector's camera and a series of test patterns to tweak colors so they appear better on your wall. You won’t need this if you use a screen, but it worked well on my beige walls. </p><p>Since the projector can move quite a bit in operation, it fits its connectors all at the base, rather than the rear of the projection unit itself. This can still get in the way of rotation, but makes vertical tilt a non-issue. The projector doesn’t have a great selection of ports, though, with just two HDMI 2.1 ports, one of which is eARC and probably should be kept for that purpose. There’s also a single USB-A port. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Y6sdeyMRFfJb9vPUy7EkPS" name="JMGO N3 Ultimate (7).JPG" alt="A close up of the ports at the back of the JMGO N3 Ultimate projector." src="https://cdn.mos.cms.futurecdn.net/Y6sdeyMRFfJb9vPUy7EkPS-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Thankfully, you don’t need to use any of those HDMI ports for basic streaming. The projector has built-in Google TV, and it operates quickly on its 4GB of memory. Annoyingly, it pauses playback while navigating menus sometimes (sometimes it doesn’t), but it’s quite serviceable otherwise. It even gets 64GB of storage, which can be useful if you use lots of apps. Perhaps, more crucially, the projector connects over Wi-Fi 6, giving it faster and more stable connectivity to work with while streaming.</p><p>For cinephiles, the JMGO N3 Ultimate supports HDR10 and Dolby Vision. Meanwhile, for gamers the projector can shift from 4K60Hz over to 1080p/240Hz and even brings VRR for smooth, low-latency, responsive gaming. There are some trade-offs though. Enabling VRR hurt clarity no matter if I left the projector at 4K or swapped to 1080p. Even at 1080p, VRR took a small toll on clarity. Fine text exhibited artifacts that looked like chroma subsampling. In games, it wasn’t an issue, but navigating Windows on PC to select games to play, it was a nuisance. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NT4vw929GQg25JRUCJGRJS" name="JMGO N3 Ultimate (10).JPG" alt="A view of the front of the JMGO N3 Ultimate projector." src="https://cdn.mos.cms.futurecdn.net/NT4vw929GQg25JRUCJGRJS-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Apart from its gyro controls, the Ultimate's remote is pretty basic. It has the standard Google TV controls and thankfully a pill-shaped volume control that’s easy to feel out in the dark. It includes shortcuts to Prime Video, Netflix, YouTube, and one app of your choice. Google TV Freeplay gets a separate shortcut at the top of the remote. Annoyingly, there’s no mute button for quick silencing and while the remote has motion-activated lighting behind some of its keys, it doesn't behind the shortcut buttons. </p><p>Since the JMGO N3 Ultimate is fairly portable, JGMO includes a foam carrying case that can fit it, the remote, and the power adapter all inside. It’s not exceedingly robust or impressive, but it’s not too bulky and should do a better job protecting the hardware than a typical backpack would.</p><ul><li><strong>Design &amp; features score:  4.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-picture-quality-and-performance"><span>JMGO N3 Ultimate Review: Picture quality and performance</span></h2><ul><li><strong>Wonderfully bright and colorful</strong></li><li><strong>Black levels could be darker</strong></li><li><strong>Crisp 4K visuals and responsive 1080p gaming</strong></li></ul><p>The JMGO N3 Ultimate has brightness in spades, and that’s where it shines best. When it comes to darkness, it can struggle. It fails to sink into darkness where it needs to, and the raised grays are distracting to see, never mind the regularly present letterboxes. Even when scenes aren’t very dark, these shortcomings are clear. Neither Dolby Vision nor adaptive brightness features seem to do the trick. </p><p>Thankfully, as soon as more light is called for, the JMGO N3 Ultimate delivers. It pumped out over 5,200 lumens by my measurements, which is plenty for most scenarios and not too far off the rated 5,800 lumens (nor did it require an awful picture setting). Bright scenes are clear and vibrant. Shadows look stronger in contrast to the brightness and the brightness is even enough to give the JMGO N3 Ultimate a solid showing in a modestly lit room. This makes it a great match for casual viewing, news, and bright cartoons. That brightness makes it all the easier to go big without the image getting too dim. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/dWueAPbrhKVF3SCqRNvaZS-1920-80.jpg" alt="A projected scene from Avatar 2: Way of Water from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/prenHjPsBPgPUF7xBKVPDS-1920-80.jpg" alt="A projection of blue meteors from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aafBGjYdGy4LK6QTaaw5ZS-1920-80.jpg" alt="A projection of blue meteors from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Alongside the brightness, the color of the RGB laser projection is stunning, just as it’s been in other projectors I’ve tested with the tech. When watching <em>Supergirl</em>, the glow of the green sun has plenty of depth, and the red cape glows majestically whenever the sun hits it. When Kara’s laser vision rips through the Brigands, it’s properly dazzling. The world of Pandora in the <em>Avatar</em> series is also lushly presented. </p><p>Motion can be hit or miss. By default the projector wants to use unsightly interpolation that presents loads of artifacts and makes the projection feel like anything but high-fidelity. With the MEMC setting dropped to low, it doesn’t look so bad, avoiding distracting soap opera effect and serious artifacts while helping reduce some of the stutter that occurs when it’s disabled entirely. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NDuuaMhHBsYzwJZamVn9NS-1920-80.jpg" alt="A projected scene of space from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DUQB2Nyhg3tUXDceRtiz8S-1920-80.jpg" alt="A projection of space from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/f9Vaa3CTeUNKaMaJ2qTkZS-1920-80.jpg" alt="A projected scene of space from the JMGO N3 Ultimate." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One area RGB laser projectors have been improving is the DLP rainbow effect. I’m not terribly sensitive to it, but I can usually catch it if I’m looking for it. Lately, I’ve been spotting it less and less on high-end laser projectors, but I can still catch it on the JMGO N3 Ultimate. Thankfully, it’s subtle, and I find it’s largely limited to subtitles</p><p>The adjustable optics help ensure a sharp picture from wherever you want to project. Stretched across about an 150-inch section of my wall, 4K looked brilliant in my living room.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5gqKMoNeHfhmxFTQS8J6ZS" name="JMGO N3 Ultimate (11).JPG" alt="A close up of the JMGO N3 Ultimate projector's remote control." src="https://cdn.mos.cms.futurecdn.net/5gqKMoNeHfhmxFTQS8J6ZS-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Outside of movies, the JMGO N3 Ultimate proves a great option for gaming. You want crisp detail from corner to corner in games, since you never know where something precious is hiding, and the optics help provide this. Latency is satisfyingly low at 4K but sinks to negligible levels at 1080p/240Hz. Mousing around my screen and zipping through levels in Hades 2, I didn’t feel a hint of latency in that mode. </p><p>The speakers on the JMGO N3 Ultimate aren’t bad, but they certainly aren’t an adequate match for the projection. They put out decent volume, helping ensure you’ve got enough sound to work with when you want to plop the projector down somewhere and start enjoying right away. They even provide some low-end, helping bump up effects in movies. But the quality of stereo sound won’t be very good unless you’re sitting perfectly in center with the projection.</p><ul><li><strong>Picture quality &amp; performance score: 3.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-value"><span>JMGO N3 Ultimate Review: Value</span></h2><ul><li><strong>Can serve multiple purposes well</strong></li><li><strong>Cheaper than many rivals while offering competitive brightness</strong></li></ul><p>The JGMO N3 Ultimate is a capable projector and can work well for folks who aren’t committing to a pitch-black home theater where its weaker black levels will steal focus.</p><p>At $2,999 / £2,499, it’s still fairly competitive with what’s on the market, but at $2,349 / £2,119, it’s more of a steal. It can compete with large TVs on value while providing the flexibility to enjoy movies and TV in 4K or switch over to 1080p for high-speed gaming. The different realms it can cover all from a single product help boost its value.</p><ul><li><strong>Value score: 4.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-should-i-buy-the-jmgo-n3-ultimate"><span>Should I buy the JMGO N3 Ultimate?</span></h2><div ><table><caption>JMGO N3 Ultimate Scorecard</caption><thead><tr><th class="firstcol " ><p>Attributes</p></th><th  ><p>Notes</p></th><th  ><p>Rating</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design and features</p></td><td  ><p>The JMGO N3 Ultimate brings a lot to the table. It’s built for flexibility with adjustable optics and a motorized stand that can make setup quick and easy without sacrificing image quality. It’s well equipped for movies and gaming, and it has built in streaming capabilities and serviceable speakers. It could have more ports and a better remote, though.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Picture quality and performance</p></td><td  ><p>The JMGO N3 Ultimate delivers on brightness and clarity, making it a joy to watch bright, colorful content with. It can even hold up well in rooms with a lot of ambient lighting. Where it falls short is in its contrast and motion, having distractingly elevated black levels that hurt dark scenes and either slight panning stutter or artifact-laden motion smoothing.</p></td><td  ><p>3.5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>With plenty of brightness and versatility at a surprisingly competitive pricing, the JMGO N3 Ultimate offers up a lot of value.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if">Buy it if...</h2><div class="product"><p><strong>You don’t like turning out all the lights</strong><br />The JMGO N3 Ultimate has brightness to spare, letting it handle dim and even well-lit rooms fairly well. If you don’t like viewing in the dark, this makes it a good match.</p></div><div class="product"><p><strong>You want quick and easy flexibility</strong><br />The JMGO N3 can work in a lot of different setups and it makes getting it all lined up easy. If you’re always moving your projector around, that can save you a load of time.</p></div><div class="product"><p><strong>You want versatility</strong><br />The JGMO N3 Ultimate can tackle 4K video, 1080p gaming, precise and careful optical setup, or quick and effortless setup. Its ability to step into different roles can be very convenient if you have a lot of different needs.</p></div><h2 id="don-39-t-buy-it-if">Don't buy it if...</h2><div class="product"><p><strong>You’re looking for OLED performance</strong><br />Few projectors do a great job with their black levels, and even the best aren’t really on the level with OLEDs. The JMGO N3 Ultimate isn’t even close, with raised black levels that don’t really look great in dark scenes.</p></div><div class="product"><p><strong>You have lots of input sources</strong><br />With just two HDMI ports, the JMGO N3 Ultimate is a recipe for annoyance if you have a handful of consoles, a Blu-ray player and the like. Heck, it doesn’t even have a 3.5mm jack you can use to free up the eARC port.</p></div><div class="product"><p><strong>You don’t move your projector ever</strong><br />A big part of the package, and therefore what you pay for, is the flexibility of the gimbal and optics. If you’re not planning to take advantage of them, you can save some money by looking elsewhere.</p></div><h2 class="article-body__section" id="section-jmgo-n3-ultimate-review-also-consider"><span>JMGO N3 Ultimate review: Also consider</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>JMGO N3 Ultimate</strong></p></td><td  ><p><strong>Valerion VisionMaster Max </strong></p></td><td  ><p><strong>Hisense C2 Ultra</strong></p></td><td  ><p><strong>Xgimi Horizon 20 Max</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$2,999 / £2,499</p></td><td  ><p>$3,999 / £ 3,799</p></td><td  ><p>$2,999 / £1,799</p></td><td  ><p>$2,999 / £2,599</p></td></tr><tr><td class="firstcol " ><p><strong>Screen sizes supported</strong></p></td><td  ><p>40 to 300 inches</p></td><td  ><p>40 to 300 inches</p></td><td  ><p>65 to 300 inches</p></td><td  ><p>40 to 300 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Brightness (specified)</strong></p></td><td  ><p>5,800 lumens</p></td><td  ><p>3,500 lumens</p></td><td  ><p>3,000 lumens</p></td><td  ><p>5,700 ISO lumens</p></td></tr><tr><td class="firstcol " ><p><strong>HDR support</strong></p></td><td  ><p>HDR10, HLG, Dolby Vision</p></td><td  ><p>HDR10+, HLG, Dolby Vision</p></td><td  ><p>HDR10+, HLG, Dolby Vision</p></td><td  ><p>Dolby Vision, HDR10+, HDR10, HLG, IMAX Enhanced</p></td></tr><tr><td class="firstcol " ><p><strong>Optical technology</strong></p></td><td  ><p>3 Laser DLP</p></td><td  ><p>3 Laser DLP</p></td><td  ><p>3 Laser DLP</p></td><td  ><p>3 Laser DLP</p><p><br /></p></td></tr><tr><td class="firstcol " ><p><strong>Smart TV</strong></p></td><td  ><p>Google TV</p></td><td  ><p>Google TV</p></td><td  ><p>Google TV</p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>Connections</strong></p></td><td  ><p>2x HDMI 2.1 (1 with eARC), 1x HDMI 2.0 , 1x optical, 1x 3.5mm</p><p><br /><br /></p></td><td  ><p>2x HDMI 2.1, 1x HDMI 2.0 (with eARC), 1x optical, 1x 3.5mm</p><p><br /><br /></p></td><td  ><p>2x HDMI 2.1 (1x with eARC), 2x USB, optical</p></td><td  ><p>2x HDMI (x1 eARC), 1x USB 3.0, 1x USB 2.0, 1x 3.5mm, 1x optical audio out</p></td></tr></tbody></table></div><div class="product"><p><strong>Valerion VisionMaster Max </strong><br />This projector may not be as bright, but it has wonderfully flexible optics, great visual performance and profound black levels that make it a far more worthy home theater projector. It tends to be a bit more expensive, though.</p></div><div class="product"><p><strong>Hisense C2 Ultra</strong><br />The Hisense C2 Ultra isn’t nearly as bright and doesn’t have the same degree of flexible optics as the JMGO N3 Ultimate. Still, it tends to cost nearly as much. This helps highlight how much the technology has progressed and come down in price in a short time. Read our full <a href="https://www.techradar.com/televisions/projectors/hisense-c2-ultra-review" data-dimension112="f3d60a04-cbbd-11f1-80ff-99ae7b123b77" data-action="Deal Block" data-label="Hisense C2 Ultra review" data-dimension48="Hisense C2 Ultra review" data-dimension25="">Hisense C2 Ultra review</a>.</p></div><div class="product"><p><strong>Xgimi Horizon 20 Max</strong><br />This model has most of the same capabilities and qualities as the JGMO N3 Ultimate, just in a different package. It had strong contrast in our testing, but it skips the motorized gimbal. If you know you want that dark performance, it’ll probably be the better pick, though you may be best just grabbing whichever is cheapest when you’re shopping since both have frequent discounts. Read our full <a href="https://www.techradar.com/televisions/projectors/xgimi-horizon-20-max-review" data-dimension112="f3d60a9a-cbbd-11f1-98b2-05bc879d6d93" data-action="Deal Block" data-label="Xgimi Horizon 20 Max review" data-dimension48="Xgimi Horizon 20 Max review" data-dimension25="">Xgimi Horizon 20 Max review</a>.</p></div><h2 class="article-body__section" id="section-how-i-tested-the-jmgo-n3-ultimate"><span>How I tested the JMGO N3 Ultimate</span></h2><ul><li><strong>Tested at home in multiple, real-world viewing conditions</strong></li><li><strong>Presented the display with a variety of media and formats</strong></li><li><strong>I have tested numerous projectors and displays over the last half-decade</strong></li></ul><p>I tested the JMGO N3 Ultimate at home, in real-world conditions. This saw it faced with ambient light coming in from numerous windows, in-room lighting, as well as ambient noise that both the projector and speaker systems had to overcome. The projector was tested both against a bare, white wall and an <a href="https://www.techradar.com/reviews/akia-screens-floor-motorized-tab-tension-cinewhite"><u>Akia Screens CineWhite screen</u></a>. It was presented with streamed content, HDR and non-HDR, and console gameplay. </p><p>My testing evaluates the projector’s performance with respect to its price and competition from other models I and colleagues at TechRadar have tested.</p><p>I have been testing projectors since 2021 and displays for even longer. </p><ul><li><em>First reviewed: November 2026</em></li><li><a href="https://www.techradar.com/news/how-we-test"><u>Read TechRadar's review guarantee</u></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Stellar Blade for Nintendo Switch 2 review: more solid than stellar ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The over-the-top, action-heavy, ultra-stylish <em>Stellar Blade</em> has landed on Nintendo Switch 2, giving this ex-PS5 exclusive a chance to shine in front of a brand-new audience. </p><div  class="fancy-box"><div class="fancy_box-title">Review info</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Platform reviewed: </strong>Nintendo Switch 2<br /><strong>Available on: </strong>Nintendo Switch 2, PS5, PC<br /><strong>Release date: </strong>November 5, 2026 (Switch 2)</p></div></div><p>Porting this cinematic, explosive action-adventure title onto the Switch 2 has undoubtedly been a tough test for developer Shift Up, but just how well have they scored?</p><p>I’ve put around 15 hours into <em>Stellar Blade </em>on Nintendo’s hybrid console, during which time I’ve worked through most of the story, completed a number of side missions, and collected a whole lot of cans. So, here’s whether I think Stellar Blade on <a href="https://www.techradar.com/gaming/nintendo/nintendo-switch-2-review">Nintendo Switch 2</a> is worth your time and money.</p><h2 id="save-the-world-on-switch-2">Save the world on Switch 2</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z7Hx3jqX39J3seeKACfmEo" name="stellar-blade-switch-2 (8)" alt="Eve finishes an enemy in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/Z7Hx3jqX39J3seeKACfmEo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>While I’m more interested in discussing the quality of <em>Stellar Blade </em>on Switch 2 as a port, it only seems right for me to share some of my thoughts on the core game to begin with.</p><p><em>Stellar Blade’s </em>premise is pretty simple. You play as the protagonist Eve as she battles through a post-apocalyptic future in order to save humanity from aliens known as the Naytibas. With assistance from survivors Adam and Lily (among others), you’ll aim to track down the dangerous Alpha Naytibas and Elder Naytiba and reclaim Earth once and for all. </p><div  class="fancy-box"><div class="fancy_box-title">Best bit</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HmxpDcivZe9JWRVHPfqJLn" name="stellar-blade-switch-2 (1)" caption="" alt="Eve faces a Naytiba in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/HmxpDcivZe9JWRVHPfqJLn-1920-80.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p class="fancy-box__body-text"><strong>For me, the Stalker boss fight was a real highlight. The sheer intensity of this showdown is highly compelling — you’re forced to put your parrying skills to the test and hit hard with ranged attacks and Beta skills in order to get the victory. And that victory was oh so sweet.</strong></p></div></div><p>In my view, the premise itself is totally sound, and the high-octane opening certainly makes a strong first impression. </p><p>However, I felt that the narrative failed to hold my attention in the long run. A combination of dry dialogue and bland characters really let <em>Stellar Blade </em>down in the storytelling department. While the stakes are undoubtedly high, it doesn't always <em>feel </em>that way, with emotive moments lacking heart, character interactions seeming awkward, and voice acting often coming across as stiff.</p><p>But luckily for <em>Stellar Blade</em>, its lacklustre narrative doesn’t actually hold it back all too much. And that’s simply because the core gameplay experience is a whole lot of fun.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SQPuf5HEpQLVtQCJkV7bLn" name="stellar-blade-switch-2 (3)" alt="Skill tree in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/SQPuf5HEpQLVtQCJkV7bLn-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>The combat system has solid depth, with no end to combos and eccentric abilities available to the player. You can also expand Eve’s move set with unlockable skills, enhance your weapon and drone assistant, and discover new ways to vanquish your foes as the story unfolds. </p><p>Though the timing can feel a little unusual, you’ll need to learn how to ‘perfect parry’ and counter hard against your opponents, which feels satisfying to execute. I also enjoyed bettering my exospines and gear to dodge away from enemies more effectively, and deal huge damage with Beta attacks.</p><p>Without a doubt, though, the true highlight of Stellar Blade is its mesmerizing boss fights. Each battle feels phenomenally tense, unique, and genuinely memorable, and I loved figuring out the ideal combos and evasion patterns for each and every showdown. It’s in these moments when the game truly comes alive.</p><p>General exploration is pretty enjoyable too. Just roaming around and hacking away at enemies, discovering new areas, and completing some side missions kept me pretty entertained. Yes, platforming segments can feel a little janky at times, but swift movement speed and fun puzzles keep the overall gameplay experience feeling fresh.</p><p>All in all, Stellar Blade is a good, albeit flawed title. Boss fights see the game at its brilliant best, with edge-of-the-seat action sure to keep you hooked. Sure, the unremarkable cast and dialogue hold it back to some degree, but this game is all about the action — and it largely nails that.</p><h2 id="a-solid-but-not-quite-stellar-port">A solid but not quite Stellar port</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hZaEziFtKX6BrKZRhxvP2o" name="stellar-blade-switch-2 (4)" alt="Eve picks up a can in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/hZaEziFtKX6BrKZRhxvP2o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>Right, now you must be wondering: how does <em>Stellar Blade</em> hold up on Switch 2? Well, the answer is somewhat nuanced. </p><p>First of all, I want to make it clear that this is a technical and demanding title, and cramming it onto the Switch 2 — which is considerably weaker than the <a href="https://www.techradar.com/reviews/ps5">PS5</a> — is no easy task. With that in mind, I’d say that the Switch 2 <em>Stellar Blade </em>is decent, but it’s certainly not without its flaws.</p><p>Let’s start on a positive note, though. I have to say that the sheer versatility of this Switch 2 edition is staggering. You can genuinely play in just about any way, using Joy-Cons or Pro Controller with a traditional configuration, with gyroscopic aiming, or even with mouse controls. I found that each method worked nicely when testing, yes, even mouse mode. And although I kept gyro aiming off for the most part and played with the <a href="https://www.techradar.com/gaming/nintendo-switch-2-pro-controller-review">Switch 2 Pro Controller</a>, I’m glad that this port plays to the system’s strengths. </p><p>I’ll also say that the game runs decently in docked mode overall. During skirmishes and general exploration, frame drops never felt particularly egregious, and inputs felt pretty responsive.</p><p>But there are some issues that I have to discuss. It sometimes feels like the Switch 2 can’t keep up with the speed and fluidity that <em>Stellar Blade </em>demands. It targets 60fps in both handheld and docked modes with frame generation, which combines NVIDIA DLSS upscaling with AMD FSR 3.1 frame interpolation, and sometimes, this simply doesn’t cut it.</p><p>With frame generation active, gameplay feels fairly smooth in docked mode, although there are some drops during the most cinematic segments — especially with large explosions. Handheld mode, while certainly playable, feels a bit too sluggish in my opinion. The inconsistent frame rates mean that performing precise blocks and dodges felt more challenging, with some action-packed sequences seeming to be a touch choppy. I also noticed that the movement of distant enemies was pretty unstable — whether playing handheld or docked — something I’ve seen in other Switch 2 ports like <a href="https://www.techradar.com/gaming/resident-evil-4-for-nintendo-switch-2-review"><em>Resident Evil 4</em></a>.</p><p>You can turn frame generation off and play at 30fps instead, but it all comes back to that word ‘fluidity’ — it’s at the heart of this game’s agile, reaction-based combat, which just didn’t quite click for me at a lower frame rate.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iAHxbvDm9ob8tDmm4ztqzn" name="stellar-blade-switch-2 (5)" alt="Eve, Lily, and Adam stand together in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/iAHxbvDm9ob8tDmm4ztqzn-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>Visually, the port is a bit of a mixed bag too. In docked, it looks OK, with Eve’s character model appearing fairly detailed. But environments tend to look a bit flushed out, and intricacies of certain textures seem slightly subdued. Even when playing docked, though, I noticed quite a lot of texture loading issues and pop-in, and elements such as Eve’s hair lacked definition. It was a similar story in handheld, with character models looking a little rough around the edges and wide-open areas short on detail and definition.</p><p>Ultimately, the game runs just fine in docked, despite a few visual gremlins and frame drops. But in my view, the handheld experience doesn’t quite deliver the speed or responsiveness that this title requires — at least as things stand.</p><p>Back to the positives, though, I was really impressed with the quality of haptic feedback on the Switch 2, which has been specifically tuned for HD Rumble 2. This made every movement and attack feel so satisfying, and helped to truly immerse me in the action. I was also satisfied with the inclusion of DLC and unique costumes (this is the <em>Complete Edition</em>, after all), fantastic accessibility options, and the fact that this game is fully on cart if you purchase it physically — you’re not getting no code in a box ‘round these parts.</p><p>But let’s answer that all-important question: is Stellar Blade worth buying on Nintendo Switch 2? If you have a <a href="https://www.techradar.com/reviews/ps5">PS5</a> or <a href="https://www.techradar.com/gaming/ps5-pro-review">PS5 Pro</a>, then my answer is probably no. Sure, the Switch 2 lets you play on the go, but you’ll get more consistent frame rates, better graphical fidelity, and smoother all-round performance from Sony’s systems. Haven’t got a PS5? Well, if this sort of game is your jam, then I think <em>Stellar Blade</em>’s worth a shot. It has its imperfections in docked mode, but it still performs well overall, and you’ll find plenty to love about the core experience.</p><h2 id="should-you-play-stellar-blade-on-nintendo-switch-2">Should you play Stellar Blade on Nintendo Switch 2?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wJVTgVQzSMGx4Y5zXGu53o" name="stellar-blade-switch-2 (10)" alt="Naytiba appears in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/wJVTgVQzSMGx4Y5zXGu53o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><h2 id="play-it-if">Play it if…</h2><div class="product"><p><strong>You want flexible control options</strong><br />Something I really liked about the Switch 2 edition of <em>Stellar Blade </em>was the sheer variety of control options. You can use traditional controls, gyro aiming, and even mouse mode.</p></div><div class="product"><p><strong>You want the all-inclusive Stellar Blade experience</strong><br />This is the <em>Complete Edition </em>of Stellar Blade, so you’ll get all the extras included, be that the <em>NieR: Automata</em> and <em>Goddess of Victory: Nikke</em> crossover packs or the new Bayonetta-themed costumes. </p></div><h2 id="don-t-play-it-if">Don’t play it if…</h2><div class="product"><p><strong>You own a PS5 or PS5 Pro</strong><br />If you’ve got a PS5 or PS5 Pro and aren’t all too concerned with playing on the go, then I’d strongly suggest playing <em>Stellar Blade</em> on one of those consoles. While the game performs well enough on Switch 2, Sony’s systems will make fewer cutbacks on frame rate, visual fidelity, and load times.</p></div><div class="product"><p><strong>You’re looking for a gripping narrative</strong><br />The biggest flaw of the core Stellar Blade experience is its dry dialogue and overarching narrative, which failed to grab me as much as I’d hoped. If you’re here for the combat, I’m sure you’ll have a blast, but if you want a story with substance, it might be worth skipping this one.</p></div><h2 id="accessibility-features">Accessibility features </h2><p>I’m happy to report that <em>Stellar Blade </em>has an extensive set of accessibility options on Nintendo Switch 2. You can adjust a number of settings to account for motion sickness, mobility, vision, and hearing needs, and there’s also a colorblind preset. In addition, you can toggle subtitles on and off, alter camera controls, and select one of multiple difficulty modes.</p><h2 id="how-i-reviewed-stellar-blade-on-nintendo-switch-2">How I reviewed Stellar Blade on Nintendo Switch 2</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UrN5C9JDjHaPh9gfxobd2o" name="stellar-blade-switch-2 (9)" alt="Eve talks to drone in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/UrN5C9JDjHaPh9gfxobd2o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>I spent about 15 hours with <em>Stellar Blade Complete Edition</em>, during which time I worked my way through most of the story and a number of side missions. </p><p>For the most part, I played with my Nintendo Switch 2 console docked, hooked up to the <a href="https://www.techradar.com/televisions/sky-glass-gen-2-review">Sky Glass Gen 2</a> TV and <a href="https://www.techradar.com/televisions/soundbars/marshall-heston-120-review">Marshall Heston 120</a> soundbar. I mainly used my <a href="https://www.techradar.com/gaming/nintendo-switch-2-pro-controller-review">Nintendo Switch 2 Pro Controller</a> when playing, but I also made sure to try out mouse mode with a pair of <a href="https://www.techradar.com/gaming/nintendo/joy-con-2-review">Joy-Con 2</a>. However, I did indulge in some handheld gameplay from time to time, and used the <a href="https://www.techradar.com/audio/earbuds-airpods/jbl-live-beam-4-review">JBL Live Beam 4</a> to experience in-game audio.</p><p>More generally, I've spent years testing gadgets and games here at TechRadar, where I serve as a Senior Reviews Writer. I've reviewed a number of titles, be that major first-party exclusives like <a href="https://www.techradar.com/gaming/fire-emblem-fortunes-weave-review"><em>Fire Emblem: Fortune's Weave</em></a><em> </em>or Switch 2 ports, such as <a href="https://www.techradar.com/gaming/yakuza-kiwami-2-nintendo-switch-2-review"><em>Yakuza Kiwami 2</em></a>.</p><p><em>First reviewed November 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/gaming/stellar-blade-for-nintendo-switch-2-review</link>
                                                                            <description>
                            <![CDATA[ Stellar Blade translates decently well onto Nintendo Switch 2, but has to cut-back in a few key areas to make the jump. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vgSrahXMowietAVCTrUdwS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kxcx8ngdgeHAYjbPjqZDyn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 19:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming]]></category>
                                                                                                <author><![CDATA[ harry.padoan@futurenet.com (Harry Padoan) ]]></author>                    <dc:creator><![CDATA[ Harry Padoan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/995EkuqRKUTUjvMk7ataFi-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Harry is a Senior Reviews Writer for TechRadar. He reviews everything from party speakers to wall chargers and has a particular interest in the worlds of audio and gaming.&lt;/p&gt;&lt;p&gt;Prior to joining TechRadar, Harry was a journalist covering stories from the telecoms industry, drilling into areas such as innovation, acquisitions, and sustainability.&lt;/p&gt;&lt;p&gt;When he isn’t testing the newest tech, Harry can probably be found listening to deep house, playing JRPGs, or watching his beloved Tottenham Hotspur.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kxcx8ngdgeHAYjbPjqZDyn-1920-80.jpg">
                                                            <media:credit><![CDATA[Shift Up]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Even and drone beside one another in Stellar Blade for Nintendo Switch 2]]></media:description>                                                            <media:text><![CDATA[Even and drone beside one another in Stellar Blade for Nintendo Switch 2]]></media:text>
                                <media:title type="plain"><![CDATA[Even and drone beside one another in Stellar Blade for Nintendo Switch 2]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kxcx8ngdgeHAYjbPjqZDyn-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The over-the-top, action-heavy, ultra-stylish <em>Stellar Blade</em> has landed on Nintendo Switch 2, giving this ex-PS5 exclusive a chance to shine in front of a brand-new audience. </p><div  class="fancy-box"><div class="fancy_box-title">Review info</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Platform reviewed: </strong>Nintendo Switch 2<br /><strong>Available on: </strong>Nintendo Switch 2, PS5, PC<br /><strong>Release date: </strong>November 5, 2026 (Switch 2)</p></div></div><p>Porting this cinematic, explosive action-adventure title onto the Switch 2 has undoubtedly been a tough test for developer Shift Up, but just how well have they scored?</p><p>I’ve put around 15 hours into <em>Stellar Blade </em>on Nintendo’s hybrid console, during which time I’ve worked through most of the story, completed a number of side missions, and collected a whole lot of cans. So, here’s whether I think Stellar Blade on <a href="https://www.techradar.com/gaming/nintendo/nintendo-switch-2-review">Nintendo Switch 2</a> is worth your time and money.</p><h2 id="save-the-world-on-switch-2">Save the world on Switch 2</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z7Hx3jqX39J3seeKACfmEo" name="stellar-blade-switch-2 (8)" alt="Eve finishes an enemy in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/Z7Hx3jqX39J3seeKACfmEo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>While I’m more interested in discussing the quality of <em>Stellar Blade </em>on Switch 2 as a port, it only seems right for me to share some of my thoughts on the core game to begin with.</p><p><em>Stellar Blade’s </em>premise is pretty simple. You play as the protagonist Eve as she battles through a post-apocalyptic future in order to save humanity from aliens known as the Naytibas. With assistance from survivors Adam and Lily (among others), you’ll aim to track down the dangerous Alpha Naytibas and Elder Naytiba and reclaim Earth once and for all. </p><div  class="fancy-box"><div class="fancy_box-title">Best bit</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HmxpDcivZe9JWRVHPfqJLn" name="stellar-blade-switch-2 (1)" caption="" alt="Eve faces a Naytiba in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/HmxpDcivZe9JWRVHPfqJLn-1920-80.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p class="fancy-box__body-text"><strong>For me, the Stalker boss fight was a real highlight. The sheer intensity of this showdown is highly compelling — you’re forced to put your parrying skills to the test and hit hard with ranged attacks and Beta skills in order to get the victory. And that victory was oh so sweet.</strong></p></div></div><p>In my view, the premise itself is totally sound, and the high-octane opening certainly makes a strong first impression. </p><p>However, I felt that the narrative failed to hold my attention in the long run. A combination of dry dialogue and bland characters really let <em>Stellar Blade </em>down in the storytelling department. While the stakes are undoubtedly high, it doesn't always <em>feel </em>that way, with emotive moments lacking heart, character interactions seeming awkward, and voice acting often coming across as stiff.</p><p>But luckily for <em>Stellar Blade</em>, its lacklustre narrative doesn’t actually hold it back all too much. And that’s simply because the core gameplay experience is a whole lot of fun.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SQPuf5HEpQLVtQCJkV7bLn" name="stellar-blade-switch-2 (3)" alt="Skill tree in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/SQPuf5HEpQLVtQCJkV7bLn-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>The combat system has solid depth, with no end to combos and eccentric abilities available to the player. You can also expand Eve’s move set with unlockable skills, enhance your weapon and drone assistant, and discover new ways to vanquish your foes as the story unfolds. </p><p>Though the timing can feel a little unusual, you’ll need to learn how to ‘perfect parry’ and counter hard against your opponents, which feels satisfying to execute. I also enjoyed bettering my exospines and gear to dodge away from enemies more effectively, and deal huge damage with Beta attacks.</p><p>Without a doubt, though, the true highlight of Stellar Blade is its mesmerizing boss fights. Each battle feels phenomenally tense, unique, and genuinely memorable, and I loved figuring out the ideal combos and evasion patterns for each and every showdown. It’s in these moments when the game truly comes alive.</p><p>General exploration is pretty enjoyable too. Just roaming around and hacking away at enemies, discovering new areas, and completing some side missions kept me pretty entertained. Yes, platforming segments can feel a little janky at times, but swift movement speed and fun puzzles keep the overall gameplay experience feeling fresh.</p><p>All in all, Stellar Blade is a good, albeit flawed title. Boss fights see the game at its brilliant best, with edge-of-the-seat action sure to keep you hooked. Sure, the unremarkable cast and dialogue hold it back to some degree, but this game is all about the action — and it largely nails that.</p><h2 id="a-solid-but-not-quite-stellar-port">A solid but not quite Stellar port</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hZaEziFtKX6BrKZRhxvP2o" name="stellar-blade-switch-2 (4)" alt="Eve picks up a can in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/hZaEziFtKX6BrKZRhxvP2o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>Right, now you must be wondering: how does <em>Stellar Blade</em> hold up on Switch 2? Well, the answer is somewhat nuanced. </p><p>First of all, I want to make it clear that this is a technical and demanding title, and cramming it onto the Switch 2 — which is considerably weaker than the <a href="https://www.techradar.com/reviews/ps5">PS5</a> — is no easy task. With that in mind, I’d say that the Switch 2 <em>Stellar Blade </em>is decent, but it’s certainly not without its flaws.</p><p>Let’s start on a positive note, though. I have to say that the sheer versatility of this Switch 2 edition is staggering. You can genuinely play in just about any way, using Joy-Cons or Pro Controller with a traditional configuration, with gyroscopic aiming, or even with mouse controls. I found that each method worked nicely when testing, yes, even mouse mode. And although I kept gyro aiming off for the most part and played with the <a href="https://www.techradar.com/gaming/nintendo-switch-2-pro-controller-review">Switch 2 Pro Controller</a>, I’m glad that this port plays to the system’s strengths. </p><p>I’ll also say that the game runs decently in docked mode overall. During skirmishes and general exploration, frame drops never felt particularly egregious, and inputs felt pretty responsive.</p><p>But there are some issues that I have to discuss. It sometimes feels like the Switch 2 can’t keep up with the speed and fluidity that <em>Stellar Blade </em>demands. It targets 60fps in both handheld and docked modes with frame generation, which combines NVIDIA DLSS upscaling with AMD FSR 3.1 frame interpolation, and sometimes, this simply doesn’t cut it.</p><p>With frame generation active, gameplay feels fairly smooth in docked mode, although there are some drops during the most cinematic segments — especially with large explosions. Handheld mode, while certainly playable, feels a bit too sluggish in my opinion. The inconsistent frame rates mean that performing precise blocks and dodges felt more challenging, with some action-packed sequences seeming to be a touch choppy. I also noticed that the movement of distant enemies was pretty unstable — whether playing handheld or docked — something I’ve seen in other Switch 2 ports like <a href="https://www.techradar.com/gaming/resident-evil-4-for-nintendo-switch-2-review"><em>Resident Evil 4</em></a>.</p><p>You can turn frame generation off and play at 30fps instead, but it all comes back to that word ‘fluidity’ — it’s at the heart of this game’s agile, reaction-based combat, which just didn’t quite click for me at a lower frame rate.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iAHxbvDm9ob8tDmm4ztqzn" name="stellar-blade-switch-2 (5)" alt="Eve, Lily, and Adam stand together in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/iAHxbvDm9ob8tDmm4ztqzn-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>Visually, the port is a bit of a mixed bag too. In docked, it looks OK, with Eve’s character model appearing fairly detailed. But environments tend to look a bit flushed out, and intricacies of certain textures seem slightly subdued. Even when playing docked, though, I noticed quite a lot of texture loading issues and pop-in, and elements such as Eve’s hair lacked definition. It was a similar story in handheld, with character models looking a little rough around the edges and wide-open areas short on detail and definition.</p><p>Ultimately, the game runs just fine in docked, despite a few visual gremlins and frame drops. But in my view, the handheld experience doesn’t quite deliver the speed or responsiveness that this title requires — at least as things stand.</p><p>Back to the positives, though, I was really impressed with the quality of haptic feedback on the Switch 2, which has been specifically tuned for HD Rumble 2. This made every movement and attack feel so satisfying, and helped to truly immerse me in the action. I was also satisfied with the inclusion of DLC and unique costumes (this is the <em>Complete Edition</em>, after all), fantastic accessibility options, and the fact that this game is fully on cart if you purchase it physically — you’re not getting no code in a box ‘round these parts.</p><p>But let’s answer that all-important question: is Stellar Blade worth buying on Nintendo Switch 2? If you have a <a href="https://www.techradar.com/reviews/ps5">PS5</a> or <a href="https://www.techradar.com/gaming/ps5-pro-review">PS5 Pro</a>, then my answer is probably no. Sure, the Switch 2 lets you play on the go, but you’ll get more consistent frame rates, better graphical fidelity, and smoother all-round performance from Sony’s systems. Haven’t got a PS5? Well, if this sort of game is your jam, then I think <em>Stellar Blade</em>’s worth a shot. It has its imperfections in docked mode, but it still performs well overall, and you’ll find plenty to love about the core experience.</p><h2 id="should-you-play-stellar-blade-on-nintendo-switch-2">Should you play Stellar Blade on Nintendo Switch 2?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wJVTgVQzSMGx4Y5zXGu53o" name="stellar-blade-switch-2 (10)" alt="Naytiba appears in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/wJVTgVQzSMGx4Y5zXGu53o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><h2 id="play-it-if">Play it if…</h2><div class="product"><p><strong>You want flexible control options</strong><br />Something I really liked about the Switch 2 edition of <em>Stellar Blade </em>was the sheer variety of control options. You can use traditional controls, gyro aiming, and even mouse mode.</p></div><div class="product"><p><strong>You want the all-inclusive Stellar Blade experience</strong><br />This is the <em>Complete Edition </em>of Stellar Blade, so you’ll get all the extras included, be that the <em>NieR: Automata</em> and <em>Goddess of Victory: Nikke</em> crossover packs or the new Bayonetta-themed costumes. </p></div><h2 id="don-t-play-it-if">Don’t play it if…</h2><div class="product"><p><strong>You own a PS5 or PS5 Pro</strong><br />If you’ve got a PS5 or PS5 Pro and aren’t all too concerned with playing on the go, then I’d strongly suggest playing <em>Stellar Blade</em> on one of those consoles. While the game performs well enough on Switch 2, Sony’s systems will make fewer cutbacks on frame rate, visual fidelity, and load times.</p></div><div class="product"><p><strong>You’re looking for a gripping narrative</strong><br />The biggest flaw of the core Stellar Blade experience is its dry dialogue and overarching narrative, which failed to grab me as much as I’d hoped. If you’re here for the combat, I’m sure you’ll have a blast, but if you want a story with substance, it might be worth skipping this one.</p></div><h2 id="accessibility-features">Accessibility features </h2><p>I’m happy to report that <em>Stellar Blade </em>has an extensive set of accessibility options on Nintendo Switch 2. You can adjust a number of settings to account for motion sickness, mobility, vision, and hearing needs, and there’s also a colorblind preset. In addition, you can toggle subtitles on and off, alter camera controls, and select one of multiple difficulty modes.</p><h2 id="how-i-reviewed-stellar-blade-on-nintendo-switch-2">How I reviewed Stellar Blade on Nintendo Switch 2</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UrN5C9JDjHaPh9gfxobd2o" name="stellar-blade-switch-2 (9)" alt="Eve talks to drone in Stellar Blade for Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/UrN5C9JDjHaPh9gfxobd2o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shift Up)</span></figcaption></figure><p>I spent about 15 hours with <em>Stellar Blade Complete Edition</em>, during which time I worked my way through most of the story and a number of side missions. </p><p>For the most part, I played with my Nintendo Switch 2 console docked, hooked up to the <a href="https://www.techradar.com/televisions/sky-glass-gen-2-review">Sky Glass Gen 2</a> TV and <a href="https://www.techradar.com/televisions/soundbars/marshall-heston-120-review">Marshall Heston 120</a> soundbar. I mainly used my <a href="https://www.techradar.com/gaming/nintendo-switch-2-pro-controller-review">Nintendo Switch 2 Pro Controller</a> when playing, but I also made sure to try out mouse mode with a pair of <a href="https://www.techradar.com/gaming/nintendo/joy-con-2-review">Joy-Con 2</a>. However, I did indulge in some handheld gameplay from time to time, and used the <a href="https://www.techradar.com/audio/earbuds-airpods/jbl-live-beam-4-review">JBL Live Beam 4</a> to experience in-game audio.</p><p>More generally, I've spent years testing gadgets and games here at TechRadar, where I serve as a Senior Reviews Writer. I've reviewed a number of titles, be that major first-party exclusives like <a href="https://www.techradar.com/gaming/fire-emblem-fortunes-weave-review"><em>Fire Emblem: Fortune's Weave</em></a><em> </em>or Switch 2 ports, such as <a href="https://www.techradar.com/gaming/yakuza-kiwami-2-nintendo-switch-2-review"><em>Yakuza Kiwami 2</em></a>.</p><p><em>First reviewed November 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I wanted to love the Razer Basilisk V4 Pro gaming mouse, but there were just a few too many flaws ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-razer-basilisk-v4-pro-two-minute-review"><span>Razer Basilisk V4 Pro two-minute review</span></h2><p>One of the first gaming mice I ever used was a Razer Basilisk, and I enjoyed it so much I wore the grippy rubber sides down until they were completely smooth. I’ve moved over to much more lightweight pointers in the years since, but with Razer launching the Basilisk V4 Pro, has the company done enough to tempt me back and resurrect that fond old love affair? </p><p>Spoiler alert: not completely. Because while the Basilisk V4 Pro is an excellent upgrade over its predecessor, it also comes with a few drawbacks that prevent it from being a total must-buy. It’s a great <a href="https://www.techradar.com/news/best-gaming-mouse">gaming mouse </a>and might be ideal in the right (large) hands, but don’t go into this expecting perfection. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/J8KoVkiUmypVrSn7Upap7V-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mFaJxyNgLLcv4JBi8yeC9V-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Let’s start with the positives. Razer has kept the Basilisk’s familiar ergonomic form factor, which is best suited to palm grip users, and its comfortable sculpted shape fits snugly into your hand. The build quality is also good, with solid plastics throughout and grippy textured finishes on the sides. And while it’s still a fairly hefty 100g, that’s still 10% lighter than the 112g Basilisk V3 Pro. </p><p>Battery life has increased to 200 hours in 2.4GHz mode at a 1,000Hz polling rate, or 275 hours on Bluetooth LE — up from 140 hours and 210 hours on the <a href="https://www.techradar.com/computing/mice/razer-basilisk-v3-pro-35k-everyday-excellence">Basilisk V3 Pro</a>. Note that that’s with the RGB lighting disabled. My review unit arrived with 66% battery, and in my testing (using it in 2.4GHz mode with a 1,000Hz polling rate and the RGB switched on), that dropped to 0% after 45 hours, so you can probably expect just under 70 hours on a full charge when using these settings. That’s a sizeable drop on 200 hours, but you’ll get much more juice if you dim the RGB lights.</p><p>Compared to the Basilisk V4 Pro’s predecessor, Razer has outfitted the latest version with a couple of extra buttons: one on the top-left corner of the left click and another next to the side buttons. That means you’ve now got 14 customizable controls on this device, making it a sort of halfway solution between a regular mouse and the button-crazy <a href="https://www.techradar.com/computing/mice/razer-naga-v3-pro">Razer Naga V3 Pro</a>. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6ocieH7eXm3XdtVGCYNJNV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xnky8VCZwxBxojkqHS8VHV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One of those buttons — the additional on one the side — could be assigned to Razer’s “Perfect 180” feature, the company suggested. This instantly spins your in-game character around 180 degrees, and if you think that sounds like cheating, you might have a point — even Razer admitted to us that they thought it could get banned in competitive games. Still, until that happens… </p><p>Razer also told us it had made the left and right click buttons sound less “ticky,” and they do have a satisfyingly soft and quiet actuation, one that’s a little less piercing to the ears than those on the <a href="https://www.techradar.com/computing/mice/razer-viper-v4-pro-review">Viper V4 Pro</a>. They’re not silent, but they’re pleasing in use. </p><p>Sandwiched between those buttons is Razer’s HyperSpeed scroll wheel that, while not strictly a gaming feature, might be one of the Basilisk V4 Pro’s best aspects. You can set it to spin freely or ratchet (with two strength options) in Razer’s Synapse app, but its real party trick is its Smart-Reel feature. If you’ve set it to ratchet, a quick spin of the wheel automatically flips it into free-spin mode; put the brakes on and it moves back to ratcheting. It’s a great way to rapidly move through documents and spreadsheets without having to manually change modes. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E6MSFamSSNarwd64fhnSAV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Gb2nDFQqy7QEy6FHwPQoMV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But while I liked the HyperScroll wheel, I didn’t <em>love</em> it. Every time it switches modes (from free spinning to ratcheting, say), there’s a loud and slightly disconcerting crunching sound that starts to grate after a while. </p><p>Pushing it in to click the scroll wheel also feels very soft and mushy — it’s imprecise compared with Razer’s own alternatives like the Viper V4 Pro, which is much crisper to click. It’s a welcome feature on the mouse, but it’s clearly inferior to the MagSpeed wheel you’ll find on the Logitech MX Master 4. </p><p>This was something I found time and again with the Basilisk V4 Pro: I’d often be pleased with one feature, only to observe a downside to it after I’d used it a little more. I was happy to see an extra side button that I could program to my needs, for instance, but then started to notice it getting in the way and messing up my two-side-button muscle memory.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/VfKXgdH34vpkZ8Ph4JRs5V-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bgh5xrv3rFNSNbDCnvGoGV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Or take the RGB lighting as another example: it looks lovely (especially on the Spectrum Cycling setting), but considering you never look at the mouse when using it, and your hand covers it up anyway, it felt a little pointless. Perhaps Razer could have done away with it and eked more battery life out of the Basilisk. </p><p>Ultimately, the Basilisk V4 Pro hasn’t converted me back to its temptingly sculpted form factor. It offers a capable combination of features, buttons and comfort, and for many gamers — especially those with larger hands — it’ll be an attractive option. It’s still one of the best gaming mice around, despite its drawbacks. </p><p>But for every two steps forward, there’s one step back that tempers its progress, whether that’s the imperfect HyperScroll wheel, the hard-to-reach buttons for all but palm grip users or the questionable, battery-draining RGB. I went into this looking to rekindle my love for an old flame, but in the end, I found myself stuck in the Basilisk’s friend zone.</p><h2 class="article-body__section" id="section-razer-basilisk-v4-pro-price-release-date"><span>Razer Basilisk V4 Pro: Price &amp; release date</span></h2><ul><li><strong>Available to buy now</strong></li><li><strong>Priced at $169.99 / £169.99 / $289.95 AUD</strong></li></ul><p>The Razer Basilisk V4 Pro is priced at $169.99 / £169.99 / $289.95 AUD and is available now from Razer’s website and third-party retailers. Its price has crept up by $10 / £10 / $10 AUD versus the Basilisk V3 Pro 35K.</p><h2 class="article-body__section" id="section-razer-basilisk-v4-pro-review-specs"><span>Razer Basilisk V4 Pro review: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Razer HyperSpeed Wireless Gen-2 (2.4GHz), Bluetooth 6.2, wired (USB-A to USB-C)</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>Up to 200 hours (2.4GHz), up to 275 hours (Bluetooth LE)</p></td></tr><tr><td class="firstcol " ><p>Sensor</p></td><td  ><p>Razer Focus Pro 50K Optical Sensor Gen-3</p></td></tr><tr><td class="firstcol " ><p>Polling rate</p></td><td  ><p>Up to 8,000Hz (wireless and wired)</p></td></tr><tr><td class="firstcol " ><p>Maximum sensitivity (DPI)</p></td><td  ><p>50,000</p></td></tr><tr><td class="firstcol " ><p>Programmable buttons</p></td><td  ><p>14</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>127.5mm x 75.8mm x 42.7mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>100g (3.53oz)</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-should-i-buy-the-razer-basilisk-v4-pro"><span>Should I buy the Razer Basilisk V4 Pro?</span></h2><div ><table><caption>Razer Basilisk V4 Pro Scorecard</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Features</p></td><td  ><p>14 customizable buttons, the HyperScroll wheel and some interesting software features</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>A great performer that’s stymied by a few notable stumbles, like the scroll wheel’s squishiness and the battery-draining RGB</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Great build quality and a comfortable design, but it might not be best for smaller hands</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Very expensive, but you get plenty for your cash</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-2">Buy it if…</h2><div class="product"><p><strong>You want a gaming all-rounder</strong><br />With plenty of buttons and a comfy ergonomic shape, the Basilisk V4 Pro excels in many different areas.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="856510e8-d6d4-11f1-9fcd-b5ec00701703" data-action="Deal Block" data-label="You want a gaming all-rounderWith plenty of buttons and a comfy ergonomic shape, the Basilisk V4 Pro excels in many different areas." data-dimension48="You want a gaming all-rounderWith plenty of buttons and a comfy ergonomic shape, the Basilisk V4 Pro excels in many different areas." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You want the HyperScroll wheel</strong><br />Sure, it’s not perfect, but Razer’s HyperScroll wheel is still a welcome addition that elevates the mouse, especially when it comes to productivity and everyday tasks.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="8565114c-d6d4-11f1-8c4c-93c5f3366c9e" data-action="Deal Block" data-label="You want the HyperScroll wheelSure, it’s not perfect, but Razer’s HyperScroll wheel is still a welcome addition that elevates the mouse, especially when it comes to productivity and everyday tasks." data-dimension48="You want the HyperScroll wheelSure, it’s not perfect, but Razer’s HyperScroll wheel is still a welcome addition that elevates the mouse, especially when it comes to productivity and everyday tasks." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>Battery life is important to you</strong><br />With 200 hours of juice — or 275 hours on Bluetooth LE — this mouse just keeps going and going and going.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="856511a6-d6d4-11f1-a4a5-7b27ffffe5f9" data-action="Deal Block" data-label="Battery life is important to youWith 200 hours of juice — or 275 hours on Bluetooth LE — this mouse just keeps going and going and going." data-dimension48="Battery life is important to youWith 200 hours of juice — or 275 hours on Bluetooth LE — this mouse just keeps going and going and going." data-dimension25="">View Deal</a></p></div><h2 id="don-t-buy-it-if">Don’t buy it if…</h2><div class="product"><p><strong>You prefer lightweight mice</strong><br />Razer has cut the Basilisk’s weight by 10% compared to its predecessor, but it’s still far from what we’d call lightweight.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="85651264-d6d4-11f1-a83c-8dd8edc69c68" data-action="Deal Block" data-label="You prefer lightweight miceRazer has cut the Basilisk’s weight by 10% compared to its predecessor, but it’s still far from what we’d call lightweight." data-dimension48="You prefer lightweight miceRazer has cut the Basilisk’s weight by 10% compared to its predecessor, but it’s still far from what we’d call lightweight." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You’re a fingertip user or have small hands</strong><br />Some of the new buttons on the Basilisk V4 Pro are hard to reach for certain grips and hand sizes.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="856512c8-d6d4-11f1-ac42-b381941d220c" data-action="Deal Block" data-label="You’re a fingertip user or have small handsSome of the new buttons on the Basilisk V4 Pro are hard to reach for certain grips and hand sizes." data-dimension48="You’re a fingertip user or have small handsSome of the new buttons on the Basilisk V4 Pro are hard to reach for certain grips and hand sizes." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You’re pinching the pennies</strong><br />$169.99 / £169.99 / $289.95 AUD is an awful lot to pay for a mouse, and there are many capable options that will cost you less than half of Razer’s asking price.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="8565132c-d6d4-11f1-8269-c52756928c11" data-action="Deal Block" data-label="You’re pinching the pennies$169.99 / £169.99 / $289.95 AUD is an awful lot to pay for a mouse, and there are many capable options that will cost you less than half of Razer’s asking price." data-dimension48="You’re pinching the pennies$169.99 / £169.99 / $289.95 AUD is an awful lot to pay for a mouse, and there are many capable options that will cost you less than half of Razer’s asking price." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-also-consider"><span>Also consider</span></h2><div class="product"><p><strong>Logitech G502 X Plus</strong><br />A superb gaming mouse that looks remarkably similar to the Basilisk V4 Pro, complete with ergonomic shape and a plethora of buttons, the Logitech G502 X Plus is a stunning addition to Logitech’s popular lineup.</p><p><a href="https://www.techradar.com/reviews/logitech-g502-x-plus" data-dimension112="856513ea-d6d4-11f1-a878-1306ee7c8659" data-action="Deal Block" data-label="Read our full Logitech G502 X Plus review" data-dimension48="Read our full Logitech G502 X Plus review" data-dimension25=""><strong>Read our full Logitech G502 X Plus review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="856513ea-d6d4-11f1-a878-1306ee7c8659" data-action="Deal Block" data-label="Read our full Logitech G502 X Plus review" data-dimension48="Read our full Logitech G502 X Plus review" data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>Corsair Nightsword V2 Wireless</strong><br />A more affordable option if you value ergonomics and customization, Corsair’s Nightsword V2 Wireless boasts long battery life and a high-quality sensor that makes it ideal for fast-paced gaming sessions.</p><p><a href="https://www.techradar.com/computing/mice/corsair-nightsword-v2-wireless-review" data-dimension112="85651444-d6d4-11f1-9ebc-ef89a6f84a7e" data-action="Deal Block" data-label="Read our full Corsair Nightsword V2 Wireless review" data-dimension48="Read our full Corsair Nightsword V2 Wireless review" data-dimension25=""><strong>Read our full Corsair Nightsword V2 Wireless review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="85651444-d6d4-11f1-9ebc-ef89a6f84a7e" data-action="Deal Block" data-label="Read our full Corsair Nightsword V2 Wireless review" data-dimension48="Read our full Corsair Nightsword V2 Wireless review" data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-razer-basilisk-v4-pro"><span>How I tested the Razer Basilisk V4 Pro</span></h2><ul><li><strong>I spent a week testing the Razer Basilisk V4 Pro in various games to see how it managed in different genres </strong></li><li><strong>I also explored its customization options in the Razer Synapse app to see how well it could be adapted to different needs</strong></li></ul><p>I tested the Razer Basilisk V4 Pro over the course of a week. I used it for everyday tasks like browsing the web and writing this review, and tried it in a range of different games, including Call of Duty, Football Manager 27 and Stardew Valley. Additionally, I explored its customization options in the Razer Synapse app to see how easy it was to adjust its settings. </p><ul><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar’s reviews guarantee</a></li><li><em>First reviewed: November 2026</em></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/computing/mice/razer-basilisk-v4-pro</link>
                                                                            <description>
                            <![CDATA[ The Razer Basilisk V4 Pro advances the Basilisk lineup with some welcome new features, along with a handful of disappointments. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qXZQnoTrPXhZMPMfgv3M99</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LAVtGiSVerrZeshYnmMZsU-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 16:11:21 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mice]]></category>
                                                    <category><![CDATA[Gaming Accessories]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Peripherals & Accessories]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                <author><![CDATA[ alexblake.techradar@gmail.com (Alex Blake) ]]></author>                    <dc:creator><![CDATA[ Alex Blake ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/gwmVRU4zMGnDYsGVAFvRmL-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Alex Blake has been fooling around with computers since the early 1990s, and since that time he&#039;s learned a thing or two about tech. No more than two things, though. That&#039;s all his brain can hold. As well as TechRadar, Alex writes for iMore, Digital Trends and Creative Bloq, among others. He was previously commissioning editor at MacFormat magazine. That means he mostly covers the world of Apple and its latest products, but also Windows, computer peripherals, mobile apps, and much more beyond. When not writing, you can find him hiking the English countryside and gaming on his PC.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/LAVtGiSVerrZeshYnmMZsU-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Razer Basilisk V4 Pro mouse on a wooden desk.]]></media:description>                                                            <media:text><![CDATA[The Razer Basilisk V4 Pro mouse on a wooden desk.]]></media:text>
                                <media:title type="plain"><![CDATA[The Razer Basilisk V4 Pro mouse on a wooden desk.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LAVtGiSVerrZeshYnmMZsU-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-razer-basilisk-v4-pro-two-minute-review"><span>Razer Basilisk V4 Pro two-minute review</span></h2><p>One of the first gaming mice I ever used was a Razer Basilisk, and I enjoyed it so much I wore the grippy rubber sides down until they were completely smooth. I’ve moved over to much more lightweight pointers in the years since, but with Razer launching the Basilisk V4 Pro, has the company done enough to tempt me back and resurrect that fond old love affair? </p><p>Spoiler alert: not completely. Because while the Basilisk V4 Pro is an excellent upgrade over its predecessor, it also comes with a few drawbacks that prevent it from being a total must-buy. It’s a great <a href="https://www.techradar.com/news/best-gaming-mouse">gaming mouse </a>and might be ideal in the right (large) hands, but don’t go into this expecting perfection. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/J8KoVkiUmypVrSn7Upap7V-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mFaJxyNgLLcv4JBi8yeC9V-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Let’s start with the positives. Razer has kept the Basilisk’s familiar ergonomic form factor, which is best suited to palm grip users, and its comfortable sculpted shape fits snugly into your hand. The build quality is also good, with solid plastics throughout and grippy textured finishes on the sides. And while it’s still a fairly hefty 100g, that’s still 10% lighter than the 112g Basilisk V3 Pro. </p><p>Battery life has increased to 200 hours in 2.4GHz mode at a 1,000Hz polling rate, or 275 hours on Bluetooth LE — up from 140 hours and 210 hours on the <a href="https://www.techradar.com/computing/mice/razer-basilisk-v3-pro-35k-everyday-excellence">Basilisk V3 Pro</a>. Note that that’s with the RGB lighting disabled. My review unit arrived with 66% battery, and in my testing (using it in 2.4GHz mode with a 1,000Hz polling rate and the RGB switched on), that dropped to 0% after 45 hours, so you can probably expect just under 70 hours on a full charge when using these settings. That’s a sizeable drop on 200 hours, but you’ll get much more juice if you dim the RGB lights.</p><p>Compared to the Basilisk V4 Pro’s predecessor, Razer has outfitted the latest version with a couple of extra buttons: one on the top-left corner of the left click and another next to the side buttons. That means you’ve now got 14 customizable controls on this device, making it a sort of halfway solution between a regular mouse and the button-crazy <a href="https://www.techradar.com/computing/mice/razer-naga-v3-pro">Razer Naga V3 Pro</a>. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6ocieH7eXm3XdtVGCYNJNV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xnky8VCZwxBxojkqHS8VHV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One of those buttons — the additional on one the side — could be assigned to Razer’s “Perfect 180” feature, the company suggested. This instantly spins your in-game character around 180 degrees, and if you think that sounds like cheating, you might have a point — even Razer admitted to us that they thought it could get banned in competitive games. Still, until that happens… </p><p>Razer also told us it had made the left and right click buttons sound less “ticky,” and they do have a satisfyingly soft and quiet actuation, one that’s a little less piercing to the ears than those on the <a href="https://www.techradar.com/computing/mice/razer-viper-v4-pro-review">Viper V4 Pro</a>. They’re not silent, but they’re pleasing in use. </p><p>Sandwiched between those buttons is Razer’s HyperSpeed scroll wheel that, while not strictly a gaming feature, might be one of the Basilisk V4 Pro’s best aspects. You can set it to spin freely or ratchet (with two strength options) in Razer’s Synapse app, but its real party trick is its Smart-Reel feature. If you’ve set it to ratchet, a quick spin of the wheel automatically flips it into free-spin mode; put the brakes on and it moves back to ratcheting. It’s a great way to rapidly move through documents and spreadsheets without having to manually change modes. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E6MSFamSSNarwd64fhnSAV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Gb2nDFQqy7QEy6FHwPQoMV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But while I liked the HyperScroll wheel, I didn’t <em>love</em> it. Every time it switches modes (from free spinning to ratcheting, say), there’s a loud and slightly disconcerting crunching sound that starts to grate after a while. </p><p>Pushing it in to click the scroll wheel also feels very soft and mushy — it’s imprecise compared with Razer’s own alternatives like the Viper V4 Pro, which is much crisper to click. It’s a welcome feature on the mouse, but it’s clearly inferior to the MagSpeed wheel you’ll find on the Logitech MX Master 4. </p><p>This was something I found time and again with the Basilisk V4 Pro: I’d often be pleased with one feature, only to observe a downside to it after I’d used it a little more. I was happy to see an extra side button that I could program to my needs, for instance, but then started to notice it getting in the way and messing up my two-side-button muscle memory.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/VfKXgdH34vpkZ8Ph4JRs5V-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bgh5xrv3rFNSNbDCnvGoGV-1920-80.jpg" alt="The Razer Basilisk V4 Pro mouse on a wooden desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Or take the RGB lighting as another example: it looks lovely (especially on the Spectrum Cycling setting), but considering you never look at the mouse when using it, and your hand covers it up anyway, it felt a little pointless. Perhaps Razer could have done away with it and eked more battery life out of the Basilisk. </p><p>Ultimately, the Basilisk V4 Pro hasn’t converted me back to its temptingly sculpted form factor. It offers a capable combination of features, buttons and comfort, and for many gamers — especially those with larger hands — it’ll be an attractive option. It’s still one of the best gaming mice around, despite its drawbacks. </p><p>But for every two steps forward, there’s one step back that tempers its progress, whether that’s the imperfect HyperScroll wheel, the hard-to-reach buttons for all but palm grip users or the questionable, battery-draining RGB. I went into this looking to rekindle my love for an old flame, but in the end, I found myself stuck in the Basilisk’s friend zone.</p><h2 class="article-body__section" id="section-razer-basilisk-v4-pro-price-release-date"><span>Razer Basilisk V4 Pro: Price &amp; release date</span></h2><ul><li><strong>Available to buy now</strong></li><li><strong>Priced at $169.99 / £169.99 / $289.95 AUD</strong></li></ul><p>The Razer Basilisk V4 Pro is priced at $169.99 / £169.99 / $289.95 AUD and is available now from Razer’s website and third-party retailers. Its price has crept up by $10 / £10 / $10 AUD versus the Basilisk V3 Pro 35K.</p><h2 class="article-body__section" id="section-razer-basilisk-v4-pro-review-specs"><span>Razer Basilisk V4 Pro review: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Razer HyperSpeed Wireless Gen-2 (2.4GHz), Bluetooth 6.2, wired (USB-A to USB-C)</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>Up to 200 hours (2.4GHz), up to 275 hours (Bluetooth LE)</p></td></tr><tr><td class="firstcol " ><p>Sensor</p></td><td  ><p>Razer Focus Pro 50K Optical Sensor Gen-3</p></td></tr><tr><td class="firstcol " ><p>Polling rate</p></td><td  ><p>Up to 8,000Hz (wireless and wired)</p></td></tr><tr><td class="firstcol " ><p>Maximum sensitivity (DPI)</p></td><td  ><p>50,000</p></td></tr><tr><td class="firstcol " ><p>Programmable buttons</p></td><td  ><p>14</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>127.5mm x 75.8mm x 42.7mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>100g (3.53oz)</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-should-i-buy-the-razer-basilisk-v4-pro"><span>Should I buy the Razer Basilisk V4 Pro?</span></h2><div ><table><caption>Razer Basilisk V4 Pro Scorecard</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Features</p></td><td  ><p>14 customizable buttons, the HyperScroll wheel and some interesting software features</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>A great performer that’s stymied by a few notable stumbles, like the scroll wheel’s squishiness and the battery-draining RGB</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Great build quality and a comfortable design, but it might not be best for smaller hands</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Very expensive, but you get plenty for your cash</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-2">Buy it if…</h2><div class="product"><p><strong>You want a gaming all-rounder</strong><br />With plenty of buttons and a comfy ergonomic shape, the Basilisk V4 Pro excels in many different areas.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="856510e8-d6d4-11f1-9fcd-b5ec00701703" data-action="Deal Block" data-label="You want a gaming all-rounderWith plenty of buttons and a comfy ergonomic shape, the Basilisk V4 Pro excels in many different areas." data-dimension48="You want a gaming all-rounderWith plenty of buttons and a comfy ergonomic shape, the Basilisk V4 Pro excels in many different areas." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You want the HyperScroll wheel</strong><br />Sure, it’s not perfect, but Razer’s HyperScroll wheel is still a welcome addition that elevates the mouse, especially when it comes to productivity and everyday tasks.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="8565114c-d6d4-11f1-8c4c-93c5f3366c9e" data-action="Deal Block" data-label="You want the HyperScroll wheelSure, it’s not perfect, but Razer’s HyperScroll wheel is still a welcome addition that elevates the mouse, especially when it comes to productivity and everyday tasks." data-dimension48="You want the HyperScroll wheelSure, it’s not perfect, but Razer’s HyperScroll wheel is still a welcome addition that elevates the mouse, especially when it comes to productivity and everyday tasks." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>Battery life is important to you</strong><br />With 200 hours of juice — or 275 hours on Bluetooth LE — this mouse just keeps going and going and going.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="856511a6-d6d4-11f1-a4a5-7b27ffffe5f9" data-action="Deal Block" data-label="Battery life is important to youWith 200 hours of juice — or 275 hours on Bluetooth LE — this mouse just keeps going and going and going." data-dimension48="Battery life is important to youWith 200 hours of juice — or 275 hours on Bluetooth LE — this mouse just keeps going and going and going." data-dimension25="">View Deal</a></p></div><h2 id="don-t-buy-it-if">Don’t buy it if…</h2><div class="product"><p><strong>You prefer lightweight mice</strong><br />Razer has cut the Basilisk’s weight by 10% compared to its predecessor, but it’s still far from what we’d call lightweight.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="85651264-d6d4-11f1-a83c-8dd8edc69c68" data-action="Deal Block" data-label="You prefer lightweight miceRazer has cut the Basilisk’s weight by 10% compared to its predecessor, but it’s still far from what we’d call lightweight." data-dimension48="You prefer lightweight miceRazer has cut the Basilisk’s weight by 10% compared to its predecessor, but it’s still far from what we’d call lightweight." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You’re a fingertip user or have small hands</strong><br />Some of the new buttons on the Basilisk V4 Pro are hard to reach for certain grips and hand sizes.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="856512c8-d6d4-11f1-ac42-b381941d220c" data-action="Deal Block" data-label="You’re a fingertip user or have small handsSome of the new buttons on the Basilisk V4 Pro are hard to reach for certain grips and hand sizes." data-dimension48="You’re a fingertip user or have small handsSome of the new buttons on the Basilisk V4 Pro are hard to reach for certain grips and hand sizes." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You’re pinching the pennies</strong><br />$169.99 / £169.99 / $289.95 AUD is an awful lot to pay for a mouse, and there are many capable options that will cost you less than half of Razer’s asking price.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="8565132c-d6d4-11f1-8269-c52756928c11" data-action="Deal Block" data-label="You’re pinching the pennies$169.99 / £169.99 / $289.95 AUD is an awful lot to pay for a mouse, and there are many capable options that will cost you less than half of Razer’s asking price." data-dimension48="You’re pinching the pennies$169.99 / £169.99 / $289.95 AUD is an awful lot to pay for a mouse, and there are many capable options that will cost you less than half of Razer’s asking price." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-also-consider"><span>Also consider</span></h2><div class="product"><p><strong>Logitech G502 X Plus</strong><br />A superb gaming mouse that looks remarkably similar to the Basilisk V4 Pro, complete with ergonomic shape and a plethora of buttons, the Logitech G502 X Plus is a stunning addition to Logitech’s popular lineup.</p><p><a href="https://www.techradar.com/reviews/logitech-g502-x-plus" data-dimension112="856513ea-d6d4-11f1-a878-1306ee7c8659" data-action="Deal Block" data-label="Read our full Logitech G502 X Plus review" data-dimension48="Read our full Logitech G502 X Plus review" data-dimension25=""><strong>Read our full Logitech G502 X Plus review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="856513ea-d6d4-11f1-a878-1306ee7c8659" data-action="Deal Block" data-label="Read our full Logitech G502 X Plus review" data-dimension48="Read our full Logitech G502 X Plus review" data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>Corsair Nightsword V2 Wireless</strong><br />A more affordable option if you value ergonomics and customization, Corsair’s Nightsword V2 Wireless boasts long battery life and a high-quality sensor that makes it ideal for fast-paced gaming sessions.</p><p><a href="https://www.techradar.com/computing/mice/corsair-nightsword-v2-wireless-review" data-dimension112="85651444-d6d4-11f1-9ebc-ef89a6f84a7e" data-action="Deal Block" data-label="Read our full Corsair Nightsword V2 Wireless review" data-dimension48="Read our full Corsair Nightsword V2 Wireless review" data-dimension25=""><strong>Read our full Corsair Nightsword V2 Wireless review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="85651444-d6d4-11f1-9ebc-ef89a6f84a7e" data-action="Deal Block" data-label="Read our full Corsair Nightsword V2 Wireless review" data-dimension48="Read our full Corsair Nightsword V2 Wireless review" data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-razer-basilisk-v4-pro"><span>How I tested the Razer Basilisk V4 Pro</span></h2><ul><li><strong>I spent a week testing the Razer Basilisk V4 Pro in various games to see how it managed in different genres </strong></li><li><strong>I also explored its customization options in the Razer Synapse app to see how well it could be adapted to different needs</strong></li></ul><p>I tested the Razer Basilisk V4 Pro over the course of a week. I used it for everyday tasks like browsing the web and writing this review, and tried it in a range of different games, including Call of Duty, Football Manager 27 and Stardew Valley. Additionally, I explored its customization options in the Razer Synapse app to see how easy it was to adjust its settings. </p><ul><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar’s reviews guarantee</a></li><li><em>First reviewed: November 2026</em></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've tested Apple's new M6 iMac, and it's still the best all-in-one desktop you can buy ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-at-a-glance-apple-imac-24-inch-m6-review"><span>At a glance: Apple iMac 24-inch (M6) Review</span></h2><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/dtctBNapCHjhmnEvQw5r9R.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What is it?</h3><div class="card__description-wrapper"><div class="card__description"><p>Apple's iMac with M6 is the latest generation of its all-in-one desktop. Like the M4, M3, and M1 before it, it keeps the modern, colorful design and slim build and includes a keyboard and mouse (or trackpad). Out of the box it's running macOS 27.2, and it's a capable desktop for creative work, productivity, and everyday tasks.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/pCUGu3BfJz4w4y5E8NHmAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What does it cost?</h3><div class="card__description-wrapper"><div class="card__description"><p>Good news: Apple hasn't increased the starting price. For $1,499, you get an M6 chip with a 10-core CPU, 10-core GPU, and Dual 16-core Neural Engine, plus 16GB of RAM and 256GB of storage. A $1,699 configuration upgrades to a 12-core CPU and GPU and 512GB of storage. Nano-texture glass, additional Thunderbolt 4 ports, and Ethernet are also available as options.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/XnvYcAPALpRtRXfSaLLEAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">Alternatives</h3><div class="card__description-wrapper"><div class="card__description"><p>Apple's Mac mini with M6 is the closest alternative, and lets you choose your own display, keyboard, and mouse. There's also the more powerful Mac Studio with M5 Max or M5 Ultra, alongside plenty of Windows desktop options.</p></div></div></div></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793883784574-d3q53im6l *, #fv-chart-1793883784574-d3q53im6l *:before, #fv-chart-1793883784574-d3q53im6l *:after, #fv-chart-1793883784574-d3q53im6l-slideshow *, #fv-chart-1793883784574-d3q53im6l-slideshow *:before, #fv-chart-1793883784574-d3q53im6l-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793883784574-d3q53im6l, #fv-chart-1793883784574-d3q53im6l-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793883784574-d3q53im6l { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793883784574-d3q53im6l.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793883784574-d3q53im6l.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-1793883784574-d3q53im6l .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793883784574-d3q53im6l-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793883784574-d3q53im6l-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793883784574-d3q53im6l-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-1793883784574-d3q53im6l-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-1793883784574-d3q53im6l-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793883784574-d3q53im6l-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793883784574-d3q53im6l-slideshow .fv-nav-btn.disabled, #fv-chart-1793883784574-d3q53im6l-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-1793883784574-d3q53im6l-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793883784574-d3q53im6l-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-1793883784574-d3q53im6l-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793883784574-d3q53im6l .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793883784574-d3q53im6l .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793883784574-d3q53im6l .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793883784574-d3q53im6l .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793883784574-d3q53im6l .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793883784574-d3q53im6l .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793883784574-d3q53im6l .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793883784574-d3q53im6l .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793883784574-d3q53im6l .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793883784574-d3q53im6l .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793883784574-d3q53im6l .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-row, #fv-chart-1793883784574-d3q53im6l .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793883784574-d3q53im6l .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793883784574-d3q53im6l .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793883784574-d3q53im6l .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793883784574-d3q53im6l .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793883784574-d3q53im6l .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793883784574-d3q53im6l .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-pie-container, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-stacked-product, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-grouped-bar-product, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-stacked-product, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793883784574-d3q53im6l.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-1793883784574-d3q53im6l.mobile-view .fv-bar-label, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-grouped-product-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-label, #fv-chart-1793883784574-d3q53im6l.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-1793883784574-d3q53im6l.mobile-view .fv-bar-container, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-cluster, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-container, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-x-axis-wrapper, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-x-axis-label-space, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-x-axis-chart-space, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-benchmark-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-dropdown-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-carousel-nav-btn, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-chart-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-chart-subhead, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-header, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select-wrapper, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-vs, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select-container, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793883784574-d3q53im6l.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-1793883784574-d3q53im6l.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-dials-grid, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-dial-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793883784574-d3q53im6l .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-row, #fv-chart-1793883784574-d3q53im6l .fv-stacked-product, #fv-chart-1793883784574-d3q53im6l .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-label, #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-container, #fv-chart-1793883784574-d3q53im6l .fv-bar-cluster { width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-label-space { display: none !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793883784574-d3q53im6l .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793883784574-d3q53im6l .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-stl-shop-all-logo, #fv-chart-1793883784574-d3q53im6l .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793883784574-d3q53im6l.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Apple iMac (2026, M6) scorecard",  "description": "How the Apple iMac (2026, M6) scored in our review",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T13:03:04.574Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Apple iMac (2026, M6)",    "Value",    "Design",    "Performance",    "Overall",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Apple iMac (2026, M6) – Value",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple iMac (2026, M6) – Design",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple iMac (2026, M6) – Performance",      "value": 5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple iMac (2026, M6) – Overall",      "value": 4.5,      "unitText": "",      "maxValue": 5    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T13:03:04.575Z","state":{"data":[{"productName":"Apple iMac (2026, M6)","attribute":"Value","value":4.5,"unit":"","maxValue":5},{"productName":"Apple iMac (2026, M6)","attribute":"Design","value":4.5,"unit":"","maxValue":5},{"productName":"Apple iMac (2026, M6)","attribute":"Performance","value":5,"unit":"","maxValue":5},{"productName":"Apple iMac (2026, M6)","attribute":"Overall","value":4.5,"unit":"","maxValue":5}],"products":["Apple iMac (2026, M6)"],"attributes":["Value","Design","Performance","Overall"],"selectedProducts":["Apple iMac (2026, M6)"],"selectedPrimaryProduct":"Apple iMac (2026, M6)","selectedAttributes":["Value","Design","Performance","Overall"],"productColors":[{"productName":"Apple iMac (2026, M6)","color":"#E8238C"}],"initialProductColors":[{"productName":"Apple iMac (2026, M6)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Value","Design","Performance","Overall"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Apple iMac (2026, M6) scorecard","subhead":"How the Apple iMac (2026, M6) scored in our review","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793883784574-d3q53im6l" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Apple iMac (2026, M6) scorecard</h3><p class="fv-chart-subhead">How the Apple iMac (2026, M6) scored in our review</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793883784574-d3q53im6l-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="How the Apple iMac (2026, M6) scored in our review" data-caption="" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Design</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 100%; background-color: #E8238C;" data-target-width="100" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Overall</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div></div></div><table class="sr-only"><caption>Group 1 Data</caption><thead><tr><th>Product</th><th>Value ()</th><th>Design ()</th><th>Performance ()</th><th>Overall ()</th></tr></thead><tbody><tr><td>Apple iMac (2026, M6)</td><td>4.5</td><td>4.5</td><td>5</td><td>4.5</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793883784574-d3q53im6l', false); });      } else {        initialize('fv-chart-1793883784574-d3q53im6l', false);      }    })();      </script></div><h2 class="article-body__section" id="section-apple-imac-24-inch-m6-review-value-for-money"><span>Apple iMac 24-inch (M6) Review: Value for money</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bfeKsw9kM6LVotenUsADSZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/bfeKsw9kM6LVotenUsADSZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>Apple's iMac with M6 isn't a revolution, but rather a lesson in squeezing more value out of a familiar package without raising the price. And I want to underscore the latter, as the iMac starts at $1,499 / £1,499 / AU$2,399 for the entry-level configuration, which is the same price as the M4 iMac — although Apple did increase the price of the M4 model earlier this year. For that price, you get a well-equipped Mac desktop that gives you everything you need to get started right out of the box.</p><p>That starts with the iMac itself, which is a modern, slim, colorful unit that won't take up much real estate, while giving you the canvas of a 24-inch 4.5K Retina display. Even without nano-texture glass — if you choose not to upgrade, as with my review unit — it's a colorful, vibrant, and rich experience that works well for everyday tasks and more creative work alike.</p><p>And, of course, there's the new M6 chip. It's a meaningful performance upgrade that keeps everything running smoothly, whether you're juggling everyday apps, working across multiple browser tabs, or getting stuck into more creative tasks. The addition of the Dual 16-core Neural Engine is another important part of the equation, helping accelerate AI-powered features, and giving this iMac more room to grow as Apple Intelligence continues to evolve. It's not just about getting a faster Mac today, but having a capable desktop that should feel ready for what's next, too.</p><p>Ultimately, it's excellent value for someone buying a new desktop Mac, whether it's their first iMac or an upgrade from an older machine. If you already have the M4 iMac, though, there's less reason to rush out and upgrade. This is a speed bump rather than a reinvention, but getting more performance for the same price is still a win.</p><p>If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup.</p><div class="product"><a data-dimension112="563a78ce-d933-11f1-9f58-0524b090e987" data-action="Deal Block" data-label="If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup." data-dimension48="If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:368px;"><p class="vanilla-image-block" style="padding-top:100.54%;"><img id="onaNjWDNBpvW4EEryymCWN" name="value4.5" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/onaNjWDNBpvW4EEryymCWN-1920-80.png" mos="" align="middle" fullscreen="" width="368" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="563a78ce-d933-11f1-9f58-0524b090e987" data-action="Deal Block" data-label="If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup." data-dimension48="If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-apple-imac-24-inch-m6-review-design"><span>Apple iMac 24-inch (M6) Review: Design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FKWJZFKaobu5KNR2KFw9wY" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/FKWJZFKaobu5KNR2KFw9wY-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Familiar, colorful all-in-one design</strong></li><li><strong>Immersive 24-inch 4.5K Retina display</strong></li><li><strong>You can still get it with nano-texture glass</strong></li></ul><p>Apple's iMac is still instantly recognizable as the latest generation of its iconic all-in-one. The new iMac with M6 looks just like the iMac with M4, M3, and M1 that came before it. It's still plenty colorful, and offers an expansive 24-inch 4.5K Retina display, all in a remarkably thin build that takes up minimal space wherever you decide to place it.</p><p>On the front, the 24-inch screen is surrounded by a white bezel, with the bottom featuring a chin in whichever color you've chosen. I'm testing the Purple model, just like last time, which is a light, likely Wonka-approved take on the shade. The rear and sides feature a darker, matte aluminum version of purple that really pops, while the giant Apple logo remains front and center on the back.</p><p>For connectivity, the left side has a headphone jack — yes, the iMac has a proper audio jack — while the rear houses the power connection, which magnetically snaps into place. It's convenient, though not a quick-release connection like MagSafe on the MacBook Air or MacBook Pro. Around back, you'll either get two Thunderbolt 4 USB-C ports or four, depending on the configuration. I'm testing the higher-end option with all four, and the power adapter also features a 2.5Gb Ethernet port.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fn46jEQQJq3VBokqZpvdWZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/fn46jEQQJq3VBokqZpvdWZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>Not much else is different here, especially since Apple introduced this design way back with the M1. If purple isn't your shade, there are six other color options: Orange, Blue, Yellow, Green, Silver, and Pink. You'll also get a color-matched keyboard and Magic Mouse or Magic Trackpad in the box, along with a matching USB-C to USB-C cable.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ETT4iH3doESoGJT7KVneXZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/ETT4iH3doESoGJT7KVneXZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>The display is really good, with a 4480 x 2520 resolution and up to 500 nits of brightness. Using it as my daily Mac, I've found it to be a great screen for just about everything. Colors pop, there's plenty of detail, and the resolution scales nicely whether I'm checking email, browsing the web, replying to messages, putting together presentations in Keynote, scrolling through Photos, or hopping on a FaceTime call. </p><p>It's equally enjoyable for watching content, whether that's a full-screen YouTube video or something playing in a window while I work. And for more creative tasks, there's plenty of detail and color to work with when editing photos or videos.</p><div class="product"><a data-dimension112="e81277c4-d933-11f1-ac12-a3606f28fbd2" data-action="Deal Block" data-label="I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish." data-dimension48="I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="fetJ7HfWYBKLNPcshUh6SQ" name="design 4.5 stars" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fetJ7HfWYBKLNPcshUh6SQ-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e81277c4-d933-11f1-ac12-a3606f28fbd2" data-action="Deal Block" data-label="I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish." data-dimension48="I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish." data-dimension25="">View Deal</a></p></div>                <div class="nominee__article" data-id="">            <span class="award__category"></span>            <a href=""><p><img src='/media/img/missing-image.svg' /></p></a>            <h2></h2>                        <div class="subtitle__description"><p></p></div>        </div>        <h3 class="article-body__section" id="section-apple-imac-24-inch-m6-review-specs"><span>Apple iMac 24-inch (M6) Review: Specs</span></h3><div ><table><caption>Apple iMac 24-inch (M6): Specs</caption><tbody><tr><td class="firstcol " ><p>Price</p></td><td  ><p>$1,299 / £1,299 / AU$1,99</p></td><td  ><p>$1,499 / £1,499 / AU$2,399</p></td></tr><tr><td class="firstcol " ><p>CPU</p></td><td  ><p>Apple M6 (10-core CPU, 10-core GPU, and 16-core Neural Engine)</p></td><td  ><p>Apple M6 (12-core CPU, 12-core GPU, and Dual 16-core Neural Engine)</p></td></tr><tr><td class="firstcol " ><p>Graphics</p></td><td  ><p>Integrated 10-core GPU</p></td><td  ><p>Integrated 12-core GPU</p></td></tr><tr><td class="firstcol " ><p>RAM</p></td><td  ><p>16GB (starting, but configurable up to 24GB)</p></td><td  ><p>16GB (starting, but configurable up to 32GB)</p></td></tr><tr><td class="firstcol " ><p>Screen</p></td><td  ><p>24-inch 4.5K Retina display with 4480 x 2520 resolution at 218 ppi and 500 nits brightness</p></td><td  ><p>24-inch 4.5K Retina display with 4480 x 2520 resolution at 218 ppi and 500 nits brightness. Optional nano-texture glass.</p></td></tr><tr><td class="firstcol " ><p>Storage</p></td><td  ><p>256GB (starting, but configurable up to 1TB)</p></td><td  ><p>256GB (starting, but configurable up to 2TB)</p></td></tr><tr><td class="firstcol " ><p>Ports</p></td><td  ><p>Two Thunderbolt 4/USB-C ports, headphone jack</p></td><td  ><p>Four Thunderbolt 4/USB-C ports, headphone jack</p></td></tr><tr><td class="firstcol " ><p>Wireless</p></td><td  ><p>Wi-Fi 7 (802.11be), Bluetooth 6, and Thread connectivity</p></td><td  ><p>Wi-Fi 7 (802.11be), Bluetooth 6, and Thread connectivity</p></td></tr><tr><td class="firstcol " ><p>Camera</p></td><td  ><p>12-megapixel FaceTime camera with Center Stage and Desk View functionality</p></td><td  ><p>12-megapixel FaceTime camera with Center Stage and Desk View functionality</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>4.42 kg/9.74 lbs</p></td><td  ><p>4.44 kg/9.79 lbs</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>54.7 x 46.1 x 14.7cm / 21.5 x 18.1 x 5.8 inches</p></td><td  ><p>54.7 x 46.1 x 14.7cm / 21.5 x 18.1 x 5.8 inches</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-apple-imac-24-inch-m6-review-performance"><span>Apple iMac 24-inch (M6) Review: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vNzVEnwUq6VDMPpeuvmKSZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/vNzVEnwUq6VDMPpeuvmKSZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Apple's M6 chip brings a welcome performance boost over M4, M3, or M1</strong></li><li><strong>Everyday multitasking feels effortless, even with 16GB of RAM</strong></li><li><strong>Improved Neural Engine makes AI and creative tasks feel snappy</strong></li></ul><p>As I hinted at above, the main change with Apple's iMac for 2026 is the processor. Apple's all-in-one computer is jumping from M4 to M6, and there are still two main configurations to choose from. For most folks, the entry-level iMac should be more than enough. Priced at $1,499 / £1,499 / AU$3,499, you get an M6 chip with a 10-core CPU, 10-core GPU, and Dual 16-core Neural Engine, alongside 16GB of RAM and 256GB of storage.</p><p>For $1,699 / £1,699 / AU$3,699, you can step up to an M6 with a 12-core CPU and 12-core GPU, along with the same Dual 16-core Neural Engine, 16GB of RAM, and 512GB of storage. That extra horsepower should come in handy for more creative tasks and on-device AI functionality. </p><p>It's also worth noting that neither configuration comes with a price increase over the previous generation. Both feature improvements to Wi-Fi and Bluetooth, now sitting at Wi-Fi 7 and Bluetooth 6, along with Thread connectivity to help with the smart home.</p><p>I've been testing the step-up model with the fully specced M6 chip, 16GB of RAM, and 512GB of storage. Out of the box, setup was a breeze, and the iMac is running macOS 27.2. Here's a pro tip: as part of the onboarding process, you can choose to set up your new Mac using an iPhone or iPad, which speeds things up a bit.</p><p>From there, you're presented with a welcome screen; hit Enter, and you're ready to start using your iMac however you'd like. And, as has been the case with most Macs since Apple made the jump to its own chips — Apple Silicon — everyday performance isn't really an issue. In my daily use, I've had no trouble running Safari and Google Chrome, both with more than a dozen tabs open, alongside Messages, Mail, Photos, Pixelmator Pro, and Slack, all without skipping a beat. Thanks to the M6 chip, multitasking is effortless, and everything feels zippy and responsive. That's particularly impressive given that this configuration has just 16GB of RAM.</p><p>One key advantage of the M6 is its Dual 16-core Neural Engine, compared with the single Neural Engine in earlier iMac models. This helps power Siri AI and other Apple Intelligence features, and I've found some of the multimodal capabilities particularly snappy. For instance, I can ask Siri to create a calendar event based on an invitation displayed on my screen in Mail or Gmail, and even have it invite other people. You can type your request into Spotlight or use the built-in microphones to get started.</p><p>Similarly, as part of the latest updates to Apple Creator Studio, Generative Fill within Pixelmator Pro works quite snappily here. It's also easy enough to ask it to try again if the result isn't quite right. You can also use Siri AI within Numbers, Pages, and Keynote for a little extra assistance. I've found myself making good use of the big screen, too, starting with a photo edit in the Photos app using tools like Expand or Clean Up before sending it into Pixelmator Pro to refine things further. The Super Resolution functionality is particularly handy for boosting overall image quality.</p><p>Previously, my iMac with M4, which was specced with a beefier 32GB of RAM, scored 3,646 in single-core and 14,724 in multi-core testing with Geekbench 6.3. The iMac with M6 surpassed those results, scoring 4,553 in single-core and 20,038 in multi-core with Geekbench 6. That's roughly a 25% improvement in single-core performance and a 36% jump in multi-core performance over the M4.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TvoewBv2QwWFePToyTsFRZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/TvoewBv2QwWFePToyTsFRZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>We also ran Geekbench 7, where the M6 iMac scored 3,931 in single-core and 21,374 in multi-core testing. While those results aren't directly comparable to my previous Geekbench 6.3 scores, they further demonstrate the kind of performance this machine can deliver.</p><p>It's an impressive leap over two generations of Apple Silicon, and one that matches my real-world experience over the past few days. The iMac with M6 feels zippy, responsive, and ready for a challenge, even with just 16GB of RAM inside.</p><p>The iMac remains the centerpiece of Apple's all-in-one desktop lineup. Unlike the Mac mini or Mac Studio, you're getting a complete system that's ready to go right out of the box. That means a screen, speakers, ports, keyboard, and mouse are all included, making it an excellent choice for someone buying their first desktop Mac, upgrading from an older model or even a PC, or a business looking for a straightforward, all-in-one solution.</p><p>The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome.</p><div class="product"><a data-dimension112="25273640-d934-11f1-a1ac-155c53256958" data-action="Deal Block" data-label="The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome." data-dimension48="The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="iPsSRLxVnLSd9PewPGhBkR" name="performance5" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/iPsSRLxVnLSd9PewPGhBkR-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="25273640-d934-11f1-a1ac-155c53256958" data-action="Deal Block" data-label="The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome." data-dimension48="The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-should-i-buy-the-apple-imac-with-m6"><span>Should I buy the Apple iMac with M6?</span></h2><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy the Apple iMac with M6 if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You want an excellent all-in-one computer</strong></p></div><div class="card__description"><p>No price increase, improved performance, a sleek and colorful design, and a great display make the iMac with M6 an easy recommendation. It's an excellent all-in-one package that has plenty to offer without costing more than the previous generation.<br /><strong>✅ You're already in the Apple ecosystem</strong></p></div><div class="card__description"><p>It goes without saying, but the iMac plays really well with iPhone, iPad, Apple Watch, and iCloud. You'll feel right at home with familiar apps, a shared clipboard between devices, the ability to mirror your iPhone on the iMac, and even the convenience of having calls ring on your desktop.<br /><strong>✅ You want a colorful, good-looking desktop</strong></p></div><div class="card__description"><p>I said it with the M4, but I really love the look of the iMac. You get your pick of colors, and the result is a sleek desktop that weighs less than 10 pounds and doesn't look like a hunk of junk. It can fit just about anywhere.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don&#39;t buy the Apple iMac with M6 if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You need a bigger screen</strong></p></div><div class="card__description"><p>Unlike a Mac mini, Mac Studio, or even a MacBook you plug into a display, the iMac with M6 only comes in one size: 24 inches. So if you need something larger or want flexibility, you'll want to look elsewhere<br /><strong>❌ You need the most powerful Mac</strong></p></div><div class="card__description"><p>Apple already makes the M5 Max and M5 Ultra, both in desktop and laptop form, so if you need more power for more intensive tasks — be it creative work or running AI models — you'll want to look at those</p></div></div></div></div><h2 class="article-body__section" id="section-how-i-tested-the-apple-imac-with-m6"><span>How I tested the Apple iMac with M6</span></h2><p>I've spent the past five days putting the Apple iMac with M6 through its paces. After unboxing it, I set it up in two different spaces — my kitchen island and my desk — to get a sense of how it fits into different environments. I downloaded a range of apps for work and play, including Google Chrome, Pixelmator Pro, Final Cut Pro, Slack, and Geekbench.</p><p>I used it as my daily work machine, juggling browser tabs, messages, and creative projects, while also running benchmarks and more demanding tasks. Outside of work, I played games, took calls, watched movies, and listened to music to get a feel for its overall performance and entertainment experience.</p><p><em>First reviewed November 2026.</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/computing/macs/ive-tested-apples-new-m6-imac-and-its-still-the-best-all-in-one-desktop-you-can-buy</link>
                                                                            <description>
                            <![CDATA[ I spent five days testing Apple's new M6 iMac to see how its performance upgrades and familiar colorful design stack up. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QsMJywdh2wPF4PhehxgNpb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vXUjUvnAfebWjAoxoi4xLf-1920-80.gif" type="image/gif" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 14:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 05 Nov 2026 16:15:41 +0000</updated>
                                                                                                                                            <category><![CDATA[Macs]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Desktop PCs]]></category>
                                                                                                <author><![CDATA[ jacob.krol@futurenet.com (Jacob Krol) ]]></author>                    <dc:creator><![CDATA[ Jacob Krol ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hKSCqxtWYDuUtwZseV9E3C-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob Krol is the US Managing Editor for News at TechRadar overseeing the daily rollout of content and coordinating with various section leads. He joined TechRadar in May of 2024 and is based out of New York City. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Prior to joining TechRadar, Jacob was Senior Editor, Technology and Commerce at TheStreet focusing on covering the latest products in the consumer tech space from how to pre-order to finding the best deals with reviews, analysis, and features in between. Before that, Jacob was a founding member at CNN Underscored, building and growing the electronics section. He also assisted in building out social media channels, programming the homepage, and establishing protocols for testing various products for one-off reviews and best-of guides. Prior to starting at CNN, Jacob was a Tech Writer at Mashable focusing on news, reviews, and evergreen content. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;He has experience covering major players in the space like Apple, Samsung, Google, and Microsoft as well as testing products like smartphones, tablets, smartwatches, smart home gadgets, speakers, earbuds, headphones, TVs, and more futuristic tech like smart glasses.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Jacob received a Bachelor of Arts in Media &amp; Communication cum laude with a minor in Innovation and Entrepreneurship from Muhlenberg College. During his time on campus, he interned at CNET, Fox News, CNN, and CNBC, while also running his own tech blog, NJTechReviews, which he founded in 2010.&lt;/p&gt;&lt;p&gt;When not playing with a new gadget or breaking down the latest news, you can find Jacob listening to Bruce Springsteen, posting on TikTok, building a Lego set, watching a Star Wars show, or playing with his family dogs, Georgia and Charlie.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/gif" url="https://cdn.mos.cms.futurecdn.net/vXUjUvnAfebWjAoxoi4xLf-1920-80.gif">
                                                            <media:credit><![CDATA[Jacob Krol/Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Apple iMac M6 review]]></media:description>                                                            <media:text><![CDATA[Apple iMac M6 review]]></media:text>
                                <media:title type="plain"><![CDATA[Apple iMac M6 review]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vXUjUvnAfebWjAoxoi4xLf-1920-80.gif" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-at-a-glance-apple-imac-24-inch-m6-review"><span>At a glance: Apple iMac 24-inch (M6) Review</span></h2><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/dtctBNapCHjhmnEvQw5r9R.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What is it?</h3><div class="card__description-wrapper"><div class="card__description"><p>Apple's iMac with M6 is the latest generation of its all-in-one desktop. Like the M4, M3, and M1 before it, it keeps the modern, colorful design and slim build and includes a keyboard and mouse (or trackpad). Out of the box it's running macOS 27.2, and it's a capable desktop for creative work, productivity, and everyday tasks.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/pCUGu3BfJz4w4y5E8NHmAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What does it cost?</h3><div class="card__description-wrapper"><div class="card__description"><p>Good news: Apple hasn't increased the starting price. For $1,499, you get an M6 chip with a 10-core CPU, 10-core GPU, and Dual 16-core Neural Engine, plus 16GB of RAM and 256GB of storage. A $1,699 configuration upgrades to a 12-core CPU and GPU and 512GB of storage. Nano-texture glass, additional Thunderbolt 4 ports, and Ethernet are also available as options.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/XnvYcAPALpRtRXfSaLLEAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">Alternatives</h3><div class="card__description-wrapper"><div class="card__description"><p>Apple's Mac mini with M6 is the closest alternative, and lets you choose your own display, keyboard, and mouse. There's also the more powerful Mac Studio with M5 Max or M5 Ultra, alongside plenty of Windows desktop options.</p></div></div></div></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793883784574-d3q53im6l *, #fv-chart-1793883784574-d3q53im6l *:before, #fv-chart-1793883784574-d3q53im6l *:after, #fv-chart-1793883784574-d3q53im6l-slideshow *, #fv-chart-1793883784574-d3q53im6l-slideshow *:before, #fv-chart-1793883784574-d3q53im6l-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793883784574-d3q53im6l, #fv-chart-1793883784574-d3q53im6l-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793883784574-d3q53im6l { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793883784574-d3q53im6l.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793883784574-d3q53im6l.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-1793883784574-d3q53im6l .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793883784574-d3q53im6l-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793883784574-d3q53im6l-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793883784574-d3q53im6l-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-1793883784574-d3q53im6l-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-1793883784574-d3q53im6l-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793883784574-d3q53im6l-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793883784574-d3q53im6l-slideshow .fv-nav-btn.disabled, #fv-chart-1793883784574-d3q53im6l-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-1793883784574-d3q53im6l-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793883784574-d3q53im6l-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-1793883784574-d3q53im6l-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793883784574-d3q53im6l .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793883784574-d3q53im6l .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793883784574-d3q53im6l .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793883784574-d3q53im6l .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793883784574-d3q53im6l .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793883784574-d3q53im6l .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793883784574-d3q53im6l .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793883784574-d3q53im6l .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793883784574-d3q53im6l .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793883784574-d3q53im6l .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793883784574-d3q53im6l .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793883784574-d3q53im6l .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-row, #fv-chart-1793883784574-d3q53im6l .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793883784574-d3q53im6l .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793883784574-d3q53im6l .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793883784574-d3q53im6l .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793883784574-d3q53im6l .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793883784574-d3q53im6l .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793883784574-d3q53im6l.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793883784574-d3q53im6l .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-pie-container, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-stacked-product, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-grouped-bar-product, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-stacked-product, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793883784574-d3q53im6l.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-1793883784574-d3q53im6l.mobile-view .fv-bar-label, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-grouped-product-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-label, #fv-chart-1793883784574-d3q53im6l.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-1793883784574-d3q53im6l.mobile-view .fv-bar-container, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-cluster, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-container, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-x-axis-wrapper, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-x-axis-label-space, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-x-axis-chart-space, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-benchmark-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-dropdown-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-carousel-nav-btn, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-chart-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-chart-subhead, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-header, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select-wrapper, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-vs, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select-container, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-versus-select, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793883784574-d3q53im6l.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-1793883784574-d3q53im6l.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-dials-grid, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-dial-title, #fv-chart-1793883784574-d3q53im6l.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793883784574-d3q53im6l.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793883784574-d3q53im6l .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-row, #fv-chart-1793883784574-d3q53im6l .fv-stacked-product, #fv-chart-1793883784574-d3q53im6l .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-label, #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-bar-container, #fv-chart-1793883784574-d3q53im6l .fv-bar-cluster { width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883784574-d3q53im6l .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883784574-d3q53im6l .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-label-space { display: none !important; } #fv-chart-1793883784574-d3q53im6l .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793883784574-d3q53im6l .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793883784574-d3q53im6l .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .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-1793883784574-d3q53im6l .fv-stl-shop-all-logo, #fv-chart-1793883784574-d3q53im6l .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793883784574-d3q53im6l .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793883784574-d3q53im6l .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793883784574-d3q53im6l .fv-dial-title { font-size: 16px !important; } #fv-chart-1793883784574-d3q53im6l .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793883784574-d3q53im6l.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Apple iMac (2026, M6) scorecard",  "description": "How the Apple iMac (2026, M6) scored in our review",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T13:03:04.574Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Apple iMac (2026, M6)",    "Value",    "Design",    "Performance",    "Overall",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Apple iMac (2026, M6) – Value",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple iMac (2026, M6) – Design",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple iMac (2026, M6) – Performance",      "value": 5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple iMac (2026, M6) – Overall",      "value": 4.5,      "unitText": "",      "maxValue": 5    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T13:03:04.575Z","state":{"data":[{"productName":"Apple iMac (2026, M6)","attribute":"Value","value":4.5,"unit":"","maxValue":5},{"productName":"Apple iMac (2026, M6)","attribute":"Design","value":4.5,"unit":"","maxValue":5},{"productName":"Apple iMac (2026, M6)","attribute":"Performance","value":5,"unit":"","maxValue":5},{"productName":"Apple iMac (2026, M6)","attribute":"Overall","value":4.5,"unit":"","maxValue":5}],"products":["Apple iMac (2026, M6)"],"attributes":["Value","Design","Performance","Overall"],"selectedProducts":["Apple iMac (2026, M6)"],"selectedPrimaryProduct":"Apple iMac (2026, M6)","selectedAttributes":["Value","Design","Performance","Overall"],"productColors":[{"productName":"Apple iMac (2026, M6)","color":"#E8238C"}],"initialProductColors":[{"productName":"Apple iMac (2026, M6)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Value","Design","Performance","Overall"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Apple iMac (2026, M6) scorecard","subhead":"How the Apple iMac (2026, M6) scored in our review","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793883784574-d3q53im6l" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Apple iMac (2026, M6) scorecard</h3><p class="fv-chart-subhead">How the Apple iMac (2026, M6) scored in our review</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793883784574-d3q53im6l-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="How the Apple iMac (2026, M6) scored in our review" data-caption="" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Design</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 100%; background-color: #E8238C;" data-target-width="100" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Overall</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div></div></div><table class="sr-only"><caption>Group 1 Data</caption><thead><tr><th>Product</th><th>Value ()</th><th>Design ()</th><th>Performance ()</th><th>Overall ()</th></tr></thead><tbody><tr><td>Apple iMac (2026, M6)</td><td>4.5</td><td>4.5</td><td>5</td><td>4.5</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793883784574-d3q53im6l', false); });      } else {        initialize('fv-chart-1793883784574-d3q53im6l', false);      }    })();      </script></div><h2 class="article-body__section" id="section-apple-imac-24-inch-m6-review-value-for-money"><span>Apple iMac 24-inch (M6) Review: Value for money</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bfeKsw9kM6LVotenUsADSZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/bfeKsw9kM6LVotenUsADSZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>Apple's iMac with M6 isn't a revolution, but rather a lesson in squeezing more value out of a familiar package without raising the price. And I want to underscore the latter, as the iMac starts at $1,499 / £1,499 / AU$2,399 for the entry-level configuration, which is the same price as the M4 iMac — although Apple did increase the price of the M4 model earlier this year. For that price, you get a well-equipped Mac desktop that gives you everything you need to get started right out of the box.</p><p>That starts with the iMac itself, which is a modern, slim, colorful unit that won't take up much real estate, while giving you the canvas of a 24-inch 4.5K Retina display. Even without nano-texture glass — if you choose not to upgrade, as with my review unit — it's a colorful, vibrant, and rich experience that works well for everyday tasks and more creative work alike.</p><p>And, of course, there's the new M6 chip. It's a meaningful performance upgrade that keeps everything running smoothly, whether you're juggling everyday apps, working across multiple browser tabs, or getting stuck into more creative tasks. The addition of the Dual 16-core Neural Engine is another important part of the equation, helping accelerate AI-powered features, and giving this iMac more room to grow as Apple Intelligence continues to evolve. It's not just about getting a faster Mac today, but having a capable desktop that should feel ready for what's next, too.</p><p>Ultimately, it's excellent value for someone buying a new desktop Mac, whether it's their first iMac or an upgrade from an older machine. If you already have the M4 iMac, though, there's less reason to rush out and upgrade. This is a speed bump rather than a reinvention, but getting more performance for the same price is still a win.</p><p>If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup.</p><div class="product"><a data-dimension112="563a78ce-d933-11f1-9f58-0524b090e987" data-action="Deal Block" data-label="If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup." data-dimension48="If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:368px;"><p class="vanilla-image-block" style="padding-top:100.54%;"><img id="onaNjWDNBpvW4EEryymCWN" name="value4.5" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/onaNjWDNBpvW4EEryymCWN-1920-80.png" mos="" align="middle" fullscreen="" width="368" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="563a78ce-d933-11f1-9f58-0524b090e987" data-action="Deal Block" data-label="If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup." data-dimension48="If you currently have an older iMac or an aging Mac, and want a desktop that gives you everything you need out of the box — including a great display — there’s really no better value in Apple’s lineup." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-apple-imac-24-inch-m6-review-design"><span>Apple iMac 24-inch (M6) Review: Design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FKWJZFKaobu5KNR2KFw9wY" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/FKWJZFKaobu5KNR2KFw9wY-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Familiar, colorful all-in-one design</strong></li><li><strong>Immersive 24-inch 4.5K Retina display</strong></li><li><strong>You can still get it with nano-texture glass</strong></li></ul><p>Apple's iMac is still instantly recognizable as the latest generation of its iconic all-in-one. The new iMac with M6 looks just like the iMac with M4, M3, and M1 that came before it. It's still plenty colorful, and offers an expansive 24-inch 4.5K Retina display, all in a remarkably thin build that takes up minimal space wherever you decide to place it.</p><p>On the front, the 24-inch screen is surrounded by a white bezel, with the bottom featuring a chin in whichever color you've chosen. I'm testing the Purple model, just like last time, which is a light, likely Wonka-approved take on the shade. The rear and sides feature a darker, matte aluminum version of purple that really pops, while the giant Apple logo remains front and center on the back.</p><p>For connectivity, the left side has a headphone jack — yes, the iMac has a proper audio jack — while the rear houses the power connection, which magnetically snaps into place. It's convenient, though not a quick-release connection like MagSafe on the MacBook Air or MacBook Pro. Around back, you'll either get two Thunderbolt 4 USB-C ports or four, depending on the configuration. I'm testing the higher-end option with all four, and the power adapter also features a 2.5Gb Ethernet port.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fn46jEQQJq3VBokqZpvdWZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/fn46jEQQJq3VBokqZpvdWZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>Not much else is different here, especially since Apple introduced this design way back with the M1. If purple isn't your shade, there are six other color options: Orange, Blue, Yellow, Green, Silver, and Pink. You'll also get a color-matched keyboard and Magic Mouse or Magic Trackpad in the box, along with a matching USB-C to USB-C cable.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ETT4iH3doESoGJT7KVneXZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/ETT4iH3doESoGJT7KVneXZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>The display is really good, with a 4480 x 2520 resolution and up to 500 nits of brightness. Using it as my daily Mac, I've found it to be a great screen for just about everything. Colors pop, there's plenty of detail, and the resolution scales nicely whether I'm checking email, browsing the web, replying to messages, putting together presentations in Keynote, scrolling through Photos, or hopping on a FaceTime call. </p><p>It's equally enjoyable for watching content, whether that's a full-screen YouTube video or something playing in a window while I work. And for more creative tasks, there's plenty of detail and color to work with when editing photos or videos.</p><div class="product"><a data-dimension112="e81277c4-d933-11f1-ac12-a3606f28fbd2" data-action="Deal Block" data-label="I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish." data-dimension48="I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="fetJ7HfWYBKLNPcshUh6SQ" name="design 4.5 stars" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fetJ7HfWYBKLNPcshUh6SQ-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e81277c4-d933-11f1-ac12-a3606f28fbd2" data-action="Deal Block" data-label="I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish." data-dimension48="I do miss the optional nano-texture glass on my review unit, particularly when dealing with natural light or other reflections. But if you're placing the iMac in a space without a ton of direct sunlight or reflective surfaces, I think you're largely all right with the standard glossy finish." data-dimension25="">View Deal</a></p></div>                <div class="nominee__article" data-id="">            <span class="award__category"></span>            <a href=""><p><img src='/media/img/missing-image.svg' /></p></a>            <h2></h2>                        <div class="subtitle__description"><p></p></div>        </div>        <h3 class="article-body__section" id="section-apple-imac-24-inch-m6-review-specs"><span>Apple iMac 24-inch (M6) Review: Specs</span></h3><div ><table><caption>Apple iMac 24-inch (M6): Specs</caption><tbody><tr><td class="firstcol " ><p>Price</p></td><td  ><p>$1,299 / £1,299 / AU$1,99</p></td><td  ><p>$1,499 / £1,499 / AU$2,399</p></td></tr><tr><td class="firstcol " ><p>CPU</p></td><td  ><p>Apple M6 (10-core CPU, 10-core GPU, and 16-core Neural Engine)</p></td><td  ><p>Apple M6 (12-core CPU, 12-core GPU, and Dual 16-core Neural Engine)</p></td></tr><tr><td class="firstcol " ><p>Graphics</p></td><td  ><p>Integrated 10-core GPU</p></td><td  ><p>Integrated 12-core GPU</p></td></tr><tr><td class="firstcol " ><p>RAM</p></td><td  ><p>16GB (starting, but configurable up to 24GB)</p></td><td  ><p>16GB (starting, but configurable up to 32GB)</p></td></tr><tr><td class="firstcol " ><p>Screen</p></td><td  ><p>24-inch 4.5K Retina display with 4480 x 2520 resolution at 218 ppi and 500 nits brightness</p></td><td  ><p>24-inch 4.5K Retina display with 4480 x 2520 resolution at 218 ppi and 500 nits brightness. Optional nano-texture glass.</p></td></tr><tr><td class="firstcol " ><p>Storage</p></td><td  ><p>256GB (starting, but configurable up to 1TB)</p></td><td  ><p>256GB (starting, but configurable up to 2TB)</p></td></tr><tr><td class="firstcol " ><p>Ports</p></td><td  ><p>Two Thunderbolt 4/USB-C ports, headphone jack</p></td><td  ><p>Four Thunderbolt 4/USB-C ports, headphone jack</p></td></tr><tr><td class="firstcol " ><p>Wireless</p></td><td  ><p>Wi-Fi 7 (802.11be), Bluetooth 6, and Thread connectivity</p></td><td  ><p>Wi-Fi 7 (802.11be), Bluetooth 6, and Thread connectivity</p></td></tr><tr><td class="firstcol " ><p>Camera</p></td><td  ><p>12-megapixel FaceTime camera with Center Stage and Desk View functionality</p></td><td  ><p>12-megapixel FaceTime camera with Center Stage and Desk View functionality</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>4.42 kg/9.74 lbs</p></td><td  ><p>4.44 kg/9.79 lbs</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>54.7 x 46.1 x 14.7cm / 21.5 x 18.1 x 5.8 inches</p></td><td  ><p>54.7 x 46.1 x 14.7cm / 21.5 x 18.1 x 5.8 inches</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-apple-imac-24-inch-m6-review-performance"><span>Apple iMac 24-inch (M6) Review: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vNzVEnwUq6VDMPpeuvmKSZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/vNzVEnwUq6VDMPpeuvmKSZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Apple's M6 chip brings a welcome performance boost over M4, M3, or M1</strong></li><li><strong>Everyday multitasking feels effortless, even with 16GB of RAM</strong></li><li><strong>Improved Neural Engine makes AI and creative tasks feel snappy</strong></li></ul><p>As I hinted at above, the main change with Apple's iMac for 2026 is the processor. Apple's all-in-one computer is jumping from M4 to M6, and there are still two main configurations to choose from. For most folks, the entry-level iMac should be more than enough. Priced at $1,499 / £1,499 / AU$3,499, you get an M6 chip with a 10-core CPU, 10-core GPU, and Dual 16-core Neural Engine, alongside 16GB of RAM and 256GB of storage.</p><p>For $1,699 / £1,699 / AU$3,699, you can step up to an M6 with a 12-core CPU and 12-core GPU, along with the same Dual 16-core Neural Engine, 16GB of RAM, and 512GB of storage. That extra horsepower should come in handy for more creative tasks and on-device AI functionality. </p><p>It's also worth noting that neither configuration comes with a price increase over the previous generation. Both feature improvements to Wi-Fi and Bluetooth, now sitting at Wi-Fi 7 and Bluetooth 6, along with Thread connectivity to help with the smart home.</p><p>I've been testing the step-up model with the fully specced M6 chip, 16GB of RAM, and 512GB of storage. Out of the box, setup was a breeze, and the iMac is running macOS 27.2. Here's a pro tip: as part of the onboarding process, you can choose to set up your new Mac using an iPhone or iPad, which speeds things up a bit.</p><p>From there, you're presented with a welcome screen; hit Enter, and you're ready to start using your iMac however you'd like. And, as has been the case with most Macs since Apple made the jump to its own chips — Apple Silicon — everyday performance isn't really an issue. In my daily use, I've had no trouble running Safari and Google Chrome, both with more than a dozen tabs open, alongside Messages, Mail, Photos, Pixelmator Pro, and Slack, all without skipping a beat. Thanks to the M6 chip, multitasking is effortless, and everything feels zippy and responsive. That's particularly impressive given that this configuration has just 16GB of RAM.</p><p>One key advantage of the M6 is its Dual 16-core Neural Engine, compared with the single Neural Engine in earlier iMac models. This helps power Siri AI and other Apple Intelligence features, and I've found some of the multimodal capabilities particularly snappy. For instance, I can ask Siri to create a calendar event based on an invitation displayed on my screen in Mail or Gmail, and even have it invite other people. You can type your request into Spotlight or use the built-in microphones to get started.</p><p>Similarly, as part of the latest updates to Apple Creator Studio, Generative Fill within Pixelmator Pro works quite snappily here. It's also easy enough to ask it to try again if the result isn't quite right. You can also use Siri AI within Numbers, Pages, and Keynote for a little extra assistance. I've found myself making good use of the big screen, too, starting with a photo edit in the Photos app using tools like Expand or Clean Up before sending it into Pixelmator Pro to refine things further. The Super Resolution functionality is particularly handy for boosting overall image quality.</p><p>Previously, my iMac with M4, which was specced with a beefier 32GB of RAM, scored 3,646 in single-core and 14,724 in multi-core testing with Geekbench 6.3. The iMac with M6 surpassed those results, scoring 4,553 in single-core and 20,038 in multi-core with Geekbench 6. That's roughly a 25% improvement in single-core performance and a 36% jump in multi-core performance over the M4.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TvoewBv2QwWFePToyTsFRZ" name="Apple iMac M6 review" alt="Apple iMac M6 review" src="https://cdn.mos.cms.futurecdn.net/TvoewBv2QwWFePToyTsFRZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>We also ran Geekbench 7, where the M6 iMac scored 3,931 in single-core and 21,374 in multi-core testing. While those results aren't directly comparable to my previous Geekbench 6.3 scores, they further demonstrate the kind of performance this machine can deliver.</p><p>It's an impressive leap over two generations of Apple Silicon, and one that matches my real-world experience over the past few days. The iMac with M6 feels zippy, responsive, and ready for a challenge, even with just 16GB of RAM inside.</p><p>The iMac remains the centerpiece of Apple's all-in-one desktop lineup. Unlike the Mac mini or Mac Studio, you're getting a complete system that's ready to go right out of the box. That means a screen, speakers, ports, keyboard, and mouse are all included, making it an excellent choice for someone buying their first desktop Mac, upgrading from an older model or even a PC, or a business looking for a straightforward, all-in-one solution.</p><p>The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome.</p><div class="product"><a data-dimension112="25273640-d934-11f1-a1ac-155c53256958" data-action="Deal Block" data-label="The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome." data-dimension48="The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="iPsSRLxVnLSd9PewPGhBkR" name="performance5" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/iPsSRLxVnLSd9PewPGhBkR-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="25273640-d934-11f1-a1ac-155c53256958" data-action="Deal Block" data-label="The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome." data-dimension48="The iMac has always served a lot of different use cases, and Apple's latest iteration doesn't change or revolutionize that. But a speed-bump upgrade can still be a worthwhile one, especially when it brings more performance without increasing the price. You're getting more computer for the same money, and that's always welcome." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-should-i-buy-the-apple-imac-with-m6"><span>Should I buy the Apple iMac with M6?</span></h2><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy the Apple iMac with M6 if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You want an excellent all-in-one computer</strong></p></div><div class="card__description"><p>No price increase, improved performance, a sleek and colorful design, and a great display make the iMac with M6 an easy recommendation. It's an excellent all-in-one package that has plenty to offer without costing more than the previous generation.<br /><strong>✅ You're already in the Apple ecosystem</strong></p></div><div class="card__description"><p>It goes without saying, but the iMac plays really well with iPhone, iPad, Apple Watch, and iCloud. You'll feel right at home with familiar apps, a shared clipboard between devices, the ability to mirror your iPhone on the iMac, and even the convenience of having calls ring on your desktop.<br /><strong>✅ You want a colorful, good-looking desktop</strong></p></div><div class="card__description"><p>I said it with the M4, but I really love the look of the iMac. You get your pick of colors, and the result is a sleek desktop that weighs less than 10 pounds and doesn't look like a hunk of junk. It can fit just about anywhere.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don&#39;t buy the Apple iMac with M6 if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You need a bigger screen</strong></p></div><div class="card__description"><p>Unlike a Mac mini, Mac Studio, or even a MacBook you plug into a display, the iMac with M6 only comes in one size: 24 inches. So if you need something larger or want flexibility, you'll want to look elsewhere<br /><strong>❌ You need the most powerful Mac</strong></p></div><div class="card__description"><p>Apple already makes the M5 Max and M5 Ultra, both in desktop and laptop form, so if you need more power for more intensive tasks — be it creative work or running AI models — you'll want to look at those</p></div></div></div></div><h2 class="article-body__section" id="section-how-i-tested-the-apple-imac-with-m6"><span>How I tested the Apple iMac with M6</span></h2><p>I've spent the past five days putting the Apple iMac with M6 through its paces. After unboxing it, I set it up in two different spaces — my kitchen island and my desk — to get a sense of how it fits into different environments. I downloaded a range of apps for work and play, including Google Chrome, Pixelmator Pro, Final Cut Pro, Slack, and Geekbench.</p><p>I used it as my daily work machine, juggling browser tabs, messages, and creative projects, while also running benchmarks and more demanding tasks. Outside of work, I played games, took calls, watched movies, and listened to music to get a feel for its overall performance and entertainment experience.</p><p><em>First reviewed November 2026.</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've tested Apple's new touchscreen MacBook, and it's worth buying — but not for the reasons you’re expecting ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-at-a-glance-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max"><span>At a glance: Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</span></h2><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/dtctBNapCHjhmnEvQw5r9R.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What is it?</h3><div class="card__description-wrapper"><div class="card__description"><p>The MacBook Pro with PROLED XDR Display is Apple’s latest and greatest workstation laptop aimed at professionals. It doesn’t come with the newest M6 chip architecture, and instead sticks with the previous, yet very powerful, M5 Pro and M5 Max generation. The big change this time around, however, is the PROLED XDR Display. Apple has dropped mini LED technology for tandem OLED, and the screen is gorgeously vibrant — and it’s the first time Apple has included a touchscreen on a MacBook.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/pCUGu3BfJz4w4y5E8NHmAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What does it cost?</h3><div class="card__description-wrapper"><div class="card__description"><p>The Apple MacBook Pro with PROLED XDR Display comes in two sizes: 14-inch and 16-inch. The 14-inch model starts at $2,899 / £2,899 / AU$4,599 and the 16-inch model starts at $3,399 / £3,399 / AU$5,499. These versions come with 24GB of unified memory and 1TB storage, and are powered by the M5 Pro chip (the 16-inch model’s M5 Pro chip features a more powerful 20-core GPU, compared to the 14-inches’ 18-core GPU). You can configure both models with the more powerful M5 Max chip up to 128GB memory and 16TB of storage, but things get very expensive, very fast.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/XnvYcAPALpRtRXfSaLLEAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">Alternatives</h3><div class="card__description-wrapper"><div class="card__description"><p>The launch of the Apple MacBook Pro with PROLED XDR Display comes at a time when there’s a lot of competition in the prosumer laptop market, thanks to the launch of a range of laptops powered by Nvidia’s RTX Spark chip. These laptops, such as the <a href="https://www.techradar.com/computing/windows-laptops/asus-proart-p16-rtx-spark">Asus ProArt P16 RTX Spark</a> and Microsoft Surface Laptop Ultra, have powerful chips, unified memory and touchscreens (many of them are OLED as well), which pits them squarely against the new MacBook Pro. </p></div></div></div></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793875110430-r15jxat7d *, #fv-chart-1793875110430-r15jxat7d *:before, #fv-chart-1793875110430-r15jxat7d *:after, #fv-chart-1793875110430-r15jxat7d-slideshow *, #fv-chart-1793875110430-r15jxat7d-slideshow *:before, #fv-chart-1793875110430-r15jxat7d-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793875110430-r15jxat7d, #fv-chart-1793875110430-r15jxat7d-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793875110430-r15jxat7d { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793875110430-r15jxat7d.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793875110430-r15jxat7d.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-1793875110430-r15jxat7d .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793875110430-r15jxat7d-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793875110430-r15jxat7d-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793875110430-r15jxat7d-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-1793875110430-r15jxat7d-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-1793875110430-r15jxat7d-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793875110430-r15jxat7d-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793875110430-r15jxat7d-slideshow .fv-nav-btn.disabled, #fv-chart-1793875110430-r15jxat7d-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-1793875110430-r15jxat7d-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793875110430-r15jxat7d-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-1793875110430-r15jxat7d-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793875110430-r15jxat7d .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793875110430-r15jxat7d .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793875110430-r15jxat7d .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793875110430-r15jxat7d .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793875110430-r15jxat7d .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793875110430-r15jxat7d .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793875110430-r15jxat7d .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793875110430-r15jxat7d .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793875110430-r15jxat7d .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793875110430-r15jxat7d .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793875110430-r15jxat7d .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-row, #fv-chart-1793875110430-r15jxat7d .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793875110430-r15jxat7d .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793875110430-r15jxat7d .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793875110430-r15jxat7d .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793875110430-r15jxat7d .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793875110430-r15jxat7d .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793875110430-r15jxat7d .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-pie-container, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-stacked-product, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-grouped-bar-product, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-stacked-product, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793875110430-r15jxat7d.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-1793875110430-r15jxat7d.mobile-view .fv-bar-label, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-grouped-product-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-label, #fv-chart-1793875110430-r15jxat7d.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-1793875110430-r15jxat7d.mobile-view .fv-bar-container, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-cluster, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-container, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-x-axis-wrapper, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-x-axis-label-space, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-x-axis-chart-space, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-benchmark-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-dropdown-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-carousel-nav-btn, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-chart-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-chart-subhead, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-header, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select-wrapper, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-vs, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select-container, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793875110430-r15jxat7d.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-1793875110430-r15jxat7d.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-dials-grid, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-dial-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793875110430-r15jxat7d .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-row, #fv-chart-1793875110430-r15jxat7d .fv-stacked-product, #fv-chart-1793875110430-r15jxat7d .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-label, #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-container, #fv-chart-1793875110430-r15jxat7d .fv-bar-cluster { width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-label-space { display: none !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793875110430-r15jxat7d .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793875110430-r15jxat7d .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-stl-shop-all-logo, #fv-chart-1793875110430-r15jxat7d .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793875110430-r15jxat7d.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Apple MacBook Pro with PROLED XDR Display scorecard",  "description": "How the Apple MacBook Pro with PROLED XDR Display scored in our review",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T10:38:30.431Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)",    "Value",    "Design",    "Performance",    "Battery life",    "Overall",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Value",      "value": 3,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Design",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Performance",      "value": 5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Battery life",      "value": 5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Overall",      "value": 4.5,      "unitText": "",      "maxValue": 5    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T10:38:30.431Z","state":{"data":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Value","value":3,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Design","value":4.5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Performance","value":5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Battery life","value":5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Overall","value":4.5,"unit":"","maxValue":5}],"products":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"attributes":["Value","Design","Performance","Battery life","Overall"],"selectedProducts":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"selectedPrimaryProduct":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","selectedAttributes":["Value","Design","Performance","Battery life","Overall"],"productColors":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#2E6E93"}],"initialProductColors":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#E8238C"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Value","Design","Performance","Battery life","Overall"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Apple MacBook Pro with PROLED XDR Display scorecard","subhead":"How the Apple MacBook Pro with PROLED XDR Display scored in our review","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793875110430-r15jxat7d" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Apple MacBook Pro with PROLED XDR Display scorecard</h3><p class="fv-chart-subhead">How the Apple MacBook Pro with PROLED XDR Display scored in our review</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793875110430-r15jxat7d-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="How the Apple MacBook Pro with PROLED XDR Display scored in our review" data-caption="" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 60%; background-color: #2E6E93;" data-target-width="60" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Design</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #2E6E93;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 100%; background-color: #2E6E93;" data-target-width="100" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Battery life</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 100%; background-color: #2E6E93;" data-target-width="100" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Overall</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #2E6E93;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div></div></div><table class="sr-only"><caption>Group 1 Data</caption><thead><tr><th>Product</th><th>Value ()</th><th>Design ()</th><th>Performance ()</th><th>Battery life ()</th><th>Overall ()</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>3</td><td>4.5</td><td>5</td><td>5</td><td>4.5</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793875110430-r15jxat7d', false); });      } else {        initialize('fv-chart-1793875110430-r15jxat7d', false);      }    })();      </script></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max-value-for-money"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max): Value for money</span></h2><p>Starting at $2,899 / £2,899 / AU$4,599 for the 14-inch version, and $3,399 / £3,399 / AU$5,499 for the 16-inch model, and going all the way up to an astonishing $14,549 / £14,549 / AU$22,424 for the fully specced-out model, the question of value isn’t so much about price, but about what this laptop can enable you to do.</p><p>Put simply, if you just want a MacBook that will excel at day-to-day tasks you’d be much better off buying a <a href="https://www.techradar.com/computing/macbooks/apple-macbook-air-13-inch-m5-review">MacBook Air (M5)</a>, and even for more ambitious workloads, <a href="https://www.techradar.com/computing/macbooks/apple-reveals-imac-m6-and-macbook-pro-m6-and-the-good-news-is-there-are-no-price-hikes">the recently-announced MacBook Pro (M6)</a>, which starts at $1,999 / £1,999 / AU$3,199, will likely more than suffice. Neither of those, of course, feature a touchscreen, but I wouldn’t suggest buying any model of the Apple MacBook Pro with PROLED XDR Display for the touchscreen alone. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="X2jVsFCnQtmch4HLfMYeHK" name="20261105_120206" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" src="https://cdn.mos.cms.futurecdn.net/X2jVsFCnQtmch4HLfMYeHK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Thankfully, this version of the MacBook Pro has other features that help to justify the higher price tag, including tandem OLED screen technology, a lighter design, and more powerful components. Despite being older than the M6 chip, both the M5 Pro and M5 Max outperform it, so if you need a seriously powerful laptop, and image quality is of the utmost importance, the Apple MacBook Pro with PROLED XDR Display could be a worthy investment, especially if its raw performance means you can complete projects faster, allowing you to take on more work, for example.</p><p>If you don’t need that kind of horsepower, then there are much more affordable options you should consider, tempting as the touchscreen functionality or OLED display might be.</p><p>Compared to rival RTX Spark laptops, the Apple MacBook Pro with PROLED XDR Display is much more competitive. The Asus ProArt P16 RTX Spark starts at $4,399.99 / £3,899.99 / AU$7,999, though it comes with a lot more memory, packing 64GB.</p><div class="product"><a data-dimension112="e09b398a-d902-11f1-acf1-b59c3499efdd" data-action="Deal Block" data-label="Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford." data-dimension48="Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="g8utBzWFoUc9TvJbzCghzX" name="value3" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/g8utBzWFoUc9TvJbzCghzX-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford. <a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e09b398a-d902-11f1-acf1-b59c3499efdd" data-action="Deal Block" data-label="Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford." data-dimension48="Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max-design"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max): Design</span></h2><ul><li><strong>PROLED XDR screen is a clear highlight</strong></li><li><strong>Slightly lighter than previous models</strong></li><li><strong>iPhone-like Dynamic Island replaces the controversial ‘notch’ around the webcam</strong></li></ul><p>Given that the MacBook Pro design hasn’t changed in years, the Apple MacBook Pro with PROLED XDR Display in both size variants comes with some major tweaks in this department. This isn’t, though, the kind of overhaul we saw when Apple introduced the 16-inch and 14-inch MacBook Pros that replaced the 15-inch and 13-inch models, respectively, around five years ago; instead, this is a more subtle refinement of the design, and pretty much all of the tweaks are a result of the new display, so let’s start there.</p><p>Apple calls the new PROLED XDR screen "the best display on a laptop" and, to be fair, it has a good reason to be boastful. Previous screens on the MacBook Pro were already pretty darn good, and now Apple has swapped the mini-LED tech for tandem OLED.  This essentially uses two layers of organic light-emitting diodes (OLED) on top of each other, rather than just a single layer, so peak brightness can go even higher, while the display can remain power-efficient. The PROLED XDR screen can achieve 2,000 nits of peak brightness, whereas the mini-LED screen of previous MacBook Pros had a peak brightness of 1,600. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793881114655-ic9u30w8f *, #fv-chart-1793881114655-ic9u30w8f *:before, #fv-chart-1793881114655-ic9u30w8f *:after, #fv-chart-1793881114655-ic9u30w8f-slideshow *, #fv-chart-1793881114655-ic9u30w8f-slideshow *:before, #fv-chart-1793881114655-ic9u30w8f-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793881114655-ic9u30w8f, #fv-chart-1793881114655-ic9u30w8f-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793881114655-ic9u30w8f { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793881114655-ic9u30w8f.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-1793881114655-ic9u30w8f .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793881114655-ic9u30w8f-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793881114655-ic9u30w8f-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793881114655-ic9u30w8f-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-1793881114655-ic9u30w8f-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-1793881114655-ic9u30w8f-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793881114655-ic9u30w8f-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793881114655-ic9u30w8f-slideshow .fv-nav-btn.disabled, #fv-chart-1793881114655-ic9u30w8f-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-1793881114655-ic9u30w8f-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793881114655-ic9u30w8f-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-1793881114655-ic9u30w8f-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793881114655-ic9u30w8f .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-row, #fv-chart-1793881114655-ic9u30w8f .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793881114655-ic9u30w8f .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793881114655-ic9u30w8f .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793881114655-ic9u30w8f .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793881114655-ic9u30w8f .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; overflow: hidden !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; } #fv-chart-1793881114655-ic9u30w8f.fv-full-bleed .fv-ia-container { width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.fv-full-bleed .fv-ia-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-image { display: block !important; width: 100% !important; height: auto !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-node-container { position: absolute !important; z-index: 10 !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-ia-node-button:hover { transform: scale(1.1) !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-ia-node-button:hover + .fv-ia-static-tooltip { display: block !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-logo-explore-bar .fv-logo { margin: 0 auto !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-explore-wrapper { position: absolute !important; right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-logo-explore-bar { flex-direction: column !important; min-height: auto !important; gap: 0.75rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-ia-explore-wrapper { position: static !important; align-self: flex-end !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-ia-explore-btn svg { transition: transform 0.2s !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-explore-btn:hover svg { transform: translateX(2px) !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-active-modal-container { display: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-modals { display: block !important; position: static !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-modal-item { display: none !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-ia-close-button:hover { background: #e5e7eb !important; color: #111827 !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f.mobile-view .fv-ia-node-description { font-size: 0.875rem !important; } #fv-chart-1793881114655-ic9u30w8f .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; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-pie-container, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-stacked-product, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-grouped-bar-product, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-stacked-product, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793881114655-ic9u30w8f.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-1793881114655-ic9u30w8f.mobile-view .fv-bar-label, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-grouped-product-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-label, #fv-chart-1793881114655-ic9u30w8f.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-1793881114655-ic9u30w8f.mobile-view .fv-bar-container, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-cluster, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-container, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-x-axis-wrapper, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-x-axis-label-space, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-x-axis-chart-space, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-benchmark-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-dropdown-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-carousel-nav-btn, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-chart-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-chart-subhead, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-header, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select-wrapper, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-vs, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select-container, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793881114655-ic9u30w8f.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-1793881114655-ic9u30w8f.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-dials-grid, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-dial-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793881114655-ic9u30w8f .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-row, #fv-chart-1793881114655-ic9u30w8f .fv-stacked-product, #fv-chart-1793881114655-ic9u30w8f .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-label, #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-container, #fv-chart-1793881114655-ic9u30w8f .fv-bar-cluster { width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-label-space { display: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-stl-shop-all-logo, #fv-chart-1793881114655-ic9u30w8f .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793881114655-ic9u30w8f.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@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-11-05T12:18:34.655Z",  "citation": "Side view of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)",  "keywords": [    "Image Annotation",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T12:18:34.655Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Annotation","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Overall Chart Title","subhead":"Subhead to describe the test and what's being measured and why","caption":"Side view of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageAnnotationData":{"imageUrl":"https://cdn.mos.cms.futurecdn.net/HeYFnhDFng5XkmJDCNPaHK.jpg","nodes":[{"id":"node-1793880975394","x":54.37,"y":63.32,"title":"SDXC Card Slot","description":"Memory card slot for importing photos and videos straight from your camera"},{"id":"node-1793881029411","x":61.98,"y":53.98,"title":"HDMI & USB-C port","description":"On the right-hand side there's a full size HDMI port and one of three USB-C Thunderbolt 5 ports"},{"id":"node-1793881068370","x":51.89,"y":51.41,"title":"Touch ID button","description":"This button powers on the MacBook Pro, and can scan your fingerprint to log in"}],"fullBleed":false}},"slides":[]}</script><div id="fv-chart-1793881114655-ic9u30w8f" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   fv-is-image-annotation"><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793881114655-ic9u30w8f-image-annotation-1" data-chart-type="Image Annotation" data-title="Image Annotation" data-subhead="" data-caption="Side view of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)" style=""><div class="fv-benchmark-group"><div class="fv-ia-container"><div class="fv-ia-wrapper"><img src="https://cdn.mos.cms.futurecdn.net/HeYFnhDFng5XkmJDCNPaHK.jpg" alt="Annotated image" class="fv-ia-image" loading="lazy" referrerpolicy="no-referrer" /><div class="fv-ia-node-container" style="left: 54.37%; top: 63.32%;"><button class="fv-ia-node-button" data-node-id="node-1793880975394" data-title="SDXC Card Slot" data-desc="Memory card slot for importing photos and videos straight from your camera">1<div class="fv-ia-pulse-ring" style="background-color: #2E6E93"></div></button></div><div class="fv-ia-node-container" style="left: 61.98%; top: 53.98%;"><button class="fv-ia-node-button" data-node-id="node-1793881029411" data-title="HDMI &amp; USB-C port" data-desc="On the right-hand side there's a full size HDMI port and one of three USB-C Thunderbolt 5 ports">2<div class="fv-ia-pulse-ring" style="background-color: #2E6E93"></div></button></div><div class="fv-ia-node-container" style="left: 51.89%; top: 51.41%;"><button class="fv-ia-node-button" data-node-id="node-1793881068370" data-title="Touch ID button" data-desc="This button powers on the MacBook Pro, and can scan your fingerprint to log in">3<div class="fv-ia-pulse-ring" style="background-color: #2E6E93"></div></button></div></div><div class="fv-ia-modals" style="display: none;"><div class="fv-ia-modal-item" data-node-id="node-1793880975394"><div class="fv-ia-modal-header"><h4 class="fv-ia-node-title">SDXC Card Slot</h4><button class="fv-ia-close-button" aria-label="Close"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button></div><p class="fv-ia-node-description">Memory card slot for importing photos and videos straight from your camera</p></div><div class="fv-ia-modal-item" data-node-id="node-1793881029411"><div class="fv-ia-modal-header"><h4 class="fv-ia-node-title">HDMI &amp; USB-C port</h4><button class="fv-ia-close-button" aria-label="Close"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button></div><p class="fv-ia-node-description">On the right-hand side there's a full size HDMI port and one of three USB-C Thunderbolt 5 ports</p></div><div class="fv-ia-modal-item" data-node-id="node-1793881068370"><div class="fv-ia-modal-header"><h4 class="fv-ia-node-title">Touch ID button</h4><button class="fv-ia-close-button" aria-label="Close"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button></div><p class="fv-ia-node-description">This button powers on the MacBook Pro, and can scan your fingerprint to log in</p></div></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">Side view of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /><div class="fv-ia-explore-wrapper"><button class="fv-ia-explore-btn" aria-label="Explore annotations"><span>Explore</span><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></div></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793881114655-ic9u30w8f', false); });      } else {        initialize('fv-chart-1793881114655-ic9u30w8f', false);      }    })();      </script></div><p>Combine that with the usual benefits we’ve come to expect from OLED displays, namely the higher contrast ratios and lack of halo effects (where there’s noticeable bloom surrounding light colors that bleeds into pixels that should be showing darker, or completely black, colors) that come thanks to each OLED pixel being independently controlled (including being able to be turned off completely), rather than relying on an LED backlight, which offers less precise control over the pixels in the display. </p><p>The contrast ratio of the PROLED XDR screen is an incredible 10,000,000:1, a pretty huge bump over the 1,000,000:1 contrast ratio of the previous model with a Liquid Retina XDR display. Contrast ratio is a way of comparing the brightest white to the darkest black of a display, and the greater the difference, the more vibrant the image quality, so you can forget about washed-out colors and blacks that look more gray, and enjoy rich, deep colors that really pop compared to darker tones, and even the total blackness that OLED technology enables.</p><p>While MacBook displays have supported the P3 color gamut, which is particularly important for people working with video who require accurate colors, the PROLED XDR screen also supports the Adobe RGB gamut, which offers wider coverage for green and cyan colors, and is popular with photographers and designers.</p><p>The addition of touch functionality has also had implications for the design. The hinges of the MacBook Pro with PROLED XDR Display have been tweaked to reduce movement and flex when you touch the screen. I’d have loved it if Apple had taken this opportunity to increase the amount by which the screen can be pushed back, ideally introducing hinges to allow the touchscreen to lie flat on a desk, or even flip behind the keyboard to turn the laptop into an iPad-like device. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/89azXwnFdttH46BqmTqdJK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YeUJjcgKWYcmwR8CwDB8JK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HXHeYQSaSgsJQ6bQjNeuHK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GozakNuSpuaXzR77ySanHK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/X2jVsFCnQtmch4HLfMYeHK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>This would have made the redesign of the MacBook Pro with PROLED XDR Display even more ambitious, and would have likely meant much more work for Apple to ensure the macOS operating system works with a 2-in-1 laptop form factor, but it would have made the whole idea of a touchscreen much more viable. Instead, we’re still stuck with a traditional clamshell laptop design, so touchscreen gestures require you hovering your arm over the keyboard as you jab horizontally at the screen — it's not the most natural-feeling way to interact with a device, and this was one of Steve Jobs’ biggest criticisms of touchscreen laptops when, as CEO, he dismissed the idea of Apple making one all those years ago.</p><p>The PROLED XDR screen also allows for thinner bezels around it, and the once-controversial notch that surrounded the webcam has been replaced by Apple's Dynamic Island, as seen on the iPhone, which gives you quick touch access to controls such as media playback, AirDrop sharing and accessing Spotlight. It’s one of the best examples of Apple tweaking macOS to better make use of the touchscreen, and I can confidently predict that the Dynamic Island will be less hated than the notch, which was just dead space that intruded on the desktop.</p><p>The more compact Dynamic Island and thinner bezels mean the screen of this 16-inch Pro is slightly larger than on previous models at 16.3 inches vs 16.2 inches, with a higher resolution of 3472 x 2266 pixels vs 3456 x 2234 pixels.</p><p>The OLED screen technology (and new thermal system that’s used to keep the laptop’s components cool) has also helped Apple reduce the weight of the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) by half a pound — that's 15% lighter — and make it around 1mm thinner.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="nXWMTHzV8rgcLKqKvB6LHK" name="20261105_115909" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" src="https://cdn.mos.cms.futurecdn.net/nXWMTHzV8rgcLKqKvB6LHK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The MacBook Pro was always a great showcase that proved powerful workstation laptops don’t need to be big and bulky, so it's impressive that Apple has been able to make this new model both lighter and thinner. </p><p>The final design change is a relatively minor one, but one that will likely prove to be very popular. Apple has <a href="https://www.techradar.com/computing/macbooks/heres-the-secret-behind-the-return-of-the-illuminated-apple-logo-on-the-back-of-the-new-touchscreen-macbook-pro">returned to having an illuminated Apple logo on the back of the lid</a> — it's a nod to the past, while also helping the latest MacBook Pro stand out more compared to the previous models. </p><div class="product"><a data-dimension112="e09b3e62-d902-11f1-a64a-a998b656a65b" data-action="Deal Block" data-label="Apart from those changes, the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)’s design is essentially the same as the previous few generations of MacBook — but that’s no bad thing, as it remains a great-looking laptop with plenty of ports (three USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio and the MagSafe 3 port) for pros." data-dimension48="Apart from those changes, the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)’s design is essentially the same as the previous few generations of MacBook — but that’s no bad thing, as it remains a great-looking laptop with plenty of ports (three USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio and the MagSafe 3 port) for pros." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="fetJ7HfWYBKLNPcshUh6SQ" name="design 4.5 stars" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fetJ7HfWYBKLNPcshUh6SQ-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>Apart from those changes, the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)’s design is essentially the same as the previous few generations of MacBook — but that’s no bad thing, as it remains a great-looking laptop with plenty of ports (three USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio and the MagSafe 3 port) for pros.</p></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-specs"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026): Specs</span></h2><div ><table><thead><tr><th class="firstcol " ><p> </p><p>  </p></th><th  ><p>Apple MacBook Pro with PROLED XDR Display 16-inch base configuration</p><p>  </p></th><th  ><p>Apple MacBook Pro with PROLED XDR Display 16-inch max configuration</p><p>  </p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Processor</p><p>  </p></td><td  ><p>Apple M5 Pro (18-core)</p><p>  </p></td><td  ><p>Apple M5 Max (18-core)</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Graphics</p><p>  </p></td><td  ><p>20-core GPU</p><p>  </p></td><td  ><p>32-core GPU</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Display</p><p>  </p></td><td  ><p>16.3‑inch (diagonal) tandem OLED PROLED XDR display (3472 x 2266), Touch, Wide color (P3 + Adobe RGB), True Tone, ProMotion up to 120Hz</p><p>  </p></td><td  ><p>16.3‑inch (diagonal) tandem OLED PROLED XDR display (3472 x 2266), Touch, Wide color (P3 + Adobe RGB), True Tone, ProMotion up to 120Hz</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Memory</p><p>  </p></td><td  ><p>24GB Unified Memory</p><p>  </p></td><td  ><p>36GB Unified Memory</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Storage</p><p>  </p></td><td  ><p>1TB SSD</p><p>  </p></td><td  ><p>2TB SSD</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Battery Life</p><p>  </p></td><td  ><p>Integrated 100‑watt‑hour lithium‑polymer battery, up to 17   hours web browsing, up to 24 hours video streaming</p><p>  </p></td><td  ><p>Integrated 100‑watt‑hour lithium‑polymer battery, up to 16 hours web   browsing, up to 22 hours video streaming</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Ports</p><p>  </p></td><td  ><p>3x USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio, MagSafe 3</p><p>  </p></td><td  ><p>3x USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio, MagSafe 3</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Audio &amp; Camera</p><p>  </p></td><td  ><p>High-fidelity six‑speaker sound system with force-cancelling woofers, 12MP Center Stage camera with support for Desk View</p><p>  </p></td><td  ><p>High-fidelity six‑speaker sound system with force-cancelling woofers, 12MP Center Stage camera with support for Desk View</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Wireless</p><p>  </p></td><td  ><p>Wi-Fi 7; Bluetooth 6.0</p><p>  </p></td><td  ><p>Wi-Fi 7; Bluetooth 6.0</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Dimensions &amp; Weight</p><p>  </p></td><td  ><p>0.63 x 14 x 9.62 inches (1.60 x 35.55 x 24.42cm), 4lbs (1.82kg)</p><p>  </p></td><td  ><p>0.63 x 14 x 9.62 inches (1.60 x 35.55 x 24.42cm), 4.1lbs (1.84kg)</p><p>  </p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max-performance"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max): Performance</span></h2><ul><li><strong>No M6 version with PROLED XDR Display</strong></li><li><strong>Touchscreen is responsive, but not an essential addition</strong></li><li><strong>Very fast SSD</strong></li></ul><p>I’m going to be honest: I think Apple has got itself into a little bit of a pickle with its M-series naming convention and release cadence. For a company that was often lauded for offering an elegant simplicity here, compared to the complexity of some competitors, it’s made a bit of a confusing mess.</p><p>Want the very latest M-series architecture, the <a href="https://www.techradar.com/computing/macs/apples-new-mac-mini-looks-the-same-but-the-m6-inside-brings-a-major-performance-boost">M6</a>, which is the company’s first-ever 2nm compute chip? Well, if so, you can forget about the PROLED XDR Display, as Apple is only offering it in the 14-inch MacBook Pro with Mini-LED screen. If you want the M6 and don’t care about a touchscreen or OLED, but prefer the larger 16-inch screen size, then you’re out of luck.</p><p>If you want the most powerful chips in a MacBook, then you’re left with the previous-generation <a href="https://www.techradar.com/pro/stop-should-you-upgrade-your-m1-max-apple-mac-to-the-m5-gpu-and-memory-bandwidth-data-reveal-the-surprising-answer">M5 Pro and Max </a>chips. But, getting an M5 Max-powered MacBook Pro doesn’t guarantee it’s the most powerful chip, as the default M5 Max chip that comes with the MacBook Pro with PROLED XDR Display 16-inch features an 18-core CPU and 32-core GPU, but you can upgrade (for $300 / £300 extra) to a more powerful M5 Max with a 40-core GPU. To be honest, unless you’re working with extremely graphically-intensive projects, the standard M5 Max chip will be more than enough, and even the M5 Pro will handle pretty much anything you throw at it. </p><p>As I mentioned, if you want the M6 generation and the improvements it brings, namely with a smaller 2nm process, which should lead to better power efficiency, and a dual 16-core Neural Engine for improved on-device AI performance, then you’ll need to forego both the PROLED XDR Display and 16-inch screen size.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793878332364-g9uny7ijt *, #fv-chart-1793878332364-g9uny7ijt *:before, #fv-chart-1793878332364-g9uny7ijt *:after, #fv-chart-1793878332364-g9uny7ijt-slideshow *, #fv-chart-1793878332364-g9uny7ijt-slideshow *:before, #fv-chart-1793878332364-g9uny7ijt-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793878332364-g9uny7ijt, #fv-chart-1793878332364-g9uny7ijt-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793878332364-g9uny7ijt { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793878332364-g9uny7ijt.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-1793878332364-g9uny7ijt .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793878332364-g9uny7ijt-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793878332364-g9uny7ijt-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793878332364-g9uny7ijt-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-1793878332364-g9uny7ijt-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-1793878332364-g9uny7ijt-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793878332364-g9uny7ijt-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793878332364-g9uny7ijt-slideshow .fv-nav-btn.disabled, #fv-chart-1793878332364-g9uny7ijt-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-1793878332364-g9uny7ijt-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793878332364-g9uny7ijt-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-1793878332364-g9uny7ijt-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793878332364-g9uny7ijt .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-row, #fv-chart-1793878332364-g9uny7ijt .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793878332364-g9uny7ijt .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793878332364-g9uny7ijt .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793878332364-g9uny7ijt .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793878332364-g9uny7ijt .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793878332364-g9uny7ijt .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-pie-container, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-stacked-product, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-grouped-bar-product, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-stacked-product, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793878332364-g9uny7ijt.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-1793878332364-g9uny7ijt.mobile-view .fv-bar-label, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-grouped-product-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-label, #fv-chart-1793878332364-g9uny7ijt.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-1793878332364-g9uny7ijt.mobile-view .fv-bar-container, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-cluster, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-container, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-x-axis-wrapper, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-x-axis-label-space, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-x-axis-chart-space, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-benchmark-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-dropdown-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-carousel-nav-btn, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-chart-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-chart-subhead, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-header, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select-wrapper, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-vs, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select-container, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793878332364-g9uny7ijt.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-1793878332364-g9uny7ijt.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-dials-grid, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-dial-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793878332364-g9uny7ijt .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-row, #fv-chart-1793878332364-g9uny7ijt .fv-stacked-product, #fv-chart-1793878332364-g9uny7ijt .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-label, #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-container, #fv-chart-1793878332364-g9uny7ijt .fv-bar-cluster { width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-label-space { display: none !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-stl-shop-all-logo, #fv-chart-1793878332364-g9uny7ijt .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793878332364-g9uny7ijt.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Benchmarks",  "description": "How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T11:32:12.364Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)",    "3DMark: Steel Nomad",    "Blackmagic Disk Speed Test: Write",    "Blackmagic Disk Speed Test: Read",    "Geekbench 6.7.2: Single-Core",    "Geekbench 6.7.2: Multi-Core",    "Geekbench 7.1.0: Single-Core",    "Geekbench 7.1.0: Multi-Core",    "Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score",    "Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score",    "Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score",    "PugetBench for Adobe CC (Photoshop)",    "PugetBench for Adobe CC (Premiere Pro)",    "3DMark: Steel Solar Bay",    "Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)",    "3DMark\u003cdiv>\u003cbr>\u003c/div>",    "Blackmagic Disk Speed",    "Geekbench",    "PugetBench",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – 3DMark: Steel Nomad",      "value": 4402,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – 3DMark: Steel Solar Bay",      "value": 78412,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Blackmagic Disk Speed Test: Write",      "value": 13335,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Blackmagic Disk Speed Test: Read",      "value": 12783,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench 6.7.2: Single-Core",      "value": 4359,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench 6.7.2: Multi-Core",      "value": 30327,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench 7.1.0: Single-Core",      "value": 3766,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench 7.1.0: Multi-Core",      "value": 35679,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score",      "value": 6200,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score",      "value": 47515,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score",      "value": 64473,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – PugetBench for Adobe CC (Photoshop)",      "value": 18431,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – PugetBench for Adobe CC (Premiere Pro)",      "value": 155248,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)",      "value": 109,      "unitText": "fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T11:32:12.364Z","state":{"data":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Blackmagic Disk Speed Test: Write","value":13335,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Blackmagic Disk Speed Test: Read","value":12783,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench 6.7.2: Single-Core","value":4359,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench 6.7.2: Multi-Core","value":30327,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench 7.1.0: Single-Core","value":3766,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench 7.1.0: Multi-Core","value":35679,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score","value":6200,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score","value":47515,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score","value":64473,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"PugetBench for Adobe CC (Photoshop)","value":18431,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"PugetBench for Adobe CC (Premiere Pro)","value":155248,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"3DMark: Steel Nomad","value":4402,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"3DMark: Steel Solar Bay","value":78412,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)","value":109,"unit":"fps","testDate":"","color":"","site":"TechRadar"}],"products":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"attributes":["3DMark: Steel Nomad","Blackmagic Disk Speed Test: Write","Blackmagic Disk Speed Test: Read","Geekbench 6.7.2: Single-Core","Geekbench 6.7.2: Multi-Core","Geekbench 7.1.0: Single-Core","Geekbench 7.1.0: Multi-Core","Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score","PugetBench for Adobe CC (Photoshop)","PugetBench for Adobe CC (Premiere Pro)","3DMark: Steel Solar Bay","Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)"],"selectedProducts":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"selectedPrimaryProduct":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","selectedAttributes":["3DMark: Steel Nomad","Blackmagic Disk Speed Test: Write","Blackmagic Disk Speed Test: Read","Geekbench 6.7.2: Single-Core","Geekbench 6.7.2: Multi-Core","Geekbench 7.1.0: Single-Core","Geekbench 7.1.0: Multi-Core","Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score","PugetBench for Adobe CC (Photoshop)","PugetBench for Adobe CC (Premiere Pro)","3DMark: Steel Solar Bay","Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)"],"productColors":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#1A4E6B"}],"initialProductColors":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#1A4E6B"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["3DMark: Steel Nomad","3DMark: Steel Solar Bay"]},{"name":"Group 2","attributes":["Blackmagic Disk Speed Test: Write","Blackmagic Disk Speed Test: Read"]},{"name":"Group 3","attributes":["Geekbench 6.7.2: Single-Core","Geekbench 6.7.2: Multi-Core","Geekbench 7.1.0: Single-Core","Geekbench 7.1.0: Multi-Core","Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score"]},{"name":"Group 4","attributes":["PugetBench for Adobe CC (Photoshop)","PugetBench for Adobe CC (Premiere Pro)"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Carousel","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Benchmarks","subhead":"How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"3DMark<div><br><\/div>","grouped-bar-Group 2":"Blackmagic Disk Speed","grouped-bar-Group 3":"Geekbench","grouped-bar-Group 4":"PugetBench"},"xAxisLabelOverrides":{},"subheadOverrides":{"bar-Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)":"How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests"},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793878332364-g9uny7ijt" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Benchmarks</h3><p class="fv-chart-subhead">How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests</p><div class="fv-carousel-title-controls"><button class="fv-carousel-nav-btn prev">< Prev</button><h4 class="fv-benchmark-title" style="margin: 0 !important;">3DMark<div><br /></div></h4><button class="fv-carousel-nav-btn next">Next ></button></div><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-grouped-bar-Group 1" data-chart-type="Bar" data-title="3DMark<div><br /></div>" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">3DMark: Steel Nomad</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 5.5024999999999995%; background-color: #1A4E6B;" data-target-width="5.5024999999999995" data-target-margin="0"></div><span class="fv-bar-value-outside">4402</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">3DMark: Steel Solar Bay</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 98.015%; background-color: #1A4E6B;" data-target-width="98.015" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">78412</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>20,000</span><span>40,000</span><span>60,000</span><span>80,000</span></div><div class="fv-x-axis-unit">Score</div></div></div><table class="sr-only"><caption>3DMark<div><br /></div> Data</caption><thead><tr><th>Product</th><th>3DMark: Steel Nomad (Score)</th><th>3DMark: Steel Solar Bay (Score)</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>4402</td><td>78412</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-grouped-bar-Group 2" data-chart-type="Bar" data-title="Blackmagic Disk Speed" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" data-grouped-show-product-name="false" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Blackmagic Disk Speed Test: Write</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 88.9%; background-color: #1A4E6B;" data-target-width="88.9" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">13335</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Blackmagic Disk Speed Test: Read</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 85.22%; background-color: #1A4E6B;" data-target-width="85.22" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">12783</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>3,750</span><span>7,500</span><span>11,250</span><span>15,000</span></div><div class="fv-x-axis-unit">Score</div></div></div><table class="sr-only"><caption>Blackmagic Disk Speed Data</caption><thead><tr><th>Product</th><th>Blackmagic Disk Speed Test: Write (Score)</th><th>Blackmagic Disk Speed Test: Read (Score)</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>13335</td><td>12783</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-grouped-bar-Group 3" data-chart-type="Bar" data-title="Geekbench" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" data-grouped-show-product-name="false" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Geekbench 6.7.2: Single-Core</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 5.44875%; background-color: #1A4E6B;" data-target-width="5.44875" data-target-margin="0"></div><span class="fv-bar-value-outside">4359</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench 6.7.2: Multi-Core</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 37.908750000000005%; background-color: #1A4E6B;" data-target-width="37.908750000000005" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">30327</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench 7.1.0: Single-Core</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 4.7075%; background-color: #1A4E6B;" data-target-width="4.7075" data-target-margin="0"></div><span class="fv-bar-value-outside">3766</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench 7.1.0: Multi-Core</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 44.598749999999995%; background-color: #1A4E6B;" data-target-width="44.598749999999995" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">35679</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 7.75%; background-color: #1A4E6B;" data-target-width="7.75" data-target-margin="0"></div><span class="fv-bar-value-outside">6200</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 59.39375%; background-color: #1A4E6B;" data-target-width="59.39375" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">47515</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80.59125%; background-color: #1A4E6B;" data-target-width="80.59125" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">64473</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>20,000</span><span>40,000</span><span>60,000</span><span>80,000</span></div><div class="fv-x-axis-unit">Score</div></div></div><table class="sr-only"><caption>Geekbench Data</caption><thead><tr><th>Product</th><th>Geekbench 6.7.2: Single-Core (Score)</th><th>Geekbench 6.7.2: Multi-Core (Score)</th><th>Geekbench 7.1.0: Single-Core (Score)</th><th>Geekbench 7.1.0: Multi-Core (Score)</th><th>Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score (Score)</th><th>Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score (Score)</th><th>Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score (Score)</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>4359</td><td>30327</td><td>3766</td><td>35679</td><td>6200</td><td>47515</td><td>64473</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-grouped-bar-Group 4" data-chart-type="Bar" data-title="PugetBench" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" data-grouped-show-product-name="false" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">PugetBench for Adobe CC (Photoshop)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 9.2155%; background-color: #1A4E6B;" data-target-width="9.2155" data-target-margin="0"></div><span class="fv-bar-value-outside">18431</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">PugetBench for Adobe CC (Premiere Pro)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 77.62400000000001%; background-color: #1A4E6B;" data-target-width="77.62400000000001" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">155248</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>50,000</span><span>100,000</span><span>150,000</span><span>200,000</span></div><div class="fv-x-axis-unit">Score</div></div></div><table class="sr-only"><caption>PugetBench Data</caption><thead><tr><th>Product</th><th>PugetBench for Adobe CC (Photoshop) (Score)</th><th>PugetBench for Adobe CC (Premiere Pro) (Score)</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>18431</td><td>155248</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-bar-Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)" data-chart-type="Bar" data-title="Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" style="display: none;"><div class="fv-benchmark-group"><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 72.66666666666667%; background-color: #1A4E6B;" data-target-width="72.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">109</span></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div><div class="fv-x-axis-unit">fps</div></div></div><table class="sr-only"><caption>Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200) Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>109</td></tr></tbody></table></div></div></div><div class="fv-carousel-counter">1 of 5</div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793878332364-g9uny7ijt', false); });      } else {        initialize('fv-chart-1793878332364-g9uny7ijt', false);      }    })();      </script></div><p>The MacBook Pro with PROLED XDR Display model Apple sent to me for review comes with the M5 Max chip with 18-core CPU and 40-core GPU, 128GB of unified memory, and 2TB of storage. That’s a hefty list of specs, and would set you back a similarly hefty $7,399 / £7,399 / AU$11,699.</p><p>I’ve previously tested the M5 and M5 Pro in the 14-inch MacBook Pros launched earlier this year and late last year, and as expected, the M5 Max in my 16-inch Apple MacBook Pro with PROLED XDR Display is incredibly powerful, with macOS and its built-in apps all launching quickly and feeling fast and snappy.</p><p>When it comes to the touchscreen, macOS again feels fast and responsive, and using a finger to quickly browse up and down a website, selecting options in a dialog box or menu, and moving windows around the screen all feels natural, especially if you’ve ever used an iPhone or an iPad.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="xGeVJY3RGUPd4dqxpUv8KK" name="20261105_120122" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" src="https://cdn.mos.cms.futurecdn.net/xGeVJY3RGUPd4dqxpUv8KK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">A comparison of the Mini-LED screen of previous MacBooks on the left, with the PROLED XDR Display on the right. Both at 100% brightness </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unlike people who have only used Macs and MacBooks from the once touchscreen-phobic Apple, I’ve had extensive experience using Windows laptops and Chromebooks with touchscreens, so using one on the MacBook Pro isn’t as big of a culture shock as it might be to some. While it worked well, and there are some nice touches (forgive the pun), such as pressing down your finger on certain tools in Final Cut Pro to open up a radial menu for more precise touch control, I have to say that <a href="https://www.techradar.com/reviews/windows-11">Windows 11</a>, Chrome OS, and Google’s new Googlebook OS are better suited to touch controls. </p><p>This might come as little surprise, as this is Apple’s first MacBook to have a touchscreen, while Windows laptops and Chromebooks have had them for decades, and in the case of Chrome OS and Googlebook OS, Google has used its experience working on Android to develop the operating system. And, for as much grief as a lot of us (myself included) gave Windows 8 when it launched back in 2012, it inspired Microsoft to make a touchscreen-friendly interface, elements of which are still found in Windows 11, primarily with larger, easier to tap, buttons and menus.</p><p>Currently, macOS Tahoe still looks and feels like an operating system that’s best used with a traditional mouse and keyboard, because that’s what it is. But that also means some elements of the user interface, such as menus, feel a bit fiddly to control via touch.</p><p>Hopefully this will change if more MacBooks come out with touchscreens. But, because Apple has decided to put its first laptop touchscreen on its most powerful (and expensive) MacBooks, there’s a danger that the company will end up thinking that because the numbers of touchscreen MacBook users is so small, it’s not worth making big changes to the interface.</p><p>Another issue I have with Apple’s decision to put a touchscreen on its highest-end MacBook Pros, rather than a more mainstream MacBook Air or Neo — <a href="https://www.techradar.com/computing/macbooks/oops-apple-just-put-its-first-laptop-touchscreen-on-the-wrong-macbook">something I’ve written about</a> — is that touchscreen gestures and controls often aren’t the best way to control a laptop when you're performing complex tasks where precision is key. Sure, you can pull up a virtual piano in Garage Band and tap on the keys on screen, but while this is handy for quick ideas, you don’t want to play or write an entire song using it. </p><p>Most professionals will have peripherals, such as physical MIDI keyboards, for precise control. It’s the same with photographers and digital artists — using your fingers to pinch and zoom an image feels fast and natural, as does scribbling some notes or doodles, but for long-term use, many professionals will use a drawing tablet. If the MacBook’s PROLED XDR Display was compatible with the Apple Pencil stylus, that would make it a more useful tool for professionals, but it's not, which is a rather odd omission.</p><p>One touchscreen-friendly change Apple has made to macOS, and which I’m a big fan of, is adding an iPhone-like Dynamic Island where the notch around the webcam used to be. Tapping this gives you quick context-relevant tools, such as media controls when watching a video. Spotlight search and Siri AI are now located here as well. This is a great addition that adds value to the MacBook Pro’s touchscreen, and I’d like to see it expanded, and more touch-friendly UI elements to make the touchscreen a must-have, rather than nice-to-have-but-far-from-essential, which is what it feels like at the moment.</p><p>The tandem OLED tech powering the PROLED XDR Display is a much bigger deal, and likely the reason why most people will consider the Apple MacBook Pro with PROLED XDR Display over the standard model. The previous Mini-LED screen was already one of the best displays you’d find on a laptop, and thanks to tandem OLED, this new screen is even better. Straight out of the box without needing any calibration, the colors are bright and vibrant — so much so that I was surprised to see that the screen was only at 50% brightness. </p><p>Placing my 14-inch MacBook Pro with the M5 chip and Mini-LED screen next to the 16-inch MacBook Pro with <a href="">PROLED XDR</a> Display 16-inch really highlighted just how much better the PROLED XDR screen is. The Mini-LED looked dimmer, despite it being at 100% brightness, even with the PROLED XDR screen remaining at 50%. Now, as I said, the Mini-LED display of the (slightly) older MacBook Pro is no slouch, so to see such a stark difference in image quality is a big deal, especially for people who want a laptop for working with photos, videos and digital art. The new support for Adobe RGB color gamut is another big plus here, though as usual for Mac devices you’ll want to turn off the True Tone feature — it tweaks the colors of the screen depending on the ambient light you’re working in, which can make what’s on the screen look better to you in that moment, but could lead to color inaccuracies in a production workflow.</p><p>I won’t delve too deep into the performance of the M5 Max, as it’s been in other Apple devices for a while now, but this is the first time I’ve used a MacBook running it (I have tested both the previous M5 and M5 Pro MacBook Pro models).</p><p>According to Apple’s benchmarks, the M5 Max is around nine times faster than the M4 Max when it comes to ‘first token performance’, while AI image generation is apparently around six times faster. If those are the kind of stats that excite you, then enjoy! </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="fxpZYKDQHGLz3XkFqaj3LK" name="20261105_115759" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" src="https://cdn.mos.cms.futurecdn.net/fxpZYKDQHGLz3XkFqaj3LK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In our benchmark tests, compared to the M5 MacBook Pro with a 10-core CPU and 10-core GPU, the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) with an 18-core CPU and 40-core GPU unsurprisingly outperformed the older MacBook Pro when it came to graphic-intensive tests. In the 3D Mark Wild Life Extreme graphics test, for example, the M5 MacBook Pro scored 73.6fps compared to the M5 Max’s 214.1fps.</p><p>With gaming, the M5 MacBook Pro hit 11fps at 1920 x 1200 with Ray Tracing set to Ultra, while the M5 Max model managed a much more playable 38.75fps. This is a good example of the graphical performance gap, but if you want a laptop to game on you’re still better off buying a dedicated gaming laptop, which is a bit of a shame, as the PROLED XDR Display makes games look fantastic.</p><p>The SSD inside the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) offers up to 14.5GB/s speeds, with Apple claiming it’s twice as fast as the SSD in the previous generation, and in our tests it scored a very good 13,334.7MB/s and 12,782.7MB/s write and read speeds, respectively. A fast SSD like this is important if you’re working on large files and complex projects.</p><p>The SSD in the Surface Laptop Ultra with RTX Spark N1X chip scored a rather paltry 1,921MB/s write speeds in comparison. Check out our benchmark result charts for more comparisons.</p><div class="product"><a data-dimension112="e09b6892-d902-11f1-b866-d145e4a8832b" data-action="Deal Block" data-label="The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple." data-dimension48="The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="iPsSRLxVnLSd9PewPGhBkR" name="performance5" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/iPsSRLxVnLSd9PewPGhBkR-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e09b6892-d902-11f1-b866-d145e4a8832b" data-action="Deal Block" data-label="The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple." data-dimension48="The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max-review-battery-life"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) review: Battery Life</span></h2><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793878767824-wkr7x1tf3 *, #fv-chart-1793878767824-wkr7x1tf3 *:before, #fv-chart-1793878767824-wkr7x1tf3 *:after, #fv-chart-1793878767824-wkr7x1tf3-slideshow *, #fv-chart-1793878767824-wkr7x1tf3-slideshow *:before, #fv-chart-1793878767824-wkr7x1tf3-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793878767824-wkr7x1tf3, #fv-chart-1793878767824-wkr7x1tf3-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793878767824-wkr7x1tf3 { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793878767824-wkr7x1tf3.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-1793878767824-wkr7x1tf3 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793878767824-wkr7x1tf3-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793878767824-wkr7x1tf3-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793878767824-wkr7x1tf3-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-1793878767824-wkr7x1tf3-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-1793878767824-wkr7x1tf3-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793878767824-wkr7x1tf3-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793878767824-wkr7x1tf3-slideshow .fv-nav-btn.disabled, #fv-chart-1793878767824-wkr7x1tf3-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-1793878767824-wkr7x1tf3-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793878767824-wkr7x1tf3-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-1793878767824-wkr7x1tf3-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-row, #fv-chart-1793878767824-wkr7x1tf3 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793878767824-wkr7x1tf3 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-pie-container, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-stacked-product, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-grouped-bar-product, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-stacked-product, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793878767824-wkr7x1tf3.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-1793878767824-wkr7x1tf3.mobile-view .fv-bar-label, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-grouped-product-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-label, #fv-chart-1793878767824-wkr7x1tf3.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-1793878767824-wkr7x1tf3.mobile-view .fv-bar-container, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-cluster, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-container, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-x-axis-wrapper, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-x-axis-label-space, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-x-axis-chart-space, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-benchmark-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-dropdown-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-carousel-nav-btn, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-chart-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-chart-subhead, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-header, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select-wrapper, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-vs, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select-container, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793878767824-wkr7x1tf3.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-1793878767824-wkr7x1tf3.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-dials-grid, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-dial-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793878767824-wkr7x1tf3 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row, #fv-chart-1793878767824-wkr7x1tf3 .fv-stacked-product, #fv-chart-1793878767824-wkr7x1tf3 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-label, #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-container, #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-stl-shop-all-logo, #fv-chart-1793878767824-wkr7x1tf3 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793878767824-wkr7x1tf3.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Battery life results",  "description": "How long does the battery last?",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T11:39:27.824Z",  "citation": "Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.",  "keywords": [    "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)",    "Apple MacBook Pro 16-inch (2024, M4 Pro)",    "Asus ProArt P16 RTX Spark",    "Battery life video test",    "Versus Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Asus ProArt P16 RTX Spark – Battery life video test",      "value": 11.383333333333333,      "unitText": "hours, mins"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 16-inch (2024, M4 Pro) – Battery life video test",      "value": 21.5,      "unitText": "hours, mins"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Battery life video test",      "value": 24.35,      "unitText": "hours, mins"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T11:39:27.824Z","state":{"data":[{"productName":"Asus ProArt P16 RTX Spark","attribute":"Battery life video test","value":11.383333333333333,"unit":"hours, mins","displayValue":"11:23:00","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro 16-inch (2024, M4 Pro)","attribute":"Battery life video test","value":21.5,"unit":"hours, mins","displayValue":"21:30:00","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Battery life video test","value":24.35,"unit":"hours, mins","displayValue":"24:21:00","testDate":"","color":"","site":"TechRadar"}],"products":["Asus ProArt P16 RTX Spark","Apple MacBook Pro 16-inch (2024, M4 Pro)","Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"attributes":["Battery life video test"],"selectedProducts":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","Apple MacBook Pro 16-inch (2024, M4 Pro)","Asus ProArt P16 RTX Spark"],"selectedPrimaryProduct":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","selectedAttributes":["Battery life video test"],"productColors":[{"productName":"Asus ProArt P16 RTX Spark","color":"#1A4E6B"},{"productName":"Apple MacBook Pro 16-inch (2024, M4 Pro)","color":"#B81C70"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#8CC3E0"}],"initialProductColors":[{"productName":"Asus ProArt P16 RTX Spark","color":"#1A4E6B"},{"productName":"Apple MacBook Pro 16-inch (2024, M4 Pro)","color":"#B81C70"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#8CC3E0"}],"attributeColors":[],"attributeGroups":[],"chartType":"Versus","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Battery life results","subhead":"How long does the battery last?","caption":"Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"bar-Battery life video test":"How long does the battery last?"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793878767824-wkr7x1tf3" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Battery life results</h3><p class="fv-chart-subhead">How long does the battery last?</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793878767824-wkr7x1tf3-versus-chart" data-chart-type="Versus" data-title="Versus Comparison" data-subhead="How long does the battery last?" data-caption="Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off." style=""><div class="fv-benchmark-group"><table class="sr-only"><caption>Versus Comparison Data</caption><thead><tr><th>Attribute</th><th>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</th><th>Apple MacBook Pro 16-inch (2024, M4 Pro)</th><th>Asus ProArt P16 RTX Spark</th></tr></thead><tbody><tr><td>Battery life video test</td><td>24.35</td><td>21.5</td><td>11.383333333333333</td></tr></tbody></table><div class="fv-versus-chart" id="fv-chart-1793878767824-wkr7x1tf3-versus" data-versus-data="[{"attribute":"Battery life video test","originalAttribute":"Battery life video test","productData":{"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)":{"value":24.35,"unit":"hours, mins","displayValue":"24:21:00"},"Apple MacBook Pro 16-inch (2024, M4 Pro)":{"value":21.5,"unit":"hours, mins","displayValue":"21:30:00"},"Asus ProArt P16 RTX Spark":{"value":11.383333333333333,"unit":"hours, mins","displayValue":"11:23:00"}}}]" data-left-color="#2E6E93" data-right-color="#E8238C"><div class="fv-versus-header"><div class="fv-versus-select-wrapper fv-left"><div class="fv-versus-select-container"><select class="fv-versus-select fv-select-left" style="color: #2E6E93; border-color: #2E6E93;"><option value="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)" selected="">Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</option><option value="Apple MacBook Pro 16-inch (2024, M4 Pro)">Apple MacBook Pro 16-inch (2024, M4 Pro)</option><option value="Asus ProArt P16 RTX Spark">Asus ProArt P16 RTX Spark</option></select><svg class="fv-versus-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color: #2E6E93;"><polyline points="6 9 12 15 18 9"></polyline></svg></div></div><div class="fv-versus-vs">VS</div><div class="fv-versus-select-wrapper fv-right"><div class="fv-versus-select-container"><select class="fv-versus-select fv-select-right" style="color: #E8238C; border-color: #E8238C;"><option value="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)">Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</option><option value="Apple MacBook Pro 16-inch (2024, M4 Pro)" selected="">Apple MacBook Pro 16-inch (2024, M4 Pro)</option><option value="Asus ProArt P16 RTX Spark">Asus ProArt P16 RTX Spark</option></select><svg class="fv-versus-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color: #E8238C;"><polyline points="6 9 12 15 18 9"></polyline></svg></div></div></div><div class="fv-versus-body"><div class="fv-versus-row" data-index="0"><div class="fv-versus-label"><span>Battery life video test (hours, mins)</span></div><div class="fv-versus-bar-container"><div class="fv-versus-bar-left-wrapper" style="position: relative;"><div class="fv-versus-bar fv-versus-bar-left" style="--target-width: 95%; background-color: #2E6E93;" data-target-width="95"><span class="fv-versus-pct-diff" style="color: rgba(255, 255, 255, 0.9);">+13%</span><span class="fv-versus-val-text fv-inside-left" style="margin-left: auto;">24:21:00</span></div></div><div class="fv-versus-bar-right-wrapper" style="position: relative;"><div class="fv-versus-bar fv-versus-bar-right" style="--target-width: 75.05133470225873%; background-color: #E8238C;" data-target-width="75.05133470225873"><span class="fv-versus-val-text fv-inside-right" style="margin-right: auto;">21:30:00</span></div></div><div class="fv-versus-center-line" style="background-color: #ffffff;"></div></div></div></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793878767824-wkr7x1tf3', false); });      } else {        initialize('fv-chart-1793878767824-wkr7x1tf3', false);      }    })();      </script></div><p>Apple has claimed the new 16-inch MacBook Pro with PROLED XDR Display lasts up to 24 hours on battery when streaming videos, and up to 17 hours when browsing the web, and I found those claims to be pretty much spot on, with the device lasting an incredible 24 hours and 21 minutes in our battery test, which involves playing a looped 1080p video at 50% brightness.</p><p>It blows past the <a href="https://www.techradar.com/computing/macbooks/apple-macbook-pro-16-inch-m4-pro-2024">MacBook Pro 16-inch (M4 Pro, 2024)</a>, which managed 21 hours and 32 minutes in the same test, and over <em>double</em> the 11 hours and 23 minutes the Asus ProArt P16 RTX Spark hit. The MacBook Pro is able to sustain its performance when on battery life, rather than throttling it to conserve energy, so you’ll be able to go multiple work days on a single charge while still being productive, though of course the battery will drain more quickly if you’re using it for more intensive tasks.</p><div class="product"><a data-dimension112="e09b6a40-d902-11f1-8f43-8f95ccadb634" data-action="Deal Block" data-label="The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve." data-dimension48="The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="xcpS9DtTDvV2vrAVisBtAo" name="battery life 5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xcpS9DtTDvV2vrAVisBtAo-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e09b6a40-d902-11f1-8f43-8f95ccadb634" data-action="Deal Block" data-label="The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve." data-dimension48="The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-should-i-buy-the-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max"><span>Should I buy the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)?</span></h2><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy the MacBook Pro with PROLED XDR Display if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You want a powerful yet portable workstation laptop for creative work</strong><br />The MacBook Pro with PROLED XDR Display performs brilliantly when tasked with almost any creative project, but the M5 Max chip really comes into its own when handling complex graphical workloads. Battery life is also phenomenal, allowing you to work on this laptop pretty much anywhere.<br /><strong>✅ Your work requires accurate image quality</strong><br />The tandem OLED tech behind the PROLED XDR Display really is impressive, and thanks to support for the P3 and Adobe RGB color gamuts you get very accurate images without the need for deep calibration — making this MacBook a great choice for photographers and videographers.<br /><strong>✅ You develop apps for iPhones and iPads</strong><br />One of the best use cases I’ve seen for the touchscreen aspect of the PROLED XDR Display is for app developers who can run emulated versions of their apps on the MacBook, and use the screen to see how touchscreen elements will work.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don&#39;t buy the MacBook Pro with PROLED XDR Display  if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You don’t care about the touchscreen</strong><br />If you still agree with Steve Jobs’ touchscreen-on-MacBook skepticism, you can save a lot of money by going for one of Apple's many other MacBooks. You will miss out on the gorgeous tandem OLED display, however. <br /><strong>❌ You </strong><em><strong>only</strong></em><strong> care about the touchscreen</strong><br />Conversely, if you want a laptop primarily for a touchscreen, I’d recommend a 2-in-1 Windows 11 laptop or Chromebook, which are currently much better suited to touchscreen controls. Paying so much extra just for a touchscreen on the MacBook Pro with PROLED XDR Display is a waste.<br /><strong>❌ You don’t need the power or image quality</strong><br />The MacBook Pro with PROLED XDR Display 16-inch is a very expensive laptop in all its configurations, and even the base model will be overkill for most users.</p></div></div></div></div><h2 class="article-body__section" id="section-also-consider"><span>Also consider</span></h2>        <div class="featured_product_block featured_block_versus" data-id="e09b6c2a-d902-11f1-8e80-5f83a0871a5b">            <div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.06%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/d9mjqAq8RqF9d53t6FZxbB.png" alt="Samsung Galaxy Book6 Pro front-on view showing screen" /></p></div>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                            <div class='featured__brand'>Samsung</div>                    <div class="featured__title">Galaxy Book6 Pro (14-inch)</div>                                    </div>                <div class="subtitle__description">                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope="" itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star half"></span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="90" /></span></div>                                        <p></p>                </div>                <div class="pro-con"><div class="list-pros-wrapper"><h4 class="list-pros-label">Pros</h4><ul class="list-pros"><li class='list-item list-item-pros'>Exquisite design</li><li class='list-item list-item-pros'>Glorious large display</li><li class='list-item list-item-pros'>Respectable graphical performance</li></ul></div><div class="list-cons-wrapper"><h4 class="list-cons-label">Cons</h4><ul class="list-cons"><li class='list-item list-item-cons'>Not the lightest</li><li class='list-item list-item-cons'>Lacks ports</li><li class='list-item list-item-cons'>Heavy keys</li></ul></div></div>            </div>        </div>        <div class="featured_product_block featured_block_versus" data-id="e09b6c8e-d902-11f1-abdd-81fe505a2152">            <div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/v2/t:18,l:12,cw:1493,ch:1493,q:80/Q9ZXWhMmd2bnSYFHr5VRu5.jpg" alt="HP Chromebook Plus 15.6-inch with screen open" /></p></div>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                            <div class='featured__brand'>Asus</div>                    <div class="featured__title">ProArt P16 RTX Spark</div>                                    </div>                <div class="subtitle__description">                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope="" itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="80" /></span></div>                                        <p></p>                </div>                <div class="pro-con"><div class="list-pros-wrapper"><h4 class="list-pros-label">Pros</h4><ul class="list-pros"><li class='list-item list-item-pros'>Stunning 3K OLED screen</li><li class='list-item list-item-pros'>Stylish, lightweight design</li><li class='list-item list-item-pros'>Strong creative, AI and gaming performance</li></ul></div><div class="list-cons-wrapper"><h4 class="list-cons-label">Cons</h4><ul class="list-cons"><li class='list-item list-item-cons'>Very expensive</li><li class='list-item list-item-cons'>Bested by dedicated gaming or creative laptops</li><li class='list-item list-item-cons'>Some wobble to the screen</li></ul></div></div>            </div>        </div><h2 class="article-body__section" id="section-how-i-tested-the-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max"><span>How I tested the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z7wMuuRm9297Um8u5dKh3H" name="matt" alt="Matt Hanson using the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)" src="https://cdn.mos.cms.futurecdn.net/Z7wMuuRm9297Um8u5dKh3H-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>I used as my main work laptop for five days</strong></li><li><strong>I used a variety of apps during my testing</strong></li><li><strong>I have extensive experience reviewing MacBooks, laptops and Chromebooks</strong></li></ul><p>As soon as Apple sent me the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) I started using it as my daily laptop, and even wrote some of this review on it. I tested numerous apps including Photoshop, and played <em>Cyberpunk 2077</em> on it to see how it performs, and to see how good the PROLED XDR Display looks. I also viewed and edited some very high-quality photos by photographer Paul Reiffer, and supplied by Apple.</p><p>Throughout my time with the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max), I used both the standard keyboard and touchpad, and the touchscreen.</p><p>I’ve been reviewing laptops, including MacBooks and touchscreen laptops, for nearly 20 years, and have used that experience to inform this review. </p><ul><li><em>First reviewed: November 2026</em></li><li>Read more about <a href="https://www.techradar.com/news/how-we-test"><u>how we test</u></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/computing/macbooks/apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max</link>
                                                                            <description>
                            <![CDATA[ Apple has finally relented and put a touchscreen on a MacBook — but with gorgeous tandem OLED technology behind the display, the touch element is perhaps the least interesting aspect. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3KMSCZ9Ac8Lap2R73e2Hyh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/zH8fM2zM7aXnBAXMVrGsHK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 14:02:44 +0000</pubDate>                                                                                                                                <updated>Thu, 05 Nov 2026 18:33:36 +0000</updated>
                                                                                                                                            <category><![CDATA[Macbooks]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                                                                <author><![CDATA[ matthew.hanson@futurenet.com (Matt Hanson) ]]></author>                    <dc:creator><![CDATA[ Matt Hanson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/emP4wv7FcojxQ73QEARCmZ-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Matt Hanson is a technology journalist who, despite his youthful looks, has been doing this for almost 15 years. He joined TechRadar all the way back in 2014, and over the years has climbed to become Managing Editor, Core Tech, leading a global team of journalists to bring industry-leading coverage of laptops, PCs, software and mobile devices to TechRadar.&lt;/p&gt;&lt;p&gt;During his career, Matt has reviewed and used just about every laptop, from thin and light Ultrabooks, powerful gaming laptops and all manner of Chromebooks. His current favorite laptops are the MacBook Air and Dell XPS 13, as well as the Google Pixelbook Go, though he&#039;s worried Google won&#039;t make a follow-up.&lt;/p&gt;&lt;p&gt;Before he joined TechRadar, Matt worked extensively in the technology magazine industry, with roles in some of the most popular and respected titles, including Linux Format, PC Format, PC Plus, Windows Help &amp; Advice and Windows Vista: The Official Magazine.&lt;/p&gt;&lt;p&gt;As well as TechRadar, Matt frequently contributes to magazines and websites including MacFormat, CreativeBloq, Maximum PC, Digital Camera World and many more, sharing his knowledge of computers, laptops and Macs with a diverse audience.&lt;/p&gt;&lt;p&gt;When not writing about computers and entertainment, Matt enjoys playing games, watching films, making music, reading and running around after his young daughter.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/zH8fM2zM7aXnBAXMVrGsHK-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office]]></media:description>                                                            <media:text><![CDATA[Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office]]></media:text>
                                <media:title type="plain"><![CDATA[Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/zH8fM2zM7aXnBAXMVrGsHK-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-at-a-glance-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max"><span>At a glance: Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</span></h2><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/dtctBNapCHjhmnEvQw5r9R.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What is it?</h3><div class="card__description-wrapper"><div class="card__description"><p>The MacBook Pro with PROLED XDR Display is Apple’s latest and greatest workstation laptop aimed at professionals. It doesn’t come with the newest M6 chip architecture, and instead sticks with the previous, yet very powerful, M5 Pro and M5 Max generation. The big change this time around, however, is the PROLED XDR Display. Apple has dropped mini LED technology for tandem OLED, and the screen is gorgeously vibrant — and it’s the first time Apple has included a touchscreen on a MacBook.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/pCUGu3BfJz4w4y5E8NHmAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What does it cost?</h3><div class="card__description-wrapper"><div class="card__description"><p>The Apple MacBook Pro with PROLED XDR Display comes in two sizes: 14-inch and 16-inch. The 14-inch model starts at $2,899 / £2,899 / AU$4,599 and the 16-inch model starts at $3,399 / £3,399 / AU$5,499. These versions come with 24GB of unified memory and 1TB storage, and are powered by the M5 Pro chip (the 16-inch model’s M5 Pro chip features a more powerful 20-core GPU, compared to the 14-inches’ 18-core GPU). You can configure both models with the more powerful M5 Max chip up to 128GB memory and 16TB of storage, but things get very expensive, very fast.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/XnvYcAPALpRtRXfSaLLEAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">Alternatives</h3><div class="card__description-wrapper"><div class="card__description"><p>The launch of the Apple MacBook Pro with PROLED XDR Display comes at a time when there’s a lot of competition in the prosumer laptop market, thanks to the launch of a range of laptops powered by Nvidia’s RTX Spark chip. These laptops, such as the <a href="https://www.techradar.com/computing/windows-laptops/asus-proart-p16-rtx-spark">Asus ProArt P16 RTX Spark</a> and Microsoft Surface Laptop Ultra, have powerful chips, unified memory and touchscreens (many of them are OLED as well), which pits them squarely against the new MacBook Pro. </p></div></div></div></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793875110430-r15jxat7d *, #fv-chart-1793875110430-r15jxat7d *:before, #fv-chart-1793875110430-r15jxat7d *:after, #fv-chart-1793875110430-r15jxat7d-slideshow *, #fv-chart-1793875110430-r15jxat7d-slideshow *:before, #fv-chart-1793875110430-r15jxat7d-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793875110430-r15jxat7d, #fv-chart-1793875110430-r15jxat7d-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793875110430-r15jxat7d { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793875110430-r15jxat7d.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793875110430-r15jxat7d.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-1793875110430-r15jxat7d .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793875110430-r15jxat7d-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793875110430-r15jxat7d-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793875110430-r15jxat7d-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-1793875110430-r15jxat7d-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-1793875110430-r15jxat7d-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793875110430-r15jxat7d-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793875110430-r15jxat7d-slideshow .fv-nav-btn.disabled, #fv-chart-1793875110430-r15jxat7d-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-1793875110430-r15jxat7d-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793875110430-r15jxat7d-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-1793875110430-r15jxat7d-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793875110430-r15jxat7d .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793875110430-r15jxat7d .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793875110430-r15jxat7d .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793875110430-r15jxat7d .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793875110430-r15jxat7d .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793875110430-r15jxat7d .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793875110430-r15jxat7d .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793875110430-r15jxat7d .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793875110430-r15jxat7d .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793875110430-r15jxat7d .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793875110430-r15jxat7d .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793875110430-r15jxat7d .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-row, #fv-chart-1793875110430-r15jxat7d .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793875110430-r15jxat7d .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793875110430-r15jxat7d .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793875110430-r15jxat7d .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793875110430-r15jxat7d .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793875110430-r15jxat7d .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793875110430-r15jxat7d.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793875110430-r15jxat7d .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-pie-container, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-stacked-product, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-grouped-bar-product, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-stacked-product, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793875110430-r15jxat7d.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-1793875110430-r15jxat7d.mobile-view .fv-bar-label, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-grouped-product-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-label, #fv-chart-1793875110430-r15jxat7d.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-1793875110430-r15jxat7d.mobile-view .fv-bar-container, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-cluster, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-container, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-x-axis-wrapper, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-x-axis-label-space, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-x-axis-chart-space, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-benchmark-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-dropdown-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-carousel-nav-btn, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-chart-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-chart-subhead, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-header, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select-wrapper, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-vs, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select-container, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-versus-select, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793875110430-r15jxat7d.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-1793875110430-r15jxat7d.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-dials-grid, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-dial-title, #fv-chart-1793875110430-r15jxat7d.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793875110430-r15jxat7d.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793875110430-r15jxat7d .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-row, #fv-chart-1793875110430-r15jxat7d .fv-stacked-product, #fv-chart-1793875110430-r15jxat7d .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-label, #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-bar-container, #fv-chart-1793875110430-r15jxat7d .fv-bar-cluster { width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793875110430-r15jxat7d .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793875110430-r15jxat7d .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-label-space { display: none !important; } #fv-chart-1793875110430-r15jxat7d .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793875110430-r15jxat7d .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793875110430-r15jxat7d .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .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-1793875110430-r15jxat7d .fv-stl-shop-all-logo, #fv-chart-1793875110430-r15jxat7d .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793875110430-r15jxat7d .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793875110430-r15jxat7d .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793875110430-r15jxat7d .fv-dial-title { font-size: 16px !important; } #fv-chart-1793875110430-r15jxat7d .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793875110430-r15jxat7d.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Apple MacBook Pro with PROLED XDR Display scorecard",  "description": "How the Apple MacBook Pro with PROLED XDR Display scored in our review",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T10:38:30.431Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)",    "Value",    "Design",    "Performance",    "Battery life",    "Overall",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Value",      "value": 3,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Design",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Performance",      "value": 5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Battery life",      "value": 5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Overall",      "value": 4.5,      "unitText": "",      "maxValue": 5    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T10:38:30.431Z","state":{"data":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Value","value":3,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Design","value":4.5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Performance","value":5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Battery life","value":5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Overall","value":4.5,"unit":"","maxValue":5}],"products":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"attributes":["Value","Design","Performance","Battery life","Overall"],"selectedProducts":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"selectedPrimaryProduct":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","selectedAttributes":["Value","Design","Performance","Battery life","Overall"],"productColors":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#2E6E93"}],"initialProductColors":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#E8238C"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Value","Design","Performance","Battery life","Overall"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Apple MacBook Pro with PROLED XDR Display scorecard","subhead":"How the Apple MacBook Pro with PROLED XDR Display scored in our review","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793875110430-r15jxat7d" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Apple MacBook Pro with PROLED XDR Display scorecard</h3><p class="fv-chart-subhead">How the Apple MacBook Pro with PROLED XDR Display scored in our review</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793875110430-r15jxat7d-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="How the Apple MacBook Pro with PROLED XDR Display scored in our review" data-caption="" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 60%; background-color: #2E6E93;" data-target-width="60" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Design</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #2E6E93;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 100%; background-color: #2E6E93;" data-target-width="100" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Battery life</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 100%; background-color: #2E6E93;" data-target-width="100" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Overall</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #2E6E93;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div></div></div><table class="sr-only"><caption>Group 1 Data</caption><thead><tr><th>Product</th><th>Value ()</th><th>Design ()</th><th>Performance ()</th><th>Battery life ()</th><th>Overall ()</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>3</td><td>4.5</td><td>5</td><td>5</td><td>4.5</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793875110430-r15jxat7d', false); });      } else {        initialize('fv-chart-1793875110430-r15jxat7d', false);      }    })();      </script></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max-value-for-money"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max): Value for money</span></h2><p>Starting at $2,899 / £2,899 / AU$4,599 for the 14-inch version, and $3,399 / £3,399 / AU$5,499 for the 16-inch model, and going all the way up to an astonishing $14,549 / £14,549 / AU$22,424 for the fully specced-out model, the question of value isn’t so much about price, but about what this laptop can enable you to do.</p><p>Put simply, if you just want a MacBook that will excel at day-to-day tasks you’d be much better off buying a <a href="https://www.techradar.com/computing/macbooks/apple-macbook-air-13-inch-m5-review">MacBook Air (M5)</a>, and even for more ambitious workloads, <a href="https://www.techradar.com/computing/macbooks/apple-reveals-imac-m6-and-macbook-pro-m6-and-the-good-news-is-there-are-no-price-hikes">the recently-announced MacBook Pro (M6)</a>, which starts at $1,999 / £1,999 / AU$3,199, will likely more than suffice. Neither of those, of course, feature a touchscreen, but I wouldn’t suggest buying any model of the Apple MacBook Pro with PROLED XDR Display for the touchscreen alone. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="X2jVsFCnQtmch4HLfMYeHK" name="20261105_120206" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" src="https://cdn.mos.cms.futurecdn.net/X2jVsFCnQtmch4HLfMYeHK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Thankfully, this version of the MacBook Pro has other features that help to justify the higher price tag, including tandem OLED screen technology, a lighter design, and more powerful components. Despite being older than the M6 chip, both the M5 Pro and M5 Max outperform it, so if you need a seriously powerful laptop, and image quality is of the utmost importance, the Apple MacBook Pro with PROLED XDR Display could be a worthy investment, especially if its raw performance means you can complete projects faster, allowing you to take on more work, for example.</p><p>If you don’t need that kind of horsepower, then there are much more affordable options you should consider, tempting as the touchscreen functionality or OLED display might be.</p><p>Compared to rival RTX Spark laptops, the Apple MacBook Pro with PROLED XDR Display is much more competitive. The Asus ProArt P16 RTX Spark starts at $4,399.99 / £3,899.99 / AU$7,999, though it comes with a lot more memory, packing 64GB.</p><div class="product"><a data-dimension112="e09b398a-d902-11f1-acf1-b59c3499efdd" data-action="Deal Block" data-label="Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford." data-dimension48="Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="g8utBzWFoUc9TvJbzCghzX" name="value3" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/g8utBzWFoUc9TvJbzCghzX-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford. <a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e09b398a-d902-11f1-acf1-b59c3499efdd" data-action="Deal Block" data-label="Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford." data-dimension48="Meanwhile, the Surface Laptop Ultra starts at $2,599.99 / £2,599 / AU$4,399 for the same amount of memory (24GB), but only half the storage space (512GB). So, while the Apple MacBook Pro with PROLED XDR Display is an extremely expensive laptop, when you consider what it offers, who it’s aimed at, and how much the competition costs, the price tag makes more sense, even if that doesn’t make it any easier to afford." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max-design"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max): Design</span></h2><ul><li><strong>PROLED XDR screen is a clear highlight</strong></li><li><strong>Slightly lighter than previous models</strong></li><li><strong>iPhone-like Dynamic Island replaces the controversial ‘notch’ around the webcam</strong></li></ul><p>Given that the MacBook Pro design hasn’t changed in years, the Apple MacBook Pro with PROLED XDR Display in both size variants comes with some major tweaks in this department. This isn’t, though, the kind of overhaul we saw when Apple introduced the 16-inch and 14-inch MacBook Pros that replaced the 15-inch and 13-inch models, respectively, around five years ago; instead, this is a more subtle refinement of the design, and pretty much all of the tweaks are a result of the new display, so let’s start there.</p><p>Apple calls the new PROLED XDR screen "the best display on a laptop" and, to be fair, it has a good reason to be boastful. Previous screens on the MacBook Pro were already pretty darn good, and now Apple has swapped the mini-LED tech for tandem OLED.  This essentially uses two layers of organic light-emitting diodes (OLED) on top of each other, rather than just a single layer, so peak brightness can go even higher, while the display can remain power-efficient. The PROLED XDR screen can achieve 2,000 nits of peak brightness, whereas the mini-LED screen of previous MacBook Pros had a peak brightness of 1,600. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793881114655-ic9u30w8f *, #fv-chart-1793881114655-ic9u30w8f *:before, #fv-chart-1793881114655-ic9u30w8f *:after, #fv-chart-1793881114655-ic9u30w8f-slideshow *, #fv-chart-1793881114655-ic9u30w8f-slideshow *:before, #fv-chart-1793881114655-ic9u30w8f-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793881114655-ic9u30w8f, #fv-chart-1793881114655-ic9u30w8f-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793881114655-ic9u30w8f { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793881114655-ic9u30w8f.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-1793881114655-ic9u30w8f .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793881114655-ic9u30w8f-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793881114655-ic9u30w8f-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793881114655-ic9u30w8f-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-1793881114655-ic9u30w8f-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-1793881114655-ic9u30w8f-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793881114655-ic9u30w8f-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793881114655-ic9u30w8f-slideshow .fv-nav-btn.disabled, #fv-chart-1793881114655-ic9u30w8f-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-1793881114655-ic9u30w8f-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793881114655-ic9u30w8f-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-1793881114655-ic9u30w8f-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793881114655-ic9u30w8f .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-row, #fv-chart-1793881114655-ic9u30w8f .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793881114655-ic9u30w8f .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793881114655-ic9u30w8f .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793881114655-ic9u30w8f .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793881114655-ic9u30w8f.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793881114655-ic9u30w8f .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; overflow: hidden !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; } #fv-chart-1793881114655-ic9u30w8f.fv-full-bleed .fv-ia-container { width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.fv-full-bleed .fv-ia-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-image { display: block !important; width: 100% !important; height: auto !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-node-container { position: absolute !important; z-index: 10 !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-ia-node-button:hover { transform: scale(1.1) !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-ia-node-button:hover + .fv-ia-static-tooltip { display: block !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-logo-explore-bar .fv-logo { margin: 0 auto !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-explore-wrapper { position: absolute !important; right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-logo-explore-bar { flex-direction: column !important; min-height: auto !important; gap: 0.75rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-ia-explore-wrapper { position: static !important; align-self: flex-end !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-ia-explore-btn svg { transition: transform 0.2s !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-explore-btn:hover svg { transform: translateX(2px) !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-active-modal-container { display: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-modals { display: block !important; position: static !important; } #fv-chart-1793881114655-ic9u30w8f .fv-ia-modal-item { display: none !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-ia-close-button:hover { background: #e5e7eb !important; color: #111827 !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f.mobile-view .fv-ia-node-description { font-size: 0.875rem !important; } #fv-chart-1793881114655-ic9u30w8f .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; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-pie-container, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-stacked-product, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-grouped-bar-product, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-stacked-product, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793881114655-ic9u30w8f.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-1793881114655-ic9u30w8f.mobile-view .fv-bar-label, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-grouped-product-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-label, #fv-chart-1793881114655-ic9u30w8f.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-1793881114655-ic9u30w8f.mobile-view .fv-bar-container, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-cluster, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-container, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-x-axis-wrapper, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-x-axis-label-space, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-x-axis-chart-space, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-benchmark-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-dropdown-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-carousel-nav-btn, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-chart-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-chart-subhead, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-header, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select-wrapper, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-vs, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select-container, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-versus-select, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793881114655-ic9u30w8f.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-1793881114655-ic9u30w8f.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-dials-grid, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-dial-title, #fv-chart-1793881114655-ic9u30w8f.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793881114655-ic9u30w8f.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793881114655-ic9u30w8f .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-row, #fv-chart-1793881114655-ic9u30w8f .fv-stacked-product, #fv-chart-1793881114655-ic9u30w8f .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-label, #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-bar-container, #fv-chart-1793881114655-ic9u30w8f .fv-bar-cluster { width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793881114655-ic9u30w8f .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793881114655-ic9u30w8f .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-label-space { display: none !important; } #fv-chart-1793881114655-ic9u30w8f .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .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-1793881114655-ic9u30w8f .fv-stl-shop-all-logo, #fv-chart-1793881114655-ic9u30w8f .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793881114655-ic9u30w8f .fv-dial-title { font-size: 16px !important; } #fv-chart-1793881114655-ic9u30w8f .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793881114655-ic9u30w8f.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@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-11-05T12:18:34.655Z",  "citation": "Side view of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)",  "keywords": [    "Image Annotation",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T12:18:34.655Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Annotation","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Overall Chart Title","subhead":"Subhead to describe the test and what's being measured and why","caption":"Side view of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageAnnotationData":{"imageUrl":"https://cdn.mos.cms.futurecdn.net/HeYFnhDFng5XkmJDCNPaHK.jpg","nodes":[{"id":"node-1793880975394","x":54.37,"y":63.32,"title":"SDXC Card Slot","description":"Memory card slot for importing photos and videos straight from your camera"},{"id":"node-1793881029411","x":61.98,"y":53.98,"title":"HDMI & USB-C port","description":"On the right-hand side there's a full size HDMI port and one of three USB-C Thunderbolt 5 ports"},{"id":"node-1793881068370","x":51.89,"y":51.41,"title":"Touch ID button","description":"This button powers on the MacBook Pro, and can scan your fingerprint to log in"}],"fullBleed":false}},"slides":[]}</script><div id="fv-chart-1793881114655-ic9u30w8f" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header   fv-is-image-annotation"><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793881114655-ic9u30w8f-image-annotation-1" data-chart-type="Image Annotation" data-title="Image Annotation" data-subhead="" data-caption="Side view of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)" style=""><div class="fv-benchmark-group"><div class="fv-ia-container"><div class="fv-ia-wrapper"><img src="https://cdn.mos.cms.futurecdn.net/HeYFnhDFng5XkmJDCNPaHK.jpg" alt="Annotated image" class="fv-ia-image" loading="lazy" referrerpolicy="no-referrer" /><div class="fv-ia-node-container" style="left: 54.37%; top: 63.32%;"><button class="fv-ia-node-button" data-node-id="node-1793880975394" data-title="SDXC Card Slot" data-desc="Memory card slot for importing photos and videos straight from your camera">1<div class="fv-ia-pulse-ring" style="background-color: #2E6E93"></div></button></div><div class="fv-ia-node-container" style="left: 61.98%; top: 53.98%;"><button class="fv-ia-node-button" data-node-id="node-1793881029411" data-title="HDMI &amp; USB-C port" data-desc="On the right-hand side there's a full size HDMI port and one of three USB-C Thunderbolt 5 ports">2<div class="fv-ia-pulse-ring" style="background-color: #2E6E93"></div></button></div><div class="fv-ia-node-container" style="left: 51.89%; top: 51.41%;"><button class="fv-ia-node-button" data-node-id="node-1793881068370" data-title="Touch ID button" data-desc="This button powers on the MacBook Pro, and can scan your fingerprint to log in">3<div class="fv-ia-pulse-ring" style="background-color: #2E6E93"></div></button></div></div><div class="fv-ia-modals" style="display: none;"><div class="fv-ia-modal-item" data-node-id="node-1793880975394"><div class="fv-ia-modal-header"><h4 class="fv-ia-node-title">SDXC Card Slot</h4><button class="fv-ia-close-button" aria-label="Close"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button></div><p class="fv-ia-node-description">Memory card slot for importing photos and videos straight from your camera</p></div><div class="fv-ia-modal-item" data-node-id="node-1793881029411"><div class="fv-ia-modal-header"><h4 class="fv-ia-node-title">HDMI &amp; USB-C port</h4><button class="fv-ia-close-button" aria-label="Close"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button></div><p class="fv-ia-node-description">On the right-hand side there's a full size HDMI port and one of three USB-C Thunderbolt 5 ports</p></div><div class="fv-ia-modal-item" data-node-id="node-1793881068370"><div class="fv-ia-modal-header"><h4 class="fv-ia-node-title">Touch ID button</h4><button class="fv-ia-close-button" aria-label="Close"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg></button></div><p class="fv-ia-node-description">This button powers on the MacBook Pro, and can scan your fingerprint to log in</p></div></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">Side view of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /><div class="fv-ia-explore-wrapper"><button class="fv-ia-explore-btn" aria-label="Explore annotations"><span>Explore</span><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></div></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793881114655-ic9u30w8f', false); });      } else {        initialize('fv-chart-1793881114655-ic9u30w8f', false);      }    })();      </script></div><p>Combine that with the usual benefits we’ve come to expect from OLED displays, namely the higher contrast ratios and lack of halo effects (where there’s noticeable bloom surrounding light colors that bleeds into pixels that should be showing darker, or completely black, colors) that come thanks to each OLED pixel being independently controlled (including being able to be turned off completely), rather than relying on an LED backlight, which offers less precise control over the pixels in the display. </p><p>The contrast ratio of the PROLED XDR screen is an incredible 10,000,000:1, a pretty huge bump over the 1,000,000:1 contrast ratio of the previous model with a Liquid Retina XDR display. Contrast ratio is a way of comparing the brightest white to the darkest black of a display, and the greater the difference, the more vibrant the image quality, so you can forget about washed-out colors and blacks that look more gray, and enjoy rich, deep colors that really pop compared to darker tones, and even the total blackness that OLED technology enables.</p><p>While MacBook displays have supported the P3 color gamut, which is particularly important for people working with video who require accurate colors, the PROLED XDR screen also supports the Adobe RGB gamut, which offers wider coverage for green and cyan colors, and is popular with photographers and designers.</p><p>The addition of touch functionality has also had implications for the design. The hinges of the MacBook Pro with PROLED XDR Display have been tweaked to reduce movement and flex when you touch the screen. I’d have loved it if Apple had taken this opportunity to increase the amount by which the screen can be pushed back, ideally introducing hinges to allow the touchscreen to lie flat on a desk, or even flip behind the keyboard to turn the laptop into an iPad-like device. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/89azXwnFdttH46BqmTqdJK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YeUJjcgKWYcmwR8CwDB8JK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HXHeYQSaSgsJQ6bQjNeuHK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GozakNuSpuaXzR77ySanHK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/X2jVsFCnQtmch4HLfMYeHK-1920-80.jpg" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>This would have made the redesign of the MacBook Pro with PROLED XDR Display even more ambitious, and would have likely meant much more work for Apple to ensure the macOS operating system works with a 2-in-1 laptop form factor, but it would have made the whole idea of a touchscreen much more viable. Instead, we’re still stuck with a traditional clamshell laptop design, so touchscreen gestures require you hovering your arm over the keyboard as you jab horizontally at the screen — it's not the most natural-feeling way to interact with a device, and this was one of Steve Jobs’ biggest criticisms of touchscreen laptops when, as CEO, he dismissed the idea of Apple making one all those years ago.</p><p>The PROLED XDR screen also allows for thinner bezels around it, and the once-controversial notch that surrounded the webcam has been replaced by Apple's Dynamic Island, as seen on the iPhone, which gives you quick touch access to controls such as media playback, AirDrop sharing and accessing Spotlight. It’s one of the best examples of Apple tweaking macOS to better make use of the touchscreen, and I can confidently predict that the Dynamic Island will be less hated than the notch, which was just dead space that intruded on the desktop.</p><p>The more compact Dynamic Island and thinner bezels mean the screen of this 16-inch Pro is slightly larger than on previous models at 16.3 inches vs 16.2 inches, with a higher resolution of 3472 x 2266 pixels vs 3456 x 2234 pixels.</p><p>The OLED screen technology (and new thermal system that’s used to keep the laptop’s components cool) has also helped Apple reduce the weight of the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) by half a pound — that's 15% lighter — and make it around 1mm thinner.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="nXWMTHzV8rgcLKqKvB6LHK" name="20261105_115909" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" src="https://cdn.mos.cms.futurecdn.net/nXWMTHzV8rgcLKqKvB6LHK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The MacBook Pro was always a great showcase that proved powerful workstation laptops don’t need to be big and bulky, so it's impressive that Apple has been able to make this new model both lighter and thinner. </p><p>The final design change is a relatively minor one, but one that will likely prove to be very popular. Apple has <a href="https://www.techradar.com/computing/macbooks/heres-the-secret-behind-the-return-of-the-illuminated-apple-logo-on-the-back-of-the-new-touchscreen-macbook-pro">returned to having an illuminated Apple logo on the back of the lid</a> — it's a nod to the past, while also helping the latest MacBook Pro stand out more compared to the previous models. </p><div class="product"><a data-dimension112="e09b3e62-d902-11f1-a64a-a998b656a65b" data-action="Deal Block" data-label="Apart from those changes, the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)’s design is essentially the same as the previous few generations of MacBook — but that’s no bad thing, as it remains a great-looking laptop with plenty of ports (three USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio and the MagSafe 3 port) for pros." data-dimension48="Apart from those changes, the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)’s design is essentially the same as the previous few generations of MacBook — but that’s no bad thing, as it remains a great-looking laptop with plenty of ports (three USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio and the MagSafe 3 port) for pros." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="fetJ7HfWYBKLNPcshUh6SQ" name="design 4.5 stars" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fetJ7HfWYBKLNPcshUh6SQ-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>Apart from those changes, the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)’s design is essentially the same as the previous few generations of MacBook — but that’s no bad thing, as it remains a great-looking laptop with plenty of ports (three USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio and the MagSafe 3 port) for pros.</p></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-specs"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026): Specs</span></h2><div ><table><thead><tr><th class="firstcol " ><p> </p><p>  </p></th><th  ><p>Apple MacBook Pro with PROLED XDR Display 16-inch base configuration</p><p>  </p></th><th  ><p>Apple MacBook Pro with PROLED XDR Display 16-inch max configuration</p><p>  </p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Processor</p><p>  </p></td><td  ><p>Apple M5 Pro (18-core)</p><p>  </p></td><td  ><p>Apple M5 Max (18-core)</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Graphics</p><p>  </p></td><td  ><p>20-core GPU</p><p>  </p></td><td  ><p>32-core GPU</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Display</p><p>  </p></td><td  ><p>16.3‑inch (diagonal) tandem OLED PROLED XDR display (3472 x 2266), Touch, Wide color (P3 + Adobe RGB), True Tone, ProMotion up to 120Hz</p><p>  </p></td><td  ><p>16.3‑inch (diagonal) tandem OLED PROLED XDR display (3472 x 2266), Touch, Wide color (P3 + Adobe RGB), True Tone, ProMotion up to 120Hz</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Memory</p><p>  </p></td><td  ><p>24GB Unified Memory</p><p>  </p></td><td  ><p>36GB Unified Memory</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Storage</p><p>  </p></td><td  ><p>1TB SSD</p><p>  </p></td><td  ><p>2TB SSD</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Battery Life</p><p>  </p></td><td  ><p>Integrated 100‑watt‑hour lithium‑polymer battery, up to 17   hours web browsing, up to 24 hours video streaming</p><p>  </p></td><td  ><p>Integrated 100‑watt‑hour lithium‑polymer battery, up to 16 hours web   browsing, up to 22 hours video streaming</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Ports</p><p>  </p></td><td  ><p>3x USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio, MagSafe 3</p><p>  </p></td><td  ><p>3x USB-C Thunderbolt 5 ports, SDXC card slot, HDMI, 3.5mm audio, MagSafe 3</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Audio &amp; Camera</p><p>  </p></td><td  ><p>High-fidelity six‑speaker sound system with force-cancelling woofers, 12MP Center Stage camera with support for Desk View</p><p>  </p></td><td  ><p>High-fidelity six‑speaker sound system with force-cancelling woofers, 12MP Center Stage camera with support for Desk View</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Wireless</p><p>  </p></td><td  ><p>Wi-Fi 7; Bluetooth 6.0</p><p>  </p></td><td  ><p>Wi-Fi 7; Bluetooth 6.0</p><p>  </p></td></tr><tr><td class="firstcol " ><p>Dimensions &amp; Weight</p><p>  </p></td><td  ><p>0.63 x 14 x 9.62 inches (1.60 x 35.55 x 24.42cm), 4lbs (1.82kg)</p><p>  </p></td><td  ><p>0.63 x 14 x 9.62 inches (1.60 x 35.55 x 24.42cm), 4.1lbs (1.84kg)</p><p>  </p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max-performance"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max): Performance</span></h2><ul><li><strong>No M6 version with PROLED XDR Display</strong></li><li><strong>Touchscreen is responsive, but not an essential addition</strong></li><li><strong>Very fast SSD</strong></li></ul><p>I’m going to be honest: I think Apple has got itself into a little bit of a pickle with its M-series naming convention and release cadence. For a company that was often lauded for offering an elegant simplicity here, compared to the complexity of some competitors, it’s made a bit of a confusing mess.</p><p>Want the very latest M-series architecture, the <a href="https://www.techradar.com/computing/macs/apples-new-mac-mini-looks-the-same-but-the-m6-inside-brings-a-major-performance-boost">M6</a>, which is the company’s first-ever 2nm compute chip? Well, if so, you can forget about the PROLED XDR Display, as Apple is only offering it in the 14-inch MacBook Pro with Mini-LED screen. If you want the M6 and don’t care about a touchscreen or OLED, but prefer the larger 16-inch screen size, then you’re out of luck.</p><p>If you want the most powerful chips in a MacBook, then you’re left with the previous-generation <a href="https://www.techradar.com/pro/stop-should-you-upgrade-your-m1-max-apple-mac-to-the-m5-gpu-and-memory-bandwidth-data-reveal-the-surprising-answer">M5 Pro and Max </a>chips. But, getting an M5 Max-powered MacBook Pro doesn’t guarantee it’s the most powerful chip, as the default M5 Max chip that comes with the MacBook Pro with PROLED XDR Display 16-inch features an 18-core CPU and 32-core GPU, but you can upgrade (for $300 / £300 extra) to a more powerful M5 Max with a 40-core GPU. To be honest, unless you’re working with extremely graphically-intensive projects, the standard M5 Max chip will be more than enough, and even the M5 Pro will handle pretty much anything you throw at it. </p><p>As I mentioned, if you want the M6 generation and the improvements it brings, namely with a smaller 2nm process, which should lead to better power efficiency, and a dual 16-core Neural Engine for improved on-device AI performance, then you’ll need to forego both the PROLED XDR Display and 16-inch screen size.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793878332364-g9uny7ijt *, #fv-chart-1793878332364-g9uny7ijt *:before, #fv-chart-1793878332364-g9uny7ijt *:after, #fv-chart-1793878332364-g9uny7ijt-slideshow *, #fv-chart-1793878332364-g9uny7ijt-slideshow *:before, #fv-chart-1793878332364-g9uny7ijt-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793878332364-g9uny7ijt, #fv-chart-1793878332364-g9uny7ijt-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793878332364-g9uny7ijt { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793878332364-g9uny7ijt.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-1793878332364-g9uny7ijt .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793878332364-g9uny7ijt-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793878332364-g9uny7ijt-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793878332364-g9uny7ijt-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-1793878332364-g9uny7ijt-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-1793878332364-g9uny7ijt-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793878332364-g9uny7ijt-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793878332364-g9uny7ijt-slideshow .fv-nav-btn.disabled, #fv-chart-1793878332364-g9uny7ijt-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-1793878332364-g9uny7ijt-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793878332364-g9uny7ijt-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-1793878332364-g9uny7ijt-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793878332364-g9uny7ijt .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-row, #fv-chart-1793878332364-g9uny7ijt .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793878332364-g9uny7ijt .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793878332364-g9uny7ijt .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793878332364-g9uny7ijt .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793878332364-g9uny7ijt .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793878332364-g9uny7ijt.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793878332364-g9uny7ijt .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-pie-container, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-stacked-product, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-grouped-bar-product, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-stacked-product, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793878332364-g9uny7ijt.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-1793878332364-g9uny7ijt.mobile-view .fv-bar-label, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-grouped-product-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-label, #fv-chart-1793878332364-g9uny7ijt.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-1793878332364-g9uny7ijt.mobile-view .fv-bar-container, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-cluster, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-container, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-x-axis-wrapper, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-x-axis-label-space, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-x-axis-chart-space, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-benchmark-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-dropdown-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-carousel-nav-btn, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-chart-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-chart-subhead, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-header, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select-wrapper, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-vs, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select-container, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-versus-select, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793878332364-g9uny7ijt.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-1793878332364-g9uny7ijt.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-dials-grid, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-dial-title, #fv-chart-1793878332364-g9uny7ijt.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793878332364-g9uny7ijt.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793878332364-g9uny7ijt .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-row, #fv-chart-1793878332364-g9uny7ijt .fv-stacked-product, #fv-chart-1793878332364-g9uny7ijt .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-label, #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-bar-container, #fv-chart-1793878332364-g9uny7ijt .fv-bar-cluster { width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878332364-g9uny7ijt .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878332364-g9uny7ijt .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-label-space { display: none !important; } #fv-chart-1793878332364-g9uny7ijt .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .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-1793878332364-g9uny7ijt .fv-stl-shop-all-logo, #fv-chart-1793878332364-g9uny7ijt .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793878332364-g9uny7ijt .fv-dial-title { font-size: 16px !important; } #fv-chart-1793878332364-g9uny7ijt .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793878332364-g9uny7ijt.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Benchmarks",  "description": "How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T11:32:12.364Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)",    "3DMark: Steel Nomad",    "Blackmagic Disk Speed Test: Write",    "Blackmagic Disk Speed Test: Read",    "Geekbench 6.7.2: Single-Core",    "Geekbench 6.7.2: Multi-Core",    "Geekbench 7.1.0: Single-Core",    "Geekbench 7.1.0: Multi-Core",    "Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score",    "Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score",    "Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score",    "PugetBench for Adobe CC (Photoshop)",    "PugetBench for Adobe CC (Premiere Pro)",    "3DMark: Steel Solar Bay",    "Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)",    "3DMark\u003cdiv>\u003cbr>\u003c/div>",    "Blackmagic Disk Speed",    "Geekbench",    "PugetBench",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – 3DMark: Steel Nomad",      "value": 4402,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – 3DMark: Steel Solar Bay",      "value": 78412,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Blackmagic Disk Speed Test: Write",      "value": 13335,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Blackmagic Disk Speed Test: Read",      "value": 12783,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench 6.7.2: Single-Core",      "value": 4359,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench 6.7.2: Multi-Core",      "value": 30327,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench 7.1.0: Single-Core",      "value": 3766,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench 7.1.0: Multi-Core",      "value": 35679,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score",      "value": 6200,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score",      "value": 47515,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score",      "value": 64473,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – PugetBench for Adobe CC (Photoshop)",      "value": 18431,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – PugetBench for Adobe CC (Premiere Pro)",      "value": 155248,      "unitText": "Score"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)",      "value": 109,      "unitText": "fps"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T11:32:12.364Z","state":{"data":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Blackmagic Disk Speed Test: Write","value":13335,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Blackmagic Disk Speed Test: Read","value":12783,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench 6.7.2: Single-Core","value":4359,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench 6.7.2: Multi-Core","value":30327,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench 7.1.0: Single-Core","value":3766,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench 7.1.0: Multi-Core","value":35679,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score","value":6200,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score","value":47515,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score","value":64473,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"PugetBench for Adobe CC (Photoshop)","value":18431,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"PugetBench for Adobe CC (Premiere Pro)","value":155248,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"3DMark: Steel Nomad","value":4402,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"3DMark: Steel Solar Bay","value":78412,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)","value":109,"unit":"fps","testDate":"","color":"","site":"TechRadar"}],"products":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"attributes":["3DMark: Steel Nomad","Blackmagic Disk Speed Test: Write","Blackmagic Disk Speed Test: Read","Geekbench 6.7.2: Single-Core","Geekbench 6.7.2: Multi-Core","Geekbench 7.1.0: Single-Core","Geekbench 7.1.0: Multi-Core","Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score","PugetBench for Adobe CC (Photoshop)","PugetBench for Adobe CC (Premiere Pro)","3DMark: Steel Solar Bay","Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)"],"selectedProducts":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"selectedPrimaryProduct":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","selectedAttributes":["3DMark: Steel Nomad","Blackmagic Disk Speed Test: Write","Blackmagic Disk Speed Test: Read","Geekbench 6.7.2: Single-Core","Geekbench 6.7.2: Multi-Core","Geekbench 7.1.0: Single-Core","Geekbench 7.1.0: Multi-Core","Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score","PugetBench for Adobe CC (Photoshop)","PugetBench for Adobe CC (Premiere Pro)","3DMark: Steel Solar Bay","Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)"],"productColors":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#1A4E6B"}],"initialProductColors":[{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#1A4E6B"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["3DMark: Steel Nomad","3DMark: Steel Solar Bay"]},{"name":"Group 2","attributes":["Blackmagic Disk Speed Test: Write","Blackmagic Disk Speed Test: Read"]},{"name":"Group 3","attributes":["Geekbench 6.7.2: Single-Core","Geekbench 6.7.2: Multi-Core","Geekbench 7.1.0: Single-Core","Geekbench 7.1.0: Multi-Core","Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score","Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score"]},{"name":"Group 4","attributes":["PugetBench for Adobe CC (Photoshop)","PugetBench for Adobe CC (Premiere Pro)"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Carousel","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Benchmarks","subhead":"How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"3DMark<div><br><\/div>","grouped-bar-Group 2":"Blackmagic Disk Speed","grouped-bar-Group 3":"Geekbench","grouped-bar-Group 4":"PugetBench"},"xAxisLabelOverrides":{},"subheadOverrides":{"bar-Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)":"How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests"},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793878332364-g9uny7ijt" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Benchmarks</h3><p class="fv-chart-subhead">How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests</p><div class="fv-carousel-title-controls"><button class="fv-carousel-nav-btn prev">< Prev</button><h4 class="fv-benchmark-title" style="margin: 0 !important;">3DMark<div><br /></div></h4><button class="fv-carousel-nav-btn next">Next ></button></div><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-grouped-bar-Group 1" data-chart-type="Bar" data-title="3DMark<div><br /></div>" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">3DMark: Steel Nomad</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 5.5024999999999995%; background-color: #1A4E6B;" data-target-width="5.5024999999999995" data-target-margin="0"></div><span class="fv-bar-value-outside">4402</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">3DMark: Steel Solar Bay</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 98.015%; background-color: #1A4E6B;" data-target-width="98.015" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">78412</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>20,000</span><span>40,000</span><span>60,000</span><span>80,000</span></div><div class="fv-x-axis-unit">Score</div></div></div><table class="sr-only"><caption>3DMark<div><br /></div> Data</caption><thead><tr><th>Product</th><th>3DMark: Steel Nomad (Score)</th><th>3DMark: Steel Solar Bay (Score)</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>4402</td><td>78412</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-grouped-bar-Group 2" data-chart-type="Bar" data-title="Blackmagic Disk Speed" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" data-grouped-show-product-name="false" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Blackmagic Disk Speed Test: Write</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 88.9%; background-color: #1A4E6B;" data-target-width="88.9" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">13335</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Blackmagic Disk Speed Test: Read</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 85.22%; background-color: #1A4E6B;" data-target-width="85.22" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">12783</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>3,750</span><span>7,500</span><span>11,250</span><span>15,000</span></div><div class="fv-x-axis-unit">Score</div></div></div><table class="sr-only"><caption>Blackmagic Disk Speed Data</caption><thead><tr><th>Product</th><th>Blackmagic Disk Speed Test: Write (Score)</th><th>Blackmagic Disk Speed Test: Read (Score)</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>13335</td><td>12783</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-grouped-bar-Group 3" data-chart-type="Bar" data-title="Geekbench" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" data-grouped-show-product-name="false" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Geekbench 6.7.2: Single-Core</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 5.44875%; background-color: #1A4E6B;" data-target-width="5.44875" data-target-margin="0"></div><span class="fv-bar-value-outside">4359</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench 6.7.2: Multi-Core</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 37.908750000000005%; background-color: #1A4E6B;" data-target-width="37.908750000000005" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">30327</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench 7.1.0: Single-Core</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 4.7075%; background-color: #1A4E6B;" data-target-width="4.7075" data-target-margin="0"></div><span class="fv-bar-value-outside">3766</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench 7.1.0: Multi-Core</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 44.598749999999995%; background-color: #1A4E6B;" data-target-width="44.598749999999995" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">35679</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 7.75%; background-color: #1A4E6B;" data-target-width="7.75" data-target-margin="0"></div><span class="fv-bar-value-outside">6200</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 59.39375%; background-color: #1A4E6B;" data-target-width="59.39375" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">47515</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80.59125%; background-color: #1A4E6B;" data-target-width="80.59125" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">64473</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>20,000</span><span>40,000</span><span>60,000</span><span>80,000</span></div><div class="fv-x-axis-unit">Score</div></div></div><table class="sr-only"><caption>Geekbench Data</caption><thead><tr><th>Product</th><th>Geekbench 6.7.2: Single-Core (Score)</th><th>Geekbench 6.7.2: Multi-Core (Score)</th><th>Geekbench 7.1.0: Single-Core (Score)</th><th>Geekbench 7.1.0: Multi-Core (Score)</th><th>Geekbench AI 1.8 (Core ML/Neural Engine): Single Precision Score (Score)</th><th>Geekbench AI 1.8 (Core ML/Neural Engine): Half Precision Score (Score)</th><th>Geekbench AI 1.8 (Core ML/Neural Engine): Quantized Score (Score)</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>4359</td><td>30327</td><td>3766</td><td>35679</td><td>6200</td><td>47515</td><td>64473</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-grouped-bar-Group 4" data-chart-type="Bar" data-title="PugetBench" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" data-grouped-show-product-name="false" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">PugetBench for Adobe CC (Photoshop)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 9.2155%; background-color: #1A4E6B;" data-target-width="9.2155" data-target-margin="0"></div><span class="fv-bar-value-outside">18431</span></div></div><div class="fv-bar-row"><div class="fv-bar-label">PugetBench for Adobe CC (Premiere Pro)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 77.62400000000001%; background-color: #1A4E6B;" data-target-width="77.62400000000001" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">155248</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>50,000</span><span>100,000</span><span>150,000</span><span>200,000</span></div><div class="fv-x-axis-unit">Score</div></div></div><table class="sr-only"><caption>PugetBench Data</caption><thead><tr><th>Product</th><th>PugetBench for Adobe CC (Photoshop) (Score)</th><th>PugetBench for Adobe CC (Premiere Pro) (Score)</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>18431</td><td>155248</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793878332364-g9uny7ijt-bar-Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)" data-chart-type="Bar" data-title="Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200)" data-subhead="How the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) performed in our suite of benchmark tests" data-caption="" style="display: none;"><div class="fv-benchmark-group"><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 72.66666666666667%; background-color: #1A4E6B;" data-target-width="72.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">109</span></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div><div class="fv-x-axis-unit">fps</div></div></div><table class="sr-only"><caption>Cyberpunk 2077 (Ray Tracing Ultra, 1920 x 1200) Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</td><td>109</td></tr></tbody></table></div></div></div><div class="fv-carousel-counter">1 of 5</div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793878332364-g9uny7ijt', false); });      } else {        initialize('fv-chart-1793878332364-g9uny7ijt', false);      }    })();      </script></div><p>The MacBook Pro with PROLED XDR Display model Apple sent to me for review comes with the M5 Max chip with 18-core CPU and 40-core GPU, 128GB of unified memory, and 2TB of storage. That’s a hefty list of specs, and would set you back a similarly hefty $7,399 / £7,399 / AU$11,699.</p><p>I’ve previously tested the M5 and M5 Pro in the 14-inch MacBook Pros launched earlier this year and late last year, and as expected, the M5 Max in my 16-inch Apple MacBook Pro with PROLED XDR Display is incredibly powerful, with macOS and its built-in apps all launching quickly and feeling fast and snappy.</p><p>When it comes to the touchscreen, macOS again feels fast and responsive, and using a finger to quickly browse up and down a website, selecting options in a dialog box or menu, and moving windows around the screen all feels natural, especially if you’ve ever used an iPhone or an iPad.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="xGeVJY3RGUPd4dqxpUv8KK" name="20261105_120122" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" src="https://cdn.mos.cms.futurecdn.net/xGeVJY3RGUPd4dqxpUv8KK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">A comparison of the Mini-LED screen of previous MacBooks on the left, with the PROLED XDR Display on the right. Both at 100% brightness </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unlike people who have only used Macs and MacBooks from the once touchscreen-phobic Apple, I’ve had extensive experience using Windows laptops and Chromebooks with touchscreens, so using one on the MacBook Pro isn’t as big of a culture shock as it might be to some. While it worked well, and there are some nice touches (forgive the pun), such as pressing down your finger on certain tools in Final Cut Pro to open up a radial menu for more precise touch control, I have to say that <a href="https://www.techradar.com/reviews/windows-11">Windows 11</a>, Chrome OS, and Google’s new Googlebook OS are better suited to touch controls. </p><p>This might come as little surprise, as this is Apple’s first MacBook to have a touchscreen, while Windows laptops and Chromebooks have had them for decades, and in the case of Chrome OS and Googlebook OS, Google has used its experience working on Android to develop the operating system. And, for as much grief as a lot of us (myself included) gave Windows 8 when it launched back in 2012, it inspired Microsoft to make a touchscreen-friendly interface, elements of which are still found in Windows 11, primarily with larger, easier to tap, buttons and menus.</p><p>Currently, macOS Tahoe still looks and feels like an operating system that’s best used with a traditional mouse and keyboard, because that’s what it is. But that also means some elements of the user interface, such as menus, feel a bit fiddly to control via touch.</p><p>Hopefully this will change if more MacBooks come out with touchscreens. But, because Apple has decided to put its first laptop touchscreen on its most powerful (and expensive) MacBooks, there’s a danger that the company will end up thinking that because the numbers of touchscreen MacBook users is so small, it’s not worth making big changes to the interface.</p><p>Another issue I have with Apple’s decision to put a touchscreen on its highest-end MacBook Pros, rather than a more mainstream MacBook Air or Neo — <a href="https://www.techradar.com/computing/macbooks/oops-apple-just-put-its-first-laptop-touchscreen-on-the-wrong-macbook">something I’ve written about</a> — is that touchscreen gestures and controls often aren’t the best way to control a laptop when you're performing complex tasks where precision is key. Sure, you can pull up a virtual piano in Garage Band and tap on the keys on screen, but while this is handy for quick ideas, you don’t want to play or write an entire song using it. </p><p>Most professionals will have peripherals, such as physical MIDI keyboards, for precise control. It’s the same with photographers and digital artists — using your fingers to pinch and zoom an image feels fast and natural, as does scribbling some notes or doodles, but for long-term use, many professionals will use a drawing tablet. If the MacBook’s PROLED XDR Display was compatible with the Apple Pencil stylus, that would make it a more useful tool for professionals, but it's not, which is a rather odd omission.</p><p>One touchscreen-friendly change Apple has made to macOS, and which I’m a big fan of, is adding an iPhone-like Dynamic Island where the notch around the webcam used to be. Tapping this gives you quick context-relevant tools, such as media controls when watching a video. Spotlight search and Siri AI are now located here as well. This is a great addition that adds value to the MacBook Pro’s touchscreen, and I’d like to see it expanded, and more touch-friendly UI elements to make the touchscreen a must-have, rather than nice-to-have-but-far-from-essential, which is what it feels like at the moment.</p><p>The tandem OLED tech powering the PROLED XDR Display is a much bigger deal, and likely the reason why most people will consider the Apple MacBook Pro with PROLED XDR Display over the standard model. The previous Mini-LED screen was already one of the best displays you’d find on a laptop, and thanks to tandem OLED, this new screen is even better. Straight out of the box without needing any calibration, the colors are bright and vibrant — so much so that I was surprised to see that the screen was only at 50% brightness. </p><p>Placing my 14-inch MacBook Pro with the M5 chip and Mini-LED screen next to the 16-inch MacBook Pro with <a href="">PROLED XDR</a> Display 16-inch really highlighted just how much better the PROLED XDR screen is. The Mini-LED looked dimmer, despite it being at 100% brightness, even with the PROLED XDR screen remaining at 50%. Now, as I said, the Mini-LED display of the (slightly) older MacBook Pro is no slouch, so to see such a stark difference in image quality is a big deal, especially for people who want a laptop for working with photos, videos and digital art. The new support for Adobe RGB color gamut is another big plus here, though as usual for Mac devices you’ll want to turn off the True Tone feature — it tweaks the colors of the screen depending on the ambient light you’re working in, which can make what’s on the screen look better to you in that moment, but could lead to color inaccuracies in a production workflow.</p><p>I won’t delve too deep into the performance of the M5 Max, as it’s been in other Apple devices for a while now, but this is the first time I’ve used a MacBook running it (I have tested both the previous M5 and M5 Pro MacBook Pro models).</p><p>According to Apple’s benchmarks, the M5 Max is around nine times faster than the M4 Max when it comes to ‘first token performance’, while AI image generation is apparently around six times faster. If those are the kind of stats that excite you, then enjoy! </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="fxpZYKDQHGLz3XkFqaj3LK" name="20261105_115759" alt="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) on wooden desk in office" src="https://cdn.mos.cms.futurecdn.net/fxpZYKDQHGLz3XkFqaj3LK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In our benchmark tests, compared to the M5 MacBook Pro with a 10-core CPU and 10-core GPU, the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) with an 18-core CPU and 40-core GPU unsurprisingly outperformed the older MacBook Pro when it came to graphic-intensive tests. In the 3D Mark Wild Life Extreme graphics test, for example, the M5 MacBook Pro scored 73.6fps compared to the M5 Max’s 214.1fps.</p><p>With gaming, the M5 MacBook Pro hit 11fps at 1920 x 1200 with Ray Tracing set to Ultra, while the M5 Max model managed a much more playable 38.75fps. This is a good example of the graphical performance gap, but if you want a laptop to game on you’re still better off buying a dedicated gaming laptop, which is a bit of a shame, as the PROLED XDR Display makes games look fantastic.</p><p>The SSD inside the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) offers up to 14.5GB/s speeds, with Apple claiming it’s twice as fast as the SSD in the previous generation, and in our tests it scored a very good 13,334.7MB/s and 12,782.7MB/s write and read speeds, respectively. A fast SSD like this is important if you’re working on large files and complex projects.</p><p>The SSD in the Surface Laptop Ultra with RTX Spark N1X chip scored a rather paltry 1,921MB/s write speeds in comparison. Check out our benchmark result charts for more comparisons.</p><div class="product"><a data-dimension112="e09b6892-d902-11f1-b866-d145e4a8832b" data-action="Deal Block" data-label="The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple." data-dimension48="The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="iPsSRLxVnLSd9PewPGhBkR" name="performance5" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/iPsSRLxVnLSd9PewPGhBkR-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e09b6892-d902-11f1-b866-d145e4a8832b" data-action="Deal Block" data-label="The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple." data-dimension48="The rest of the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) works as well as expected. The spatial speakers are loud and clear, and the Center Stage webcam offers excellent clarity, alongside some nice software-powered features that improve the image quality further. A nice additional feature added is that macOS will virtually stabilize the webcam’s footage if you’re using the touchscreen at the same time, to stop it wobbling while you’re on calls. It’s a handy feature, and shows the attention to detail we’ve come to expect from Apple." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max-review-battery-life"><span>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) review: Battery Life</span></h2><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793878767824-wkr7x1tf3 *, #fv-chart-1793878767824-wkr7x1tf3 *:before, #fv-chart-1793878767824-wkr7x1tf3 *:after, #fv-chart-1793878767824-wkr7x1tf3-slideshow *, #fv-chart-1793878767824-wkr7x1tf3-slideshow *:before, #fv-chart-1793878767824-wkr7x1tf3-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793878767824-wkr7x1tf3, #fv-chart-1793878767824-wkr7x1tf3-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793878767824-wkr7x1tf3 { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793878767824-wkr7x1tf3.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-1793878767824-wkr7x1tf3 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793878767824-wkr7x1tf3-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793878767824-wkr7x1tf3-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793878767824-wkr7x1tf3-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-1793878767824-wkr7x1tf3-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-1793878767824-wkr7x1tf3-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793878767824-wkr7x1tf3-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793878767824-wkr7x1tf3-slideshow .fv-nav-btn.disabled, #fv-chart-1793878767824-wkr7x1tf3-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-1793878767824-wkr7x1tf3-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793878767824-wkr7x1tf3-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-1793878767824-wkr7x1tf3-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-row, #fv-chart-1793878767824-wkr7x1tf3 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793878767824-wkr7x1tf3.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793878767824-wkr7x1tf3 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-pie-container, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-stacked-product, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-grouped-bar-product, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-stacked-product, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793878767824-wkr7x1tf3.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-1793878767824-wkr7x1tf3.mobile-view .fv-bar-label, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-grouped-product-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-label, #fv-chart-1793878767824-wkr7x1tf3.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-1793878767824-wkr7x1tf3.mobile-view .fv-bar-container, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-cluster, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-container, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-x-axis-wrapper, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-x-axis-label-space, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-x-axis-chart-space, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-benchmark-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-dropdown-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-carousel-nav-btn, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-chart-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-chart-subhead, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-header, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select-wrapper, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-vs, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select-container, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-versus-select, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793878767824-wkr7x1tf3.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-1793878767824-wkr7x1tf3.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-dials-grid, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-dial-title, #fv-chart-1793878767824-wkr7x1tf3.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793878767824-wkr7x1tf3.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793878767824-wkr7x1tf3 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row, #fv-chart-1793878767824-wkr7x1tf3 .fv-stacked-product, #fv-chart-1793878767824-wkr7x1tf3 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-label, #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-bar-container, #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .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-1793878767824-wkr7x1tf3 .fv-stl-shop-all-logo, #fv-chart-1793878767824-wkr7x1tf3 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793878767824-wkr7x1tf3 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793878767824-wkr7x1tf3.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Battery life results",  "description": "How long does the battery last?",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T11:39:27.824Z",  "citation": "Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.",  "keywords": [    "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)",    "Apple MacBook Pro 16-inch (2024, M4 Pro)",    "Asus ProArt P16 RTX Spark",    "Battery life video test",    "Versus Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Asus ProArt P16 RTX Spark – Battery life video test",      "value": 11.383333333333333,      "unitText": "hours, mins"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 16-inch (2024, M4 Pro) – Battery life video test",      "value": 21.5,      "unitText": "hours, mins"    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) – Battery life video test",      "value": 24.35,      "unitText": "hours, mins"    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T11:39:27.824Z","state":{"data":[{"productName":"Asus ProArt P16 RTX Spark","attribute":"Battery life video test","value":11.383333333333333,"unit":"hours, mins","displayValue":"11:23:00","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro 16-inch (2024, M4 Pro)","attribute":"Battery life video test","value":21.5,"unit":"hours, mins","displayValue":"21:30:00","testDate":"","color":"","site":"TechRadar"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","attribute":"Battery life video test","value":24.35,"unit":"hours, mins","displayValue":"24:21:00","testDate":"","color":"","site":"TechRadar"}],"products":["Asus ProArt P16 RTX Spark","Apple MacBook Pro 16-inch (2024, M4 Pro)","Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)"],"attributes":["Battery life video test"],"selectedProducts":["Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","Apple MacBook Pro 16-inch (2024, M4 Pro)","Asus ProArt P16 RTX Spark"],"selectedPrimaryProduct":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","selectedAttributes":["Battery life video test"],"productColors":[{"productName":"Asus ProArt P16 RTX Spark","color":"#1A4E6B"},{"productName":"Apple MacBook Pro 16-inch (2024, M4 Pro)","color":"#B81C70"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#8CC3E0"}],"initialProductColors":[{"productName":"Asus ProArt P16 RTX Spark","color":"#1A4E6B"},{"productName":"Apple MacBook Pro 16-inch (2024, M4 Pro)","color":"#B81C70"},{"productName":"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)","color":"#8CC3E0"}],"attributeColors":[],"attributeGroups":[],"chartType":"Versus","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Battery life results","subhead":"How long does the battery last?","caption":"Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"bar-Battery life video test":"How long does the battery last?"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793878767824-wkr7x1tf3" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Battery life results</h3><p class="fv-chart-subhead">How long does the battery last?</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793878767824-wkr7x1tf3-versus-chart" data-chart-type="Versus" data-title="Versus Comparison" data-subhead="How long does the battery last?" data-caption="Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off." style=""><div class="fv-benchmark-group"><table class="sr-only"><caption>Versus Comparison Data</caption><thead><tr><th>Attribute</th><th>Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</th><th>Apple MacBook Pro 16-inch (2024, M4 Pro)</th><th>Asus ProArt P16 RTX Spark</th></tr></thead><tbody><tr><td>Battery life video test</td><td>24.35</td><td>21.5</td><td>11.383333333333333</td></tr></tbody></table><div class="fv-versus-chart" id="fv-chart-1793878767824-wkr7x1tf3-versus" data-versus-data="[{"attribute":"Battery life video test","originalAttribute":"Battery life video test","productData":{"Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)":{"value":24.35,"unit":"hours, mins","displayValue":"24:21:00"},"Apple MacBook Pro 16-inch (2024, M4 Pro)":{"value":21.5,"unit":"hours, mins","displayValue":"21:30:00"},"Asus ProArt P16 RTX Spark":{"value":11.383333333333333,"unit":"hours, mins","displayValue":"11:23:00"}}}]" data-left-color="#2E6E93" data-right-color="#E8238C"><div class="fv-versus-header"><div class="fv-versus-select-wrapper fv-left"><div class="fv-versus-select-container"><select class="fv-versus-select fv-select-left" style="color: #2E6E93; border-color: #2E6E93;"><option value="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)" selected="">Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</option><option value="Apple MacBook Pro 16-inch (2024, M4 Pro)">Apple MacBook Pro 16-inch (2024, M4 Pro)</option><option value="Asus ProArt P16 RTX Spark">Asus ProArt P16 RTX Spark</option></select><svg class="fv-versus-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color: #2E6E93;"><polyline points="6 9 12 15 18 9"></polyline></svg></div></div><div class="fv-versus-vs">VS</div><div class="fv-versus-select-wrapper fv-right"><div class="fv-versus-select-container"><select class="fv-versus-select fv-select-right" style="color: #E8238C; border-color: #E8238C;"><option value="Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)">Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</option><option value="Apple MacBook Pro 16-inch (2024, M4 Pro)" selected="">Apple MacBook Pro 16-inch (2024, M4 Pro)</option><option value="Asus ProArt P16 RTX Spark">Asus ProArt P16 RTX Spark</option></select><svg class="fv-versus-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color: #E8238C;"><polyline points="6 9 12 15 18 9"></polyline></svg></div></div></div><div class="fv-versus-body"><div class="fv-versus-row" data-index="0"><div class="fv-versus-label"><span>Battery life video test (hours, mins)</span></div><div class="fv-versus-bar-container"><div class="fv-versus-bar-left-wrapper" style="position: relative;"><div class="fv-versus-bar fv-versus-bar-left" style="--target-width: 95%; background-color: #2E6E93;" data-target-width="95"><span class="fv-versus-pct-diff" style="color: rgba(255, 255, 255, 0.9);">+13%</span><span class="fv-versus-val-text fv-inside-left" style="margin-left: auto;">24:21:00</span></div></div><div class="fv-versus-bar-right-wrapper" style="position: relative;"><div class="fv-versus-bar fv-versus-bar-right" style="--target-width: 75.05133470225873%; background-color: #E8238C;" data-target-width="75.05133470225873"><span class="fv-versus-val-text fv-inside-right" style="margin-right: auto;">21:30:00</span></div></div><div class="fv-versus-center-line" style="background-color: #ffffff;"></div></div></div></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: block;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;">Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.</span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793878767824-wkr7x1tf3', false); });      } else {        initialize('fv-chart-1793878767824-wkr7x1tf3', false);      }    })();      </script></div><p>Apple has claimed the new 16-inch MacBook Pro with PROLED XDR Display lasts up to 24 hours on battery when streaming videos, and up to 17 hours when browsing the web, and I found those claims to be pretty much spot on, with the device lasting an incredible 24 hours and 21 minutes in our battery test, which involves playing a looped 1080p video at 50% brightness.</p><p>It blows past the <a href="https://www.techradar.com/computing/macbooks/apple-macbook-pro-16-inch-m4-pro-2024">MacBook Pro 16-inch (M4 Pro, 2024)</a>, which managed 21 hours and 32 minutes in the same test, and over <em>double</em> the 11 hours and 23 minutes the Asus ProArt P16 RTX Spark hit. The MacBook Pro is able to sustain its performance when on battery life, rather than throttling it to conserve energy, so you’ll be able to go multiple work days on a single charge while still being productive, though of course the battery will drain more quickly if you’re using it for more intensive tasks.</p><div class="product"><a data-dimension112="e09b6a40-d902-11f1-8f43-8f95ccadb634" data-action="Deal Block" data-label="The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve." data-dimension48="The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="xcpS9DtTDvV2vrAVisBtAo" name="battery life 5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xcpS9DtTDvV2vrAVisBtAo-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e09b6a40-d902-11f1-8f43-8f95ccadb634" data-action="Deal Block" data-label="The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve." data-dimension48="The battery life is seriously impressive for a large workstation laptop with such powerful components and a bright and vibrant display, and laptop makers (as well as Nvidia itself) producing RTX Spark rivals will need to seriously up their game, given that they're only managing around half of what the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) can achieve." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-should-i-buy-the-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max"><span>Should I buy the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)?</span></h2><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy the MacBook Pro with PROLED XDR Display if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You want a powerful yet portable workstation laptop for creative work</strong><br />The MacBook Pro with PROLED XDR Display performs brilliantly when tasked with almost any creative project, but the M5 Max chip really comes into its own when handling complex graphical workloads. Battery life is also phenomenal, allowing you to work on this laptop pretty much anywhere.<br /><strong>✅ Your work requires accurate image quality</strong><br />The tandem OLED tech behind the PROLED XDR Display really is impressive, and thanks to support for the P3 and Adobe RGB color gamuts you get very accurate images without the need for deep calibration — making this MacBook a great choice for photographers and videographers.<br /><strong>✅ You develop apps for iPhones and iPads</strong><br />One of the best use cases I’ve seen for the touchscreen aspect of the PROLED XDR Display is for app developers who can run emulated versions of their apps on the MacBook, and use the screen to see how touchscreen elements will work.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don&#39;t buy the MacBook Pro with PROLED XDR Display  if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You don’t care about the touchscreen</strong><br />If you still agree with Steve Jobs’ touchscreen-on-MacBook skepticism, you can save a lot of money by going for one of Apple's many other MacBooks. You will miss out on the gorgeous tandem OLED display, however. <br /><strong>❌ You </strong><em><strong>only</strong></em><strong> care about the touchscreen</strong><br />Conversely, if you want a laptop primarily for a touchscreen, I’d recommend a 2-in-1 Windows 11 laptop or Chromebook, which are currently much better suited to touchscreen controls. Paying so much extra just for a touchscreen on the MacBook Pro with PROLED XDR Display is a waste.<br /><strong>❌ You don’t need the power or image quality</strong><br />The MacBook Pro with PROLED XDR Display 16-inch is a very expensive laptop in all its configurations, and even the base model will be overkill for most users.</p></div></div></div></div><h2 class="article-body__section" id="section-also-consider"><span>Also consider</span></h2>        <div class="featured_product_block featured_block_versus" data-id="e09b6c2a-d902-11f1-8e80-5f83a0871a5b">            <div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.06%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/d9mjqAq8RqF9d53t6FZxbB.png" alt="Samsung Galaxy Book6 Pro front-on view showing screen" /></p></div>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                            <div class='featured__brand'>Samsung</div>                    <div class="featured__title">Galaxy Book6 Pro (14-inch)</div>                                    </div>                <div class="subtitle__description">                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope="" itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star half"></span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="90" /></span></div>                                        <p></p>                </div>                <div class="pro-con"><div class="list-pros-wrapper"><h4 class="list-pros-label">Pros</h4><ul class="list-pros"><li class='list-item list-item-pros'>Exquisite design</li><li class='list-item list-item-pros'>Glorious large display</li><li class='list-item list-item-pros'>Respectable graphical performance</li></ul></div><div class="list-cons-wrapper"><h4 class="list-cons-label">Cons</h4><ul class="list-cons"><li class='list-item list-item-cons'>Not the lightest</li><li class='list-item list-item-cons'>Lacks ports</li><li class='list-item list-item-cons'>Heavy keys</li></ul></div></div>            </div>        </div>        <div class="featured_product_block featured_block_versus" data-id="e09b6c8e-d902-11f1-abdd-81fe505a2152">            <div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/v2/t:18,l:12,cw:1493,ch:1493,q:80/Q9ZXWhMmd2bnSYFHr5VRu5.jpg" alt="HP Chromebook Plus 15.6-inch with screen open" /></p></div>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                                            <div class='featured__brand'>Asus</div>                    <div class="featured__title">ProArt P16 RTX Spark</div>                                    </div>                <div class="subtitle__description">                                <div class="stars__reviews"><span itemprop="reviewRating" itemscope="" itemtype="http://schema.org/Rating" class="chunk rating"><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><span class="icon icon-star"> </span><meta itemprop="bestRating" content="100.0" /><meta itemprop="worstRating" content="0.0" /><meta itemprop="ratingValue" content="80" /></span></div>                                        <p></p>                </div>                <div class="pro-con"><div class="list-pros-wrapper"><h4 class="list-pros-label">Pros</h4><ul class="list-pros"><li class='list-item list-item-pros'>Stunning 3K OLED screen</li><li class='list-item list-item-pros'>Stylish, lightweight design</li><li class='list-item list-item-pros'>Strong creative, AI and gaming performance</li></ul></div><div class="list-cons-wrapper"><h4 class="list-cons-label">Cons</h4><ul class="list-cons"><li class='list-item list-item-cons'>Very expensive</li><li class='list-item list-item-cons'>Bested by dedicated gaming or creative laptops</li><li class='list-item list-item-cons'>Some wobble to the screen</li></ul></div></div>            </div>        </div><h2 class="article-body__section" id="section-how-i-tested-the-apple-macbook-pro-with-proled-xdr-display-16-inch-2026-m5-max"><span>How I tested the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z7wMuuRm9297Um8u5dKh3H" name="matt" alt="Matt Hanson using the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max)" src="https://cdn.mos.cms.futurecdn.net/Z7wMuuRm9297Um8u5dKh3H-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>I used as my main work laptop for five days</strong></li><li><strong>I used a variety of apps during my testing</strong></li><li><strong>I have extensive experience reviewing MacBooks, laptops and Chromebooks</strong></li></ul><p>As soon as Apple sent me the Apple MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max) I started using it as my daily laptop, and even wrote some of this review on it. I tested numerous apps including Photoshop, and played <em>Cyberpunk 2077</em> on it to see how it performs, and to see how good the PROLED XDR Display looks. I also viewed and edited some very high-quality photos by photographer Paul Reiffer, and supplied by Apple.</p><p>Throughout my time with the MacBook Pro with PROLED XDR Display 16-inch (2026, M5 Max), I used both the standard keyboard and touchpad, and the touchscreen.</p><p>I’ve been reviewing laptops, including MacBooks and touchscreen laptops, for nearly 20 years, and have used that experience to inform this review. </p><ul><li><em>First reviewed: November 2026</em></li><li>Read more about <a href="https://www.techradar.com/news/how-we-test"><u>how we test</u></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Apple's 14-inch M6 MacBook Pro is a speed boost, not a reinvention – and I'm fine with that ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-at-a-glance-apple-14-inch-macbook-pro-m6-review"><span>At a glance: Apple 14-inch MacBook Pro (M6) Review</span></h2><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/dtctBNapCHjhmnEvQw5r9R.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What is it?</h3><div class="card__description-wrapper"><div class="card__description"><p>Apple's latest update to the 14-inch MacBook Pro doesn't change much, but it keeps the line ticking over with the new M6 chip for improved overall performance and better connectivity, all in the same familiar build.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/pCUGu3BfJz4w4y5E8NHmAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What does it cost?</h3><div class="card__description-wrapper"><div class="card__description"><p>The 14-inch MacBook Pro with M6 starts at $1,999 / £1,999 / AU$3,199, with 16GB of RAM and 1TB of storage. You can configure it with up to 32GB of RAM and 4TB of storage, add a Nano-Texture display, or step up to the more powerful M5 Pro or M5 Max chips.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/XnvYcAPALpRtRXfSaLLEAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">Alternatives</h3><div class="card__description-wrapper"><div class="card__description"><p>If you need more power or a bigger screen, there's the 16-inch MacBook Pro with M6, or the 14-inch and 16-inch models with M5 Pro or M5 Max. The 13-inch and 15-inch M5 MacBook Air are better picks if you want a more portable build and can live with slightly less performance. If you want an OLED touchscreen and a thinner, lighter design, you'll need to look at the more expensive PROLED 14-inch or 16-inch models with the M5 Pro or M5 Max.</p></div></div></div></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793883030756-48nqkdi61 *, #fv-chart-1793883030756-48nqkdi61 *:before, #fv-chart-1793883030756-48nqkdi61 *:after, #fv-chart-1793883030756-48nqkdi61-slideshow *, #fv-chart-1793883030756-48nqkdi61-slideshow *:before, #fv-chart-1793883030756-48nqkdi61-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793883030756-48nqkdi61, #fv-chart-1793883030756-48nqkdi61-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793883030756-48nqkdi61 { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793883030756-48nqkdi61.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793883030756-48nqkdi61.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-1793883030756-48nqkdi61 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793883030756-48nqkdi61-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793883030756-48nqkdi61-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793883030756-48nqkdi61-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-1793883030756-48nqkdi61-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-1793883030756-48nqkdi61-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793883030756-48nqkdi61-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793883030756-48nqkdi61-slideshow .fv-nav-btn.disabled, #fv-chart-1793883030756-48nqkdi61-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-1793883030756-48nqkdi61-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793883030756-48nqkdi61-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-1793883030756-48nqkdi61-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793883030756-48nqkdi61 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-row, #fv-chart-1793883030756-48nqkdi61 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793883030756-48nqkdi61 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793883030756-48nqkdi61 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793883030756-48nqkdi61 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793883030756-48nqkdi61 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793883030756-48nqkdi61 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-pie-container, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-stacked-product, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-grouped-bar-product, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-stacked-product, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793883030756-48nqkdi61.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-1793883030756-48nqkdi61.mobile-view .fv-bar-label, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-grouped-product-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-label, #fv-chart-1793883030756-48nqkdi61.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-1793883030756-48nqkdi61.mobile-view .fv-bar-container, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-cluster, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-container, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-x-axis-wrapper, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-x-axis-label-space, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-x-axis-chart-space, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-benchmark-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-dropdown-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-carousel-nav-btn, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-chart-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-chart-subhead, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-header, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select-wrapper, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-vs, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select-container, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793883030756-48nqkdi61.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-1793883030756-48nqkdi61.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-dials-grid, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-dial-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793883030756-48nqkdi61 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-row, #fv-chart-1793883030756-48nqkdi61 .fv-stacked-product, #fv-chart-1793883030756-48nqkdi61 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-label, #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-container, #fv-chart-1793883030756-48nqkdi61 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-stl-shop-all-logo, #fv-chart-1793883030756-48nqkdi61 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793883030756-48nqkdi61.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Apple MacBook Pro 14-inch (2026, M6) scorecard",  "description": "How the Apple MacBook Pro 14-inch (2026, M6) scored in our review",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T12:50:30.756Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Apple MacBook Pro 14-inch (2026, M6)",    "Value",    "Design",    "Performance",    "Battery life",    "Overall",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Value",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Design",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Performance",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Battery life",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Overall",      "value": 4,      "unitText": "",      "maxValue": 5    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T12:50:30.756Z","state":{"data":[{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Value","value":4,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Design","value":4,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Performance","value":4.5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Battery life","value":4.5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Overall","value":4,"unit":"","maxValue":5}],"products":["Apple MacBook Pro 14-inch (2026, M6)"],"attributes":["Value","Design","Performance","Battery life","Overall"],"selectedProducts":["Apple MacBook Pro 14-inch (2026, M6)"],"selectedPrimaryProduct":"Apple MacBook Pro 14-inch (2026, M6)","selectedAttributes":["Value","Design","Performance","Battery life","Overall"],"productColors":[{"productName":"Apple MacBook Pro 14-inch (2026, M6)","color":"#E8238C"}],"initialProductColors":[{"productName":"Apple MacBook Pro 14-inch (2026, M6)","color":"#E8238C"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Value","Design","Performance","Battery life","Overall"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Apple MacBook Pro 14-inch (2026, M6) scorecard","subhead":"How the Apple MacBook Pro 14-inch (2026, M6) scored in our review","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793883030756-48nqkdi61" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Apple MacBook Pro 14-inch (2026, M6) scorecard</h3><p class="fv-chart-subhead">How the Apple MacBook Pro 14-inch (2026, M6) scored in our review</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793883030756-48nqkdi61-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="How the Apple MacBook Pro 14-inch (2026, M6) scored in our review" data-caption="" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E8238C;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Design</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E8238C;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Battery life</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Overall</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E8238C;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div></div></div><table class="sr-only"><caption>Group 1 Data</caption><thead><tr><th>Product</th><th>Value ()</th><th>Design ()</th><th>Performance ()</th><th>Battery life ()</th><th>Overall ()</th></tr></thead><tbody><tr><td>Apple MacBook Pro 14-inch (2026, M6)</td><td>4</td><td>4</td><td>4.5</td><td>4.5</td><td>4</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793883030756-48nqkdi61', false); });      } else {        initialize('fv-chart-1793883030756-48nqkdi61', false);      }    })();      </script></div><h2 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-value-for-money"><span>Apple 14-inch MacBook Pro (M6) Review: Value for money</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sMzuMKLXbWaawBHSTXkWrc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/sMzuMKLXbWaawBHSTXkWrc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>No, this isn't the headline-grabbing<a href="https://www.techradar.com/computing/macbooks/apples-touchscreen-macbook-pro-is-finally-here-and-yes-touching-a-macbook-screen-feels-totally-and-wonderfully-natural"> new MacBook Pro with an OLED touchscreen</a> and a thinner, lighter build. Alongside introducing those new models, Apple is sticking with a trend I'm a big fan of: yearly updates that ensure the entry-level MacBook Pro remains a solid proposition, with Apple's latest silicon and other top-end specs under the hood.</p><p>Apple hasn't changed much with the 2026 14-inch MacBook Pro, but it didn't need to. As the entry-level Pro, and a step up from the MacBook Air in terms of specs, it offers more ports in a familiar design that's slightly bulkier than the Air, but still plenty portable. You also get a very capable 14-inch Liquid Retina XDR mini-LED display with a notch at the top, a clicky-clacky keyboard with nice travel, a larger trackpad, and great sound with Spatial Audio and Dolby Atmos support.</p><p>The big change is the M6 chip under the hood, with this model joining the still-available M5 Pro and M5 Max models. Those chips, while older, are more powerful, but don't let the M6 Pro's entry-level positioning fool you: Apple's latest silicon is no slouch, delivering excellent everyday performance with plenty of power for more intensive tasks, including photo and video editing, coding, and AI work.</p><p>I've been using the 14-inch MacBook Pro with M6 for the best part of a week, and it's been smooth sailing. It's handled my daily mix of productivity and creative work in apps like Slack, Safari, Google Chrome, Notes, Pages, Pixelmator Pro, and Final Cut Pro, running alongside Messages and FaceTime, effortlessly, without me needing to quit or close anything. The configuration I'm testing pairs the M6's 12-core CPU — split between two super cores, four performance cores, and six efficiency cores — with a 12-core GPU and Dual 16-core Neural Engine, and the base 16GB of RAM and 1TB of storage.</p><div class="product"><a data-dimension112="c8d43462-d936-11f1-941f-031c3e0b70c6" data-action="Deal Block" data-label="Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value." data-dimension48="Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="iN7P7td2TRSju3aJpPQXGA" name="value4" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/iN7P7td2TRSju3aJpPQXGA-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c8d43462-d936-11f1-941f-031c3e0b70c6" data-action="Deal Block" data-label="Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value." data-dimension48="Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-design"><span>Apple 14-inch MacBook Pro (M6) Review: Design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Y8zi2fWbTD2o8dt9fmwLsc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/Y8zi2fWbTD2o8dt9fmwLsc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Same design as M5 Pro, with plenty of ports</strong></li><li><strong>Excellent 14.2-inch Liquid Retina XDR display with ProMotion</strong></li><li><strong>Comfortable keyboard, oversized trackpad, and 12MP Center Stage camera</strong></li></ul><p>The M6 14-inch MacBook Pro sticks with the well-loved and well-tested design of recent Pro models. It's a little bulkier than the Air on account of its plentiful connectivity options, which include three Thunderbolt 4/USB-C ports, an HDMI port, an SD card slot, a headphone jack, and a MagSafe 3 port.</p><p>It's the same sleek design as the M5, M4, and even M3 versions that came before it. It's a design I know well, and one I use daily myself, and I appreciate that it doesn't feel too light or flimsy, but also not too heavy at just 3.4 pounds. </p><p>It keeps the same overall dimensions as last year's 14-inch Pro at 12.31 x 8.71 x 0.61 inches. You also get the same two color choices, Space Black or Silver; my review model is Silver, and it contrasts quite nicely with the darker, mirrored Apple logo on the rear — unlike the logo on the newly <a href="https://www.techradar.com/computing/macbooks/heres-the-secret-behind-the-return-of-the-illuminated-apple-logo-on-the-back-of-the-new-touchscreen-macbook-pro">redesigned touchscreen MacBook Pro</a>, though, this one doesn't light up.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HVH3Q6tyPYC3g7UrKpJSrc-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eE3ycmj2VBZB22CsV7vAoc-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure></figure><p>The M6 Pro also doesn't pack Apple's fancy <a href="https://www.techradar.com/computing/macbooks/whats-the-tech-inside-the-touchscreen-macbook-pros-proled-xdr-screen-heres-why-the-tandem-oled-panel-is-important">new tandem OLED display</a>, which is a stunner, with especially impressive contrast and the added benefit of not having the notch. The 14.2-inch Liquid Retina XDR display here is no slouch, though, and even with that higher-end model's arrival, this remains one of the best laptop screens on the market.</p><p>It supports refresh rates up to 120Hz thanks to ProMotion, and delivers a 3024 x 1964 resolution with vibrant colors and excellent contrast, including wonderfully inky blacks. I've found it great for photo editing in Photos or <a href="https://www.techradar.com/computing/websites-apps/embargo-9am-et-january-28-2026-i-tried-apple-creator-studio-and-it-feels-like-a-return-to-apples-creative-roots">Pixelmator Pro</a>, video editing in iMovie, CapCut, or Final Cut Pro, streaming videos, FaceTime calls, and even the more straightforward task of writing this review. I always appreciate those inky blacks as I type away.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NR7MHfVcdmARaYSqrVtgDc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/NR7MHfVcdmARaYSqrVtgDc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>I've become used to the rectangular cutout notch centered at the top of the display, and I'm still confident that if you've never experienced it before, any initial annoyance at its presence will quickly fade. I am eyeing the<a href="https://www.techradar.com/computing/macbooks/whats-the-tech-inside-the-touchscreen-macbook-pros-proled-xdr-screen-heres-why-the-tandem-oled-panel-is-important"> pill-shaped Dynamic Island on the more expensive MacBook Pro</a>, but it's really not a necessity. </p><p>Here, the menu bar wraps around the notch, which houses a 12-megapixel Center Stage camera that keeps you in the frame and looking sharp during video calls. It also supports Portrait mode to blur your background, and you can use the edges of the screen as a ring light in low lighting conditions.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Er9SH7bv7cjsawKpNZUWvc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/Er9SH7bv7cjsawKpNZUWvc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><div class="product"><a data-dimension112="c8d436d8-d936-11f1-8225-c595ffe4c843" data-action="Deal Block" data-label="The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures." data-dimension48="The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="TxFSCBAzCEeX6xpvqBbnh9" name="design 4" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TxFSCBAzCEeX6xpvqBbnh9-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c8d436d8-d936-11f1-8225-c595ffe4c843" data-action="Deal Block" data-label="The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures." data-dimension48="The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-specs"><span>Apple 14-inch MacBook Pro (M6) Review: Specs</span></h3><div ><table><caption>Apple MacBook Pro 14-inch (M6/M5 Pro/M5 Max) specs</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>MacBook Pro 14-inch (M5)</p></th><th  ><p>MacBook Pro 14-inch (M5 Pro)</p></th><th  ><p>MacBook Pro 14-inch (M5 Max)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Price</p></td><td  ><p>$1,999 / £1,999 / AU$3,199</p></td><td  ><p>$2,199 / £2,199 / AU$3,499</p></td><td  ><p>$3,599 / £1,999 / AU$5,799</p></td></tr><tr><td class="firstcol " ><p>CPU</p></td><td  ><p>M6 12-core</p></td><td  ><p>M5 Pro 15-core</p></td><td  ><p>M5 Max 18-core</p></td></tr><tr><td class="firstcol " ><p>GPU</p></td><td  ><p>12-core</p></td><td  ><p>16-core</p></td><td  ><p>32-core</p></td></tr><tr><td class="firstcol " ><p>RAM</p></td><td  ><p>16GB unified memory</p></td><td  ><p>24GB unified memory</p></td><td  ><p>36GB unified memory</p></td></tr><tr><td class="firstcol " ><p>Storage</p></td><td  ><p>1TB SSD</p></td><td  ><p>1TB SSD</p></td><td  ><p>2TB SSD</p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>14-inch Liquid Retina XDR display (3024 x 1964), 120Hz</p></td><td  ><p>14-inch Liquid Retina XDR display (3024 x 1964), 120Hz</p></td><td  ><p>14-inch Liquid Retina XDR display (3024 x 1964), 120Hz</p></td></tr><tr><td class="firstcol " ><p>Ports</p></td><td  ><p>3x Thunderbolt 4 (USB-C), HDMI, SDXC card slot, 3.5mm headphone jack, MagSafe 3</p></td><td  ><p>3x Thunderbolt 5 (USB-C), HDMI, SDXC card slot, 3.5mm headphone jack, MagSafe 3</p></td><td  ><p>3x Thunderbolt 5 (USB-C), HDMI, SDXC card slot, 3.5mm headphone jack, MagSafe 3</p></td></tr><tr><td class="firstcol " ><p>Wireless</p></td><td  ><p>Wi‑Fi 7 (802.11be), Bluetooth 6, and Thread</p></td><td  ><p>Wi‑Fi 7 (802.11be), Bluetooth 6, and Thread</p></td><td  ><p>Wi‑Fi 7 (802.11be), Bluetooth 6, and Thread</p></td></tr><tr><td class="firstcol " ><p>Weight </p></td><td  ><p>3.4 lbs (1.55kg)</p></td><td  ><p>3.5 lbs (1.60kg)</p></td><td  ><p>3.6 lbs (1.62kg)</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>12.31 x 8.71 x 0.61 inches (31.26 x 22.12 x 1.55cm)</p></td><td  ><p>12.31 x 8.71 x 0.61 inches (31.26 x 22.12 x 1.55cm)</p></td><td  ><p>12.31 x 8.71 x 0.61 inches (31.26 x 22.12 x 1.55cm)</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-performance"><span>Apple 14-inch MacBook Pro (M6) Review: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2YkpQA8C7N4PNNYn5DJaic" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/2YkpQA8C7N4PNNYn5DJaic-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>M6 is an excellent chip</strong></li><li><strong>Handles everyday multitasking, creative apps, and gaming with ease</strong></li><li><strong>Apple's N1 chip brings support for latest Wi-Fi and Bluetooth standards</strong></li></ul><p>Any Mac with Apple silicon really pushes the value meter, and the M6 inside the MacBook Pro is no different. But that also means that if you have an M5, M4, M3, or even an older MacBook Pro or <a href="https://www.techradar.com/computing/macbooks/i-upgraded-to-the-macbook-air-m5-at-last-and-boy-is-it-fast">MacBook Air</a>, and its performance is still good enough for your needs, you likely don't need to rush to upgrade just yet.</p><p>The M6 14-inch Pro sits alongside the M5 Pro and M5 Max, and only one chip configuration is available as the entry-level option. It's a 12-core CPU — made up of two super cores, four performance cores, and six efficiency cores — alongside a 12-core GPU and a Dual 16-core Neural Engine. While the M5 Pro and M5 Max can outperform it on the GPU front, those chips don't feature efficiency cores in the CPU or the doubled-up Neural Engine. The M6 starts with 16GB of RAM and 1TB of storage — the configuration I've been testing — but can be specced with up to 32GB of RAM and 4TB of storage.</p><p>So just how good is the M6 chip inside the 14-inch MacBook Pro? Well, quantitatively, it scored 4,752 in Geekbench 6's single-core test and 21,184 in multi-core. In Geekbench 7, it hit 4,027 single-core and 22,305 multi-core. Compare that to the M5-powered 14-inch MacBook Pro, which scored 4,288 and 17,926 in Geekbench 6, respectively. That's a considerable improvement of around 11% in single-core performance and 18% in multi-core. It also shows off the M6's multitasking chops and efficiency, the latter of which is mission-critical for a laptop with a battery inside — more on that below.</p><p>On the storage front, the SSD is largely unchanged. In the Blackmagic Disk Speed Test, the M6 MacBook Pro clocked read speeds of 6,684.6 MB/s and write speeds of 6,501.6 MB/s. That's essentially on par with the M5 model, which managed 6,619.7 MB/s read and 6,517 MB/s write. So, no major improvement here, but not a step backwards either.</p><p>Over the past few days, I've put the 14-inch MacBook Pro with M6 through its paces as my daily machine. I regularly use Slack, Google Chrome, Safari — both browsers with dozens of tabs open, as I don't love closing them — Notes, Photos, Pixelmator Pro, Siri, and Music, alongside Messages and the occasional FaceTime or iPhone Mirroring session. I also put it through some video exports and project-creation work, mainly for social video at 2K or 4K, using iMovie, Final Cut Pro, and Edits. I also spent some time gaming with titles like <em>Mini Metro</em>, <em>Mini Motorways</em>, and <a href="https://www.techradar.com/news/how-disneys-dreamlight-valley-made-me-feel-like-a-kid-again"><em>Disney Dreamlight Valley</em></a>.</p><p>Apple Intelligence is another area where the M6 feels right at home. Siri AI was particularly quick in my testing, especially with multimodal tasks, such as asking it about items on-screen or handling multi-step processes. <a href="https://www.techradar.com/computing/websites-apps/apple-creator-studio-is-getting-even-better-with-new-ai-tools-and-a-big-final-cut-pro-upgrade">Apple's Creator Studio improvements</a> also ran smoothly, including Generative Fill in Pixelmator Pro. These are the kinds of tasks that show off the M6's Neural Engine, and I didn't have to wait around for results. </p><p>Generative Fill in Pixelmator Pro, as part of Creator Studio, is really impressive, and while it can take a beat to process, it's on a par with Photoshop's Generative Fill. Take a look at the example below, where I added a river below a photo of a <a href="https://www.techradar.com/vehicle-tech/hybrid-electric-vehicles/just-silly-enough-to-be-perfect-ive-seen-rivians-ghostbusters-ecto-r1-in-action">Rivian R2</a> in a parking garage.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wkyRAnBtdaRwohkZGs4Lnc-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qzb2bYnMZ7vMEg4zkVMDqc-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MfgDn69apDBmq7hXWuA46c-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure></figure><p>With plenty of apps open and a demanding workload running, I did occasionally hear the fans kick in, but never for sustained periods. For the most part, the MacBook Pro remained quiet, even with my usual mix of productivity and creative apps running.</p><p>The M6 doesn't quite beat the <a href="https://www.techradar.com/computing/macbooks/apple-macbook-pro-14-inch-m5-2025">M5 Pro or M5 Max 14-inch MacBook Pro models</a> for more intensive tasks, like larger video exports. It can certainly hold its own, but those jobs take a little longer, and the fans might kick in along the way. For everyday use and then some, though, whether that's photo or video editing, music creation, or even gaming, the 14-inch MacBook Pro with M6 easily holds its own.</p><p>And that's the case whether you're plugged in or unplugged and running on battery. I didn't notice any performance throttling when switching to battery power, so you can expect the same capable performance without being tethered to an outlet.</p><p>Beyond adding the M6 chip, Apple also upgraded the connectivity specs, with the in-house-made N1 wireless chip bringing support for Wi-Fi 7, Bluetooth 6, and the Thread smart-home standard.</p><div class="product"><a data-dimension112="c8d437d2-d936-11f1-af72-e3d79e3ca6d8" data-action="Deal Block" data-label="AirPods 5" data-dimension48="AirPods 5" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="wA9dwiLeVuWMMnEvfdk3zm" name="performance 4.5 stars" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/wA9dwiLeVuWMMnEvfdk3zm-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>I’ve found the Pro offers fast connectivity, mostly through my at-home network powered by Eero Pro 6s, and Bluetooth 6 provides a stable connection with my <a href="https://www.techradar.com/phones/airpods-5-and-airpods-5-with-wireless-charging-are-like-a-greatest-hits-rollout-of-airpods-pro-just-without-the-hearing-health-or-heart-rate-modules" data-dimension112="c8d437d2-d936-11f1-af72-e3d79e3ca6d8" data-action="Deal Block" data-label="AirPods 5" data-dimension48="AirPods 5" data-dimension25="">AirPods 5</a>, <a href="https://www.techradar.com/audio/earbuds-airpods/airpods-pro-3-won-me-over-in-less-than-a-week-thanks-to-these-key-upgrades-heres-why">AirPods Pro 3,</a> and <a href="https://www.techradar.com/audio/headphones/beats-360-are-official-with-a-distinct-new-design-and-ive-been-wearing-the-cans-for-weeks">Beats 360</a>.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c8d437d2-d936-11f1-af72-e3d79e3ca6d8" data-action="Deal Block" data-label="AirPods 5" data-dimension48="AirPods 5" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-battery-life"><span>Apple 14-inch MacBook Pro (M6) Review: Battery Life</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HVH3Q6tyPYC3g7UrKpJSrc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/HVH3Q6tyPYC3g7UrKpJSrc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>All-day battery life</strong></li><li><strong>Beats Apple's own web-browsing estimate of 16 hours</strong></li><li><strong>Lasted an impressive 19 hours and 5 minutes in our browsing test</strong></li></ul><p>Unsurprisingly, the 14-inch MacBook Pro remains a battery-life champ with the M6 inside. Since Apple switched to its own in-house chips, performance, efficiency, and battery life have all improved compared to its previous Intel-powered laptops.</p><p>The M6 model features a 72.4-watt-hour lithium-polymer battery like the M5 before it, with Apple promising up to 24 hours of video playback, 16 hours of web browsing, and, as always, "all-day battery life." You can still charge it either with MagSafe — Apple includes a USB-C to MagSafe cable in the box — or via USB-C.</p><p>Even with pretty heavy use, the 14-inch MacBook Pro can comfortably last a full workday, and might stretch to multiple days without charging, depending on what you're doing. That's seriously impressive — and as I noted above, performance stays fast whether you're plugged in or running on battery.</p><div class="product"><a data-dimension112="c8d438c2-d936-11f1-b7e8-1ba5584589c0" data-action="Deal Block" data-label="M5-powered 14-inch MacBook Pro" data-dimension48="M5-powered 14-inch MacBook Pro" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="39VPGi2xkBD3ZbnQSZzz6h" name="battery 4.5 stars" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/39VPGi2xkBD3ZbnQSZzz6h-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>In the TechRadar and Future PLC labs test, the 14-inch MacBook Pro with M6 lasted an impressive 19 hours, 5 minutes, and 30 seconds in our web-browsing test. That's a fantastic result, beating Apple's own 16-hour web browsing estimate, and around 50 minutes longer than the previous <a href="https://www.techradar.com/computing/macbooks/apple-macbook-pro-14-inch-m5-2025" data-dimension112="c8d438c2-d936-11f1-b7e8-1ba5584589c0" data-action="Deal Block" data-label="M5-powered 14-inch MacBook Pro" data-dimension48="M5-powered 14-inch MacBook Pro" data-dimension25="">M5-powered 14-inch MacBook Pro</a>.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c8d438c2-d936-11f1-b7e8-1ba5584589c0" data-action="Deal Block" data-label="M5-powered 14-inch MacBook Pro" data-dimension48="M5-powered 14-inch MacBook Pro" data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-should-i-buy-the-apple-14-inch-macbook-pro-with-m6"><span>Should I buy the Apple 14-inch MacBook Pro with M6?</span></h2><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy the 14-inch MacBook Pro with M6 if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You're ready for an M-series MacBook Pro</strong></p></div><div class="card__description"><p>You get the modern MacBook Pro experience, plenty of performance from the M6 paired with 16GB of RAM and 1TB of storage to start, an excellent display, and long battery life. If you're still holding onto an Intel-powered MacBook Pro, now is an excellent time to make the jump to Apple silicon.</p></div><div class="card__description"><p><br /><strong>✅ You want excellent performance and battery life</strong></p></div><div class="card__description"><p>The M6 handles creative workloads with ease, and the 14-inch MacBook Pro lasted over 19 hours in our web-browsing test.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don&#39;t buy the 14-inch MacBook Pro with M6 if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You need a bigger screen</strong></p></div><div class="card__description"><p>If you want a bigger screen you'd be better off looking at the 15-inch MacBook Air, 16-inch MacBook Pro, or the 16-inch MacBook Pro with PROLED XDR Display.</p></div><div class="card__description"><p><br /><strong>❌ You need the most powerful MacBook Pro</strong></p></div><div class="card__description"><p>Since this only has the M6 inside, those who need even more performance — say, to run powerful AI models on-device or handle more creative, intensive tasks — should look at the M5 Pro or M5 Max MacBook Pros, available with or without the PROLED XDR Display.</p></div></div></div></div><h2 class="article-body__section" id="section-how-i-tested-the-apple-14-inch-macbook-pro-with-m6"><span>How I tested the Apple 14-inch MacBook Pro with M6</span></h2><p>I spent five days using the 14-inch MacBook Pro with M6 as one of my daily work machines, taking it through the kind of workload I'd typically throw at my own MacBook. That meant plenty of writing, editing, and multitasking, with dozens of tabs open across Safari and Chrome, with Slack, Notes, Messages, and other everyday apps running alongside creative tools like Pixelmator Pro.</p><p>I also tested how well the M6 handled more demanding tasks, including video exports, Apple Intelligence features, and gaming. I compared its performance with the M5 Pro-powered 14-inch MacBook Pro and an M4 14-inch MacBook Pro, and I also used it plugged in and on battery to see whether performance changed when untethered.</p><p><em>First reviewed November 2026.</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/computing/macbooks/the-new-m6-macbook-pro-is-a-speed-boost-not-a-reinvention-and-im-fine-with-that</link>
                                                                            <description>
                            <![CDATA[ The M6-powered 14-inch MacBook Pro is a familiar but excellent laptop with impressive performance, outstanding battery life, and better connectivity. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ET6ZpD7KCtP8e8PbF3wNCW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cC3HfEzdLaciYvVKWkdGrc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 14:00:00 +0000</pubDate>                                                                                                                                <updated>Thu, 05 Nov 2026 16:34:34 +0000</updated>
                                                                                                                                            <category><![CDATA[Macbooks]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                                                                <author><![CDATA[ jacob.krol@futurenet.com (Jacob Krol) ]]></author>                    <dc:creator><![CDATA[ Jacob Krol ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hKSCqxtWYDuUtwZseV9E3C-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob Krol is the US Managing Editor for News at TechRadar overseeing the daily rollout of content and coordinating with various section leads. He joined TechRadar in May of 2024 and is based out of New York City. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Prior to joining TechRadar, Jacob was Senior Editor, Technology and Commerce at TheStreet focusing on covering the latest products in the consumer tech space from how to pre-order to finding the best deals with reviews, analysis, and features in between. Before that, Jacob was a founding member at CNN Underscored, building and growing the electronics section. He also assisted in building out social media channels, programming the homepage, and establishing protocols for testing various products for one-off reviews and best-of guides. Prior to starting at CNN, Jacob was a Tech Writer at Mashable focusing on news, reviews, and evergreen content. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;He has experience covering major players in the space like Apple, Samsung, Google, and Microsoft as well as testing products like smartphones, tablets, smartwatches, smart home gadgets, speakers, earbuds, headphones, TVs, and more futuristic tech like smart glasses.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Jacob received a Bachelor of Arts in Media &amp; Communication cum laude with a minor in Innovation and Entrepreneurship from Muhlenberg College. During his time on campus, he interned at CNET, Fox News, CNN, and CNBC, while also running his own tech blog, NJTechReviews, which he founded in 2010.&lt;/p&gt;&lt;p&gt;When not playing with a new gadget or breaking down the latest news, you can find Jacob listening to Bruce Springsteen, posting on TikTok, building a Lego set, watching a Star Wars show, or playing with his family dogs, Georgia and Charlie.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/cC3HfEzdLaciYvVKWkdGrc-1920-80.jpg">
                                                            <media:credit><![CDATA[Jacob Krol/Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Apple 14-inch MacBook Pro M6 review]]></media:description>                                                            <media:text><![CDATA[Apple 14-inch MacBook Pro M6 review]]></media:text>
                                <media:title type="plain"><![CDATA[Apple 14-inch MacBook Pro M6 review]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cC3HfEzdLaciYvVKWkdGrc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-at-a-glance-apple-14-inch-macbook-pro-m6-review"><span>At a glance: Apple 14-inch MacBook Pro (M6) Review</span></h2><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/dtctBNapCHjhmnEvQw5r9R.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What is it?</h3><div class="card__description-wrapper"><div class="card__description"><p>Apple's latest update to the 14-inch MacBook Pro doesn't change much, but it keeps the line ticking over with the new M6 chip for improved overall performance and better connectivity, all in the same familiar build.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/pCUGu3BfJz4w4y5E8NHmAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">What does it cost?</h3><div class="card__description-wrapper"><div class="card__description"><p>The 14-inch MacBook Pro with M6 starts at $1,999 / £1,999 / AU$3,199, with 16GB of RAM and 1TB of storage. You can configure it with up to 32GB of RAM and 4TB of storage, add a Nano-Texture display, or step up to the more powerful M5 Pro or M5 Max chips.</p></div></div></div></div><div class="card card--standard card--rows-3 card--align-inline"><div class="card-image-widthsetter"><p class="vanilla-image-block"  style="padding-top:56.25%;"><img style="width: 100%" class="card__image" src="https://cdn.mos.cms.futurecdn.net/XnvYcAPALpRtRXfSaLLEAR.png" alt="icons for review" /></p></div><div class="card__content"><h3 class="card__title">Alternatives</h3><div class="card__description-wrapper"><div class="card__description"><p>If you need more power or a bigger screen, there's the 16-inch MacBook Pro with M6, or the 14-inch and 16-inch models with M5 Pro or M5 Max. The 13-inch and 15-inch M5 MacBook Air are better picks if you want a more portable build and can live with slightly less performance. If you want an OLED touchscreen and a thinner, lighter design, you'll need to look at the more expensive PROLED 14-inch or 16-inch models with the M5 Pro or M5 Max.</p></div></div></div></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793883030756-48nqkdi61 *, #fv-chart-1793883030756-48nqkdi61 *:before, #fv-chart-1793883030756-48nqkdi61 *:after, #fv-chart-1793883030756-48nqkdi61-slideshow *, #fv-chart-1793883030756-48nqkdi61-slideshow *:before, #fv-chart-1793883030756-48nqkdi61-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793883030756-48nqkdi61, #fv-chart-1793883030756-48nqkdi61-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793883030756-48nqkdi61 { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793883030756-48nqkdi61.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793883030756-48nqkdi61.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-1793883030756-48nqkdi61 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793883030756-48nqkdi61-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793883030756-48nqkdi61-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793883030756-48nqkdi61-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-1793883030756-48nqkdi61-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-1793883030756-48nqkdi61-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793883030756-48nqkdi61-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793883030756-48nqkdi61-slideshow .fv-nav-btn.disabled, #fv-chart-1793883030756-48nqkdi61-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-1793883030756-48nqkdi61-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793883030756-48nqkdi61-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-1793883030756-48nqkdi61-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793883030756-48nqkdi61 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-row, #fv-chart-1793883030756-48nqkdi61 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793883030756-48nqkdi61 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793883030756-48nqkdi61 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793883030756-48nqkdi61 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793883030756-48nqkdi61 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793883030756-48nqkdi61.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793883030756-48nqkdi61 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-pie-container, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-stacked-product, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-grouped-bar-product, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-stacked-product, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793883030756-48nqkdi61.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-1793883030756-48nqkdi61.mobile-view .fv-bar-label, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-grouped-product-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-label, #fv-chart-1793883030756-48nqkdi61.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-1793883030756-48nqkdi61.mobile-view .fv-bar-container, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-cluster, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-container, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-x-axis-wrapper, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-x-axis-label-space, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-x-axis-chart-space, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-benchmark-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-dropdown-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-carousel-nav-btn, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-chart-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-chart-subhead, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-header, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select-wrapper, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-vs, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select-container, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-versus-select, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793883030756-48nqkdi61.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-1793883030756-48nqkdi61.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-dials-grid, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-dial-title, #fv-chart-1793883030756-48nqkdi61.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793883030756-48nqkdi61.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793883030756-48nqkdi61 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-row, #fv-chart-1793883030756-48nqkdi61 .fv-stacked-product, #fv-chart-1793883030756-48nqkdi61 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-label, #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-bar-container, #fv-chart-1793883030756-48nqkdi61 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793883030756-48nqkdi61 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793883030756-48nqkdi61 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793883030756-48nqkdi61 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .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-1793883030756-48nqkdi61 .fv-stl-shop-all-logo, #fv-chart-1793883030756-48nqkdi61 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793883030756-48nqkdi61 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793883030756-48nqkdi61 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793883030756-48nqkdi61.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Apple MacBook Pro 14-inch (2026, M6) scorecard",  "description": "How the Apple MacBook Pro 14-inch (2026, M6) scored in our review",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-05T12:50:30.756Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Apple MacBook Pro 14-inch (2026, M6)",    "Value",    "Design",    "Performance",    "Battery life",    "Overall",    "Group 1",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Value",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Design",      "value": 4,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Performance",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Battery life",      "value": 4.5,      "unitText": "",      "maxValue": 5    },    {      "@type": "PropertyValue",      "name": "Apple MacBook Pro 14-inch (2026, M6) – Overall",      "value": 4,      "unitText": "",      "maxValue": 5    }  ]}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-05T12:50:30.756Z","state":{"data":[{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Value","value":4,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Design","value":4,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Performance","value":4.5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Battery life","value":4.5,"unit":"","maxValue":5},{"productName":"Apple MacBook Pro 14-inch (2026, M6)","attribute":"Overall","value":4,"unit":"","maxValue":5}],"products":["Apple MacBook Pro 14-inch (2026, M6)"],"attributes":["Value","Design","Performance","Battery life","Overall"],"selectedProducts":["Apple MacBook Pro 14-inch (2026, M6)"],"selectedPrimaryProduct":"Apple MacBook Pro 14-inch (2026, M6)","selectedAttributes":["Value","Design","Performance","Battery life","Overall"],"productColors":[{"productName":"Apple MacBook Pro 14-inch (2026, M6)","color":"#E8238C"}],"initialProductColors":[{"productName":"Apple MacBook Pro 14-inch (2026, M6)","color":"#E8238C"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Value","Design","Performance","Battery life","Overall"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Apple MacBook Pro 14-inch (2026, M6) scorecard","subhead":"How the Apple MacBook Pro 14-inch (2026, M6) scored in our review","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}</script><div id="fv-chart-1793883030756-48nqkdi61" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Apple MacBook Pro 14-inch (2026, M6) scorecard</h3><p class="fv-chart-subhead">How the Apple MacBook Pro 14-inch (2026, M6) scored in our review</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793883030756-48nqkdi61-grouped-bar-Group 1" data-chart-type="Bar" data-title="Group 1" data-subhead="How the Apple MacBook Pro 14-inch (2026, M6) scored in our review" data-caption="" data-grouped-show-product-name="false" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">Value</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E8238C;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Design</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E8238C;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Performance</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Battery life</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 90%; background-color: #E8238C;" data-target-width="90" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">Overall</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #E8238C;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4</span></div></div></div></div></div></div><table class="sr-only"><caption>Group 1 Data</caption><thead><tr><th>Product</th><th>Value ()</th><th>Design ()</th><th>Performance ()</th><th>Battery life ()</th><th>Overall ()</th></tr></thead><tbody><tr><td>Apple MacBook Pro 14-inch (2026, M6)</td><td>4</td><td>4</td><td>4.5</td><td>4.5</td><td>4</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793883030756-48nqkdi61', false); });      } else {        initialize('fv-chart-1793883030756-48nqkdi61', false);      }    })();      </script></div><h2 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-value-for-money"><span>Apple 14-inch MacBook Pro (M6) Review: Value for money</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sMzuMKLXbWaawBHSTXkWrc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/sMzuMKLXbWaawBHSTXkWrc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>No, this isn't the headline-grabbing<a href="https://www.techradar.com/computing/macbooks/apples-touchscreen-macbook-pro-is-finally-here-and-yes-touching-a-macbook-screen-feels-totally-and-wonderfully-natural"> new MacBook Pro with an OLED touchscreen</a> and a thinner, lighter build. Alongside introducing those new models, Apple is sticking with a trend I'm a big fan of: yearly updates that ensure the entry-level MacBook Pro remains a solid proposition, with Apple's latest silicon and other top-end specs under the hood.</p><p>Apple hasn't changed much with the 2026 14-inch MacBook Pro, but it didn't need to. As the entry-level Pro, and a step up from the MacBook Air in terms of specs, it offers more ports in a familiar design that's slightly bulkier than the Air, but still plenty portable. You also get a very capable 14-inch Liquid Retina XDR mini-LED display with a notch at the top, a clicky-clacky keyboard with nice travel, a larger trackpad, and great sound with Spatial Audio and Dolby Atmos support.</p><p>The big change is the M6 chip under the hood, with this model joining the still-available M5 Pro and M5 Max models. Those chips, while older, are more powerful, but don't let the M6 Pro's entry-level positioning fool you: Apple's latest silicon is no slouch, delivering excellent everyday performance with plenty of power for more intensive tasks, including photo and video editing, coding, and AI work.</p><p>I've been using the 14-inch MacBook Pro with M6 for the best part of a week, and it's been smooth sailing. It's handled my daily mix of productivity and creative work in apps like Slack, Safari, Google Chrome, Notes, Pages, Pixelmator Pro, and Final Cut Pro, running alongside Messages and FaceTime, effortlessly, without me needing to quit or close anything. The configuration I'm testing pairs the M6's 12-core CPU — split between two super cores, four performance cores, and six efficiency cores — with a 12-core GPU and Dual 16-core Neural Engine, and the base 16GB of RAM and 1TB of storage.</p><div class="product"><a data-dimension112="c8d43462-d936-11f1-941f-031c3e0b70c6" data-action="Deal Block" data-label="Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value." data-dimension48="Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="iN7P7td2TRSju3aJpPQXGA" name="value4" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/iN7P7td2TRSju3aJpPQXGA-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c8d43462-d936-11f1-941f-031c3e0b70c6" data-action="Deal Block" data-label="Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value." data-dimension48="Just like the 14-inch MacBook Pro with M5, the new-for-2026 model with M6 starts at $1,999 / 1,999 / AU$3,199. Yes, that M5 model got a price hike earlier this year, but it’s good to see that Apple didn’t push this further, and with this price tag getting you the M6 chip, 16GB of RAM, and 1TB of storage, it's excellent value." data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-design"><span>Apple 14-inch MacBook Pro (M6) Review: Design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Y8zi2fWbTD2o8dt9fmwLsc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/Y8zi2fWbTD2o8dt9fmwLsc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Same design as M5 Pro, with plenty of ports</strong></li><li><strong>Excellent 14.2-inch Liquid Retina XDR display with ProMotion</strong></li><li><strong>Comfortable keyboard, oversized trackpad, and 12MP Center Stage camera</strong></li></ul><p>The M6 14-inch MacBook Pro sticks with the well-loved and well-tested design of recent Pro models. It's a little bulkier than the Air on account of its plentiful connectivity options, which include three Thunderbolt 4/USB-C ports, an HDMI port, an SD card slot, a headphone jack, and a MagSafe 3 port.</p><p>It's the same sleek design as the M5, M4, and even M3 versions that came before it. It's a design I know well, and one I use daily myself, and I appreciate that it doesn't feel too light or flimsy, but also not too heavy at just 3.4 pounds. </p><p>It keeps the same overall dimensions as last year's 14-inch Pro at 12.31 x 8.71 x 0.61 inches. You also get the same two color choices, Space Black or Silver; my review model is Silver, and it contrasts quite nicely with the darker, mirrored Apple logo on the rear — unlike the logo on the newly <a href="https://www.techradar.com/computing/macbooks/heres-the-secret-behind-the-return-of-the-illuminated-apple-logo-on-the-back-of-the-new-touchscreen-macbook-pro">redesigned touchscreen MacBook Pro</a>, though, this one doesn't light up.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HVH3Q6tyPYC3g7UrKpJSrc-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eE3ycmj2VBZB22CsV7vAoc-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure></figure><p>The M6 Pro also doesn't pack Apple's fancy <a href="https://www.techradar.com/computing/macbooks/whats-the-tech-inside-the-touchscreen-macbook-pros-proled-xdr-screen-heres-why-the-tandem-oled-panel-is-important">new tandem OLED display</a>, which is a stunner, with especially impressive contrast and the added benefit of not having the notch. The 14.2-inch Liquid Retina XDR display here is no slouch, though, and even with that higher-end model's arrival, this remains one of the best laptop screens on the market.</p><p>It supports refresh rates up to 120Hz thanks to ProMotion, and delivers a 3024 x 1964 resolution with vibrant colors and excellent contrast, including wonderfully inky blacks. I've found it great for photo editing in Photos or <a href="https://www.techradar.com/computing/websites-apps/embargo-9am-et-january-28-2026-i-tried-apple-creator-studio-and-it-feels-like-a-return-to-apples-creative-roots">Pixelmator Pro</a>, video editing in iMovie, CapCut, or Final Cut Pro, streaming videos, FaceTime calls, and even the more straightforward task of writing this review. I always appreciate those inky blacks as I type away.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NR7MHfVcdmARaYSqrVtgDc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/NR7MHfVcdmARaYSqrVtgDc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>I've become used to the rectangular cutout notch centered at the top of the display, and I'm still confident that if you've never experienced it before, any initial annoyance at its presence will quickly fade. I am eyeing the<a href="https://www.techradar.com/computing/macbooks/whats-the-tech-inside-the-touchscreen-macbook-pros-proled-xdr-screen-heres-why-the-tandem-oled-panel-is-important"> pill-shaped Dynamic Island on the more expensive MacBook Pro</a>, but it's really not a necessity. </p><p>Here, the menu bar wraps around the notch, which houses a 12-megapixel Center Stage camera that keeps you in the frame and looking sharp during video calls. It also supports Portrait mode to blur your background, and you can use the edges of the screen as a ring light in low lighting conditions.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Er9SH7bv7cjsawKpNZUWvc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/Er9SH7bv7cjsawKpNZUWvc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><div class="product"><a data-dimension112="c8d436d8-d936-11f1-8225-c595ffe4c843" data-action="Deal Block" data-label="The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures." data-dimension48="The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="TxFSCBAzCEeX6xpvqBbnh9" name="design 4" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TxFSCBAzCEeX6xpvqBbnh9-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c8d436d8-d936-11f1-8225-c595ffe4c843" data-action="Deal Block" data-label="The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures." data-dimension48="The keyboard still offers excellent travel, and a decidedly satisfying typing experience. I've written a few articles on this machine, including this review, and I still appreciate the Touch ID sensor baked into the top-right key. It's handy for unlocking your Mac, authenticating, and Apple Pay transactions. Equally, the oversized trackpad makes navigation easy, whether you're using classic point-and-click controls or gestures." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-specs"><span>Apple 14-inch MacBook Pro (M6) Review: Specs</span></h3><div ><table><caption>Apple MacBook Pro 14-inch (M6/M5 Pro/M5 Max) specs</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>MacBook Pro 14-inch (M5)</p></th><th  ><p>MacBook Pro 14-inch (M5 Pro)</p></th><th  ><p>MacBook Pro 14-inch (M5 Max)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Price</p></td><td  ><p>$1,999 / £1,999 / AU$3,199</p></td><td  ><p>$2,199 / £2,199 / AU$3,499</p></td><td  ><p>$3,599 / £1,999 / AU$5,799</p></td></tr><tr><td class="firstcol " ><p>CPU</p></td><td  ><p>M6 12-core</p></td><td  ><p>M5 Pro 15-core</p></td><td  ><p>M5 Max 18-core</p></td></tr><tr><td class="firstcol " ><p>GPU</p></td><td  ><p>12-core</p></td><td  ><p>16-core</p></td><td  ><p>32-core</p></td></tr><tr><td class="firstcol " ><p>RAM</p></td><td  ><p>16GB unified memory</p></td><td  ><p>24GB unified memory</p></td><td  ><p>36GB unified memory</p></td></tr><tr><td class="firstcol " ><p>Storage</p></td><td  ><p>1TB SSD</p></td><td  ><p>1TB SSD</p></td><td  ><p>2TB SSD</p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>14-inch Liquid Retina XDR display (3024 x 1964), 120Hz</p></td><td  ><p>14-inch Liquid Retina XDR display (3024 x 1964), 120Hz</p></td><td  ><p>14-inch Liquid Retina XDR display (3024 x 1964), 120Hz</p></td></tr><tr><td class="firstcol " ><p>Ports</p></td><td  ><p>3x Thunderbolt 4 (USB-C), HDMI, SDXC card slot, 3.5mm headphone jack, MagSafe 3</p></td><td  ><p>3x Thunderbolt 5 (USB-C), HDMI, SDXC card slot, 3.5mm headphone jack, MagSafe 3</p></td><td  ><p>3x Thunderbolt 5 (USB-C), HDMI, SDXC card slot, 3.5mm headphone jack, MagSafe 3</p></td></tr><tr><td class="firstcol " ><p>Wireless</p></td><td  ><p>Wi‑Fi 7 (802.11be), Bluetooth 6, and Thread</p></td><td  ><p>Wi‑Fi 7 (802.11be), Bluetooth 6, and Thread</p></td><td  ><p>Wi‑Fi 7 (802.11be), Bluetooth 6, and Thread</p></td></tr><tr><td class="firstcol " ><p>Weight </p></td><td  ><p>3.4 lbs (1.55kg)</p></td><td  ><p>3.5 lbs (1.60kg)</p></td><td  ><p>3.6 lbs (1.62kg)</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>12.31 x 8.71 x 0.61 inches (31.26 x 22.12 x 1.55cm)</p></td><td  ><p>12.31 x 8.71 x 0.61 inches (31.26 x 22.12 x 1.55cm)</p></td><td  ><p>12.31 x 8.71 x 0.61 inches (31.26 x 22.12 x 1.55cm)</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-performance"><span>Apple 14-inch MacBook Pro (M6) Review: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2YkpQA8C7N4PNNYn5DJaic" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/2YkpQA8C7N4PNNYn5DJaic-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>M6 is an excellent chip</strong></li><li><strong>Handles everyday multitasking, creative apps, and gaming with ease</strong></li><li><strong>Apple's N1 chip brings support for latest Wi-Fi and Bluetooth standards</strong></li></ul><p>Any Mac with Apple silicon really pushes the value meter, and the M6 inside the MacBook Pro is no different. But that also means that if you have an M5, M4, M3, or even an older MacBook Pro or <a href="https://www.techradar.com/computing/macbooks/i-upgraded-to-the-macbook-air-m5-at-last-and-boy-is-it-fast">MacBook Air</a>, and its performance is still good enough for your needs, you likely don't need to rush to upgrade just yet.</p><p>The M6 14-inch Pro sits alongside the M5 Pro and M5 Max, and only one chip configuration is available as the entry-level option. It's a 12-core CPU — made up of two super cores, four performance cores, and six efficiency cores — alongside a 12-core GPU and a Dual 16-core Neural Engine. While the M5 Pro and M5 Max can outperform it on the GPU front, those chips don't feature efficiency cores in the CPU or the doubled-up Neural Engine. The M6 starts with 16GB of RAM and 1TB of storage — the configuration I've been testing — but can be specced with up to 32GB of RAM and 4TB of storage.</p><p>So just how good is the M6 chip inside the 14-inch MacBook Pro? Well, quantitatively, it scored 4,752 in Geekbench 6's single-core test and 21,184 in multi-core. In Geekbench 7, it hit 4,027 single-core and 22,305 multi-core. Compare that to the M5-powered 14-inch MacBook Pro, which scored 4,288 and 17,926 in Geekbench 6, respectively. That's a considerable improvement of around 11% in single-core performance and 18% in multi-core. It also shows off the M6's multitasking chops and efficiency, the latter of which is mission-critical for a laptop with a battery inside — more on that below.</p><p>On the storage front, the SSD is largely unchanged. In the Blackmagic Disk Speed Test, the M6 MacBook Pro clocked read speeds of 6,684.6 MB/s and write speeds of 6,501.6 MB/s. That's essentially on par with the M5 model, which managed 6,619.7 MB/s read and 6,517 MB/s write. So, no major improvement here, but not a step backwards either.</p><p>Over the past few days, I've put the 14-inch MacBook Pro with M6 through its paces as my daily machine. I regularly use Slack, Google Chrome, Safari — both browsers with dozens of tabs open, as I don't love closing them — Notes, Photos, Pixelmator Pro, Siri, and Music, alongside Messages and the occasional FaceTime or iPhone Mirroring session. I also put it through some video exports and project-creation work, mainly for social video at 2K or 4K, using iMovie, Final Cut Pro, and Edits. I also spent some time gaming with titles like <em>Mini Metro</em>, <em>Mini Motorways</em>, and <a href="https://www.techradar.com/news/how-disneys-dreamlight-valley-made-me-feel-like-a-kid-again"><em>Disney Dreamlight Valley</em></a>.</p><p>Apple Intelligence is another area where the M6 feels right at home. Siri AI was particularly quick in my testing, especially with multimodal tasks, such as asking it about items on-screen or handling multi-step processes. <a href="https://www.techradar.com/computing/websites-apps/apple-creator-studio-is-getting-even-better-with-new-ai-tools-and-a-big-final-cut-pro-upgrade">Apple's Creator Studio improvements</a> also ran smoothly, including Generative Fill in Pixelmator Pro. These are the kinds of tasks that show off the M6's Neural Engine, and I didn't have to wait around for results. </p><p>Generative Fill in Pixelmator Pro, as part of Creator Studio, is really impressive, and while it can take a beat to process, it's on a par with Photoshop's Generative Fill. Take a look at the example below, where I added a river below a photo of a <a href="https://www.techradar.com/vehicle-tech/hybrid-electric-vehicles/just-silly-enough-to-be-perfect-ive-seen-rivians-ghostbusters-ecto-r1-in-action">Rivian R2</a> in a parking garage.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wkyRAnBtdaRwohkZGs4Lnc-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qzb2bYnMZ7vMEg4zkVMDqc-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MfgDn69apDBmq7hXWuA46c-1920-80.jpg" alt="Apple 14-inch MacBook Pro M6 review" /><figcaption><small role="credit">Jacob Krol/Future</small></figcaption></figure></figure><p>With plenty of apps open and a demanding workload running, I did occasionally hear the fans kick in, but never for sustained periods. For the most part, the MacBook Pro remained quiet, even with my usual mix of productivity and creative apps running.</p><p>The M6 doesn't quite beat the <a href="https://www.techradar.com/computing/macbooks/apple-macbook-pro-14-inch-m5-2025">M5 Pro or M5 Max 14-inch MacBook Pro models</a> for more intensive tasks, like larger video exports. It can certainly hold its own, but those jobs take a little longer, and the fans might kick in along the way. For everyday use and then some, though, whether that's photo or video editing, music creation, or even gaming, the 14-inch MacBook Pro with M6 easily holds its own.</p><p>And that's the case whether you're plugged in or unplugged and running on battery. I didn't notice any performance throttling when switching to battery power, so you can expect the same capable performance without being tethered to an outlet.</p><p>Beyond adding the M6 chip, Apple also upgraded the connectivity specs, with the in-house-made N1 wireless chip bringing support for Wi-Fi 7, Bluetooth 6, and the Thread smart-home standard.</p><div class="product"><a data-dimension112="c8d437d2-d936-11f1-af72-e3d79e3ca6d8" data-action="Deal Block" data-label="AirPods 5" data-dimension48="AirPods 5" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="wA9dwiLeVuWMMnEvfdk3zm" name="performance 4.5 stars" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/wA9dwiLeVuWMMnEvfdk3zm-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>I’ve found the Pro offers fast connectivity, mostly through my at-home network powered by Eero Pro 6s, and Bluetooth 6 provides a stable connection with my <a href="https://www.techradar.com/phones/airpods-5-and-airpods-5-with-wireless-charging-are-like-a-greatest-hits-rollout-of-airpods-pro-just-without-the-hearing-health-or-heart-rate-modules" data-dimension112="c8d437d2-d936-11f1-af72-e3d79e3ca6d8" data-action="Deal Block" data-label="AirPods 5" data-dimension48="AirPods 5" data-dimension25="">AirPods 5</a>, <a href="https://www.techradar.com/audio/earbuds-airpods/airpods-pro-3-won-me-over-in-less-than-a-week-thanks-to-these-key-upgrades-heres-why">AirPods Pro 3,</a> and <a href="https://www.techradar.com/audio/headphones/beats-360-are-official-with-a-distinct-new-design-and-ive-been-wearing-the-cans-for-weeks">Beats 360</a>.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c8d437d2-d936-11f1-af72-e3d79e3ca6d8" data-action="Deal Block" data-label="AirPods 5" data-dimension48="AirPods 5" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-apple-14-inch-macbook-pro-m6-review-battery-life"><span>Apple 14-inch MacBook Pro (M6) Review: Battery Life</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HVH3Q6tyPYC3g7UrKpJSrc" name="Apple 14-inch MacBook Pro M6 review" alt="Apple 14-inch MacBook Pro M6 review" src="https://cdn.mos.cms.futurecdn.net/HVH3Q6tyPYC3g7UrKpJSrc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>All-day battery life</strong></li><li><strong>Beats Apple's own web-browsing estimate of 16 hours</strong></li><li><strong>Lasted an impressive 19 hours and 5 minutes in our browsing test</strong></li></ul><p>Unsurprisingly, the 14-inch MacBook Pro remains a battery-life champ with the M6 inside. Since Apple switched to its own in-house chips, performance, efficiency, and battery life have all improved compared to its previous Intel-powered laptops.</p><p>The M6 model features a 72.4-watt-hour lithium-polymer battery like the M5 before it, with Apple promising up to 24 hours of video playback, 16 hours of web browsing, and, as always, "all-day battery life." You can still charge it either with MagSafe — Apple includes a USB-C to MagSafe cable in the box — or via USB-C.</p><p>Even with pretty heavy use, the 14-inch MacBook Pro can comfortably last a full workday, and might stretch to multiple days without charging, depending on what you're doing. That's seriously impressive — and as I noted above, performance stays fast whether you're plugged in or running on battery.</p><div class="product"><a data-dimension112="c8d438c2-d936-11f1-b7e8-1ba5584589c0" data-action="Deal Block" data-label="M5-powered 14-inch MacBook Pro" data-dimension48="M5-powered 14-inch MacBook Pro" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:374px;"><p class="vanilla-image-block" style="padding-top:98.93%;"><img id="39VPGi2xkBD3ZbnQSZzz6h" name="battery 4.5 stars" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/39VPGi2xkBD3ZbnQSZzz6h-1920-80.png" mos="" align="middle" fullscreen="" width="374" height="370" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>In the TechRadar and Future PLC labs test, the 14-inch MacBook Pro with M6 lasted an impressive 19 hours, 5 minutes, and 30 seconds in our web-browsing test. That's a fantastic result, beating Apple's own 16-hour web browsing estimate, and around 50 minutes longer than the previous <a href="https://www.techradar.com/computing/macbooks/apple-macbook-pro-14-inch-m5-2025" data-dimension112="c8d438c2-d936-11f1-b7e8-1ba5584589c0" data-action="Deal Block" data-label="M5-powered 14-inch MacBook Pro" data-dimension48="M5-powered 14-inch MacBook Pro" data-dimension25="">M5-powered 14-inch MacBook Pro</a>.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c8d438c2-d936-11f1-b7e8-1ba5584589c0" data-action="Deal Block" data-label="M5-powered 14-inch MacBook Pro" data-dimension48="M5-powered 14-inch MacBook Pro" data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-should-i-buy-the-apple-14-inch-macbook-pro-with-m6"><span>Should I buy the Apple 14-inch MacBook Pro with M6?</span></h2><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy the 14-inch MacBook Pro with M6 if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You're ready for an M-series MacBook Pro</strong></p></div><div class="card__description"><p>You get the modern MacBook Pro experience, plenty of performance from the M6 paired with 16GB of RAM and 1TB of storage to start, an excellent display, and long battery life. If you're still holding onto an Intel-powered MacBook Pro, now is an excellent time to make the jump to Apple silicon.</p></div><div class="card__description"><p><br /><strong>✅ You want excellent performance and battery life</strong></p></div><div class="card__description"><p>The M6 handles creative workloads with ease, and the 14-inch MacBook Pro lasted over 19 hours in our web-browsing test.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don&#39;t buy the 14-inch MacBook Pro with M6 if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You need a bigger screen</strong></p></div><div class="card__description"><p>If you want a bigger screen you'd be better off looking at the 15-inch MacBook Air, 16-inch MacBook Pro, or the 16-inch MacBook Pro with PROLED XDR Display.</p></div><div class="card__description"><p><br /><strong>❌ You need the most powerful MacBook Pro</strong></p></div><div class="card__description"><p>Since this only has the M6 inside, those who need even more performance — say, to run powerful AI models on-device or handle more creative, intensive tasks — should look at the M5 Pro or M5 Max MacBook Pros, available with or without the PROLED XDR Display.</p></div></div></div></div><h2 class="article-body__section" id="section-how-i-tested-the-apple-14-inch-macbook-pro-with-m6"><span>How I tested the Apple 14-inch MacBook Pro with M6</span></h2><p>I spent five days using the 14-inch MacBook Pro with M6 as one of my daily work machines, taking it through the kind of workload I'd typically throw at my own MacBook. That meant plenty of writing, editing, and multitasking, with dozens of tabs open across Safari and Chrome, with Slack, Notes, Messages, and other everyday apps running alongside creative tools like Pixelmator Pro.</p><p>I also tested how well the M6 handled more demanding tasks, including video exports, Apple Intelligence features, and gaming. I compared its performance with the M5 Pro-powered 14-inch MacBook Pro and an M4 14-inch MacBook Pro, and I also used it plugged in and on battery to see whether performance changed when untethered.</p><p><em>First reviewed November 2026.</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Redmi Note 15 Pro Plus 5G review: the ultimate phone for butterfingers ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-two-minute-review"><span>Redmi Note 15 Pro Plus 5G review: Two-minute review</span></h2><p>You may not have heard of Redmi, but you likely know its parent company, <a href="https://www.techradar.com/news/best-xiaomi-phones">Xiaomi</a>, which regularly features in our coverage of the <a href="https://www.techradar.com/news/best-phone">best phones</a>.</p><p>While Xiaomi focuses on premium smartphones and tablets, Redmi offers solid mid-range smartphones that aim to compete with the similarly priced competition from Google, Samsung, and Nothing.</p><p>Indeed, the Redmi Note 15 Pro Plus 5G stands squarely against the <a href="https://www.techradar.com/phones/google-pixel-phones/google-pixel-10a-review">Google Pixel 10a</a>, <a href="https://www.techradar.com/phones/samsung-galaxy-phones/samsung-galaxy-a57-review">Samsung Galaxy A57</a>, and Nothing Phone 4b in the mid-range category. But while those devices stand out for camera, design, or overall polish, Redmi has chosen to focus on raw durability with the Note 15 Pro Plus 5G.</p><p>The star feature is an SGS 5-star certified Titan Durability frame with Gorilla Glass Victus 2, offering up to 2.5-meter drop resistance alongside flagship-level IP68 and IP69K dust and water resistance. That’s paired with a large 6,500 mAh battery with 100W fast charging — both market-leading at the phone's £350 price point.</p><p>Still, at that price, there’s always a catch. The Redmi Note 15 Pro Plus 5G prioritizes tough hardware over software refinement. The 6.83-inch 120Hz display is sharp and supports Dolby Vision, but aggressive auto-dimming hampers outdoor visibility. The 200MP main camera takes great daylight shots, but the 8MP ultra-wide is mediocre, and there’s no dedicated telephoto lens.</p><p>Meanwhile, the mid-range Snapdragon 7s Gen 4 processor struggles under heavy gaming loads; Xiaomi’s HyperOS has a bundle of ads through native apps, and there’s a general lack of UX refinement, all of which lead to a more sluggish experience than you'll find on other phones.</p><p>You'll notice these trade-offs throughout daily use, but the phone's excellent battery life and solid drop protection make it a champion in its own right.</p><p>If you can live with less polish and the usual mid-range trade-offs, you’ll get something that can withstand much more than most phones. And if you know a chronic butterfinger who can’t keep a phone in their hands — my sister, for instance — the Redmi Note 15 Pro Plus 5G is the exact phone you should buy them.</p><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-price-and-availability"><span>Redmi Note 15 Pro Plus 5G review: price and availability</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XB4AFHEtPQmzsib4BjVf6o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-22" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/XB4AFHEtPQmzsib4BjVf6o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>Launched for £429 in January 2026</strong></li><li><strong>Currently available from ~£349 in the UK and Europe</strong></li><li><strong>Not officially sold in the US or Australia</strong></li></ul><p>The Redmi Note 15 Pro Plus 5G was announced in December 2025 and launched in January 2026 at £429 in the UK. It was quickly followed by launches in India and across Asia, but like many Xiaomi phones, it's not available in the US or Australia.</p><p>Six months later, at the time of writing, the Redmi Note 15 Pro Plus 5G has dropped to around £350 for the model with 8G of RAM and 256GB of storage, the latter of which is double that of its three key competitors — the Pixel 10a, Galaxy A57, and Nothing Phone 4b.</p><p>The upgraded version with 12GB of RAM and 512GB of storage costs just £50 more, offering excellent value for money, especially given the ever-increasing cost of RAM and storage driven by AI. A price of £479 is relatively unheard of in this price bracket, as phones with 512GB usually cost considerably more.</p><p>Like most Redmi phones, there are a few colors to choose from. Mocha Brown features a vegan-leather rear panel paired with a gold frame and matching camera-ring accents. However, this model is slightly thicker and heavier than the Glacier Blue and Black versions, which both feature a fiberglass back with a matte texture and color-matched side rails.</p><ul><li><strong>Value score: 5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-specs"><span>Redmi Note 15 Pro Plus 5G review: specs</span></h2><div ><table><caption>Redmi Note 15 Pro Plus 5G specs</caption><thead><tr><th class="firstcol empty" ></th><th  ></th></tr></thead><tbody><tr><td class="firstcol " ><p>Dimensions:</p></td><td  ><p>163.3 x 78.3 x 8.2 mm</p></td></tr><tr><td class="firstcol " ><p>Weight:</p></td><td  ><p>207g</p></td></tr><tr><td class="firstcol " ><p>Display:</p></td><td  ><p>6.83-inch AMOLED (1280 x 2772), 120Hz, 3,200 nits peak brightness</p></td></tr><tr><td class="firstcol " ><p>Chipset:</p></td><td  ><p>Qualcomm Snapdragon 7s Gen 4</p></td></tr><tr><td class="firstcol " ><p>RAM:</p></td><td  ><p>8GB / 12GB RAM</p></td></tr><tr><td class="firstcol " ><p>Storage:</p></td><td  ><p>256GB / 512GB</p></td></tr><tr><td class="firstcol " ><p>OS:</p></td><td  ><p>Android 15, but Android 16 is now available<br /></p></td></tr><tr><td class="firstcol " ><p>Primary camera:</p></td><td  ><p>200MP, f/1.7 <br />1/1.4-inch sensor<br />PDAF, OIS</p></td></tr><tr><td class="firstcol " ><p>Ultra-wide camera:</p></td><td  ><p>8MP, f/2.2, 120°<br />1/4-inch sensor,</p></td></tr><tr><td class="firstcol " ><p>Selfie camera:</p></td><td  ><p>32MP, f/2.2<br />1/3-inch sensor</p></td></tr><tr><td class="firstcol " ><p>Battery:</p></td><td  ><p>6,500mAh</p></td></tr><tr><td class="firstcol " ><p>Charging:</p></td><td  ><p>100W wired</p></td></tr><tr><td class="firstcol " ><p>Colors:</p></td><td  ><p>Glacier Blue, Mocha Brown, Black</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-design"><span>Redmi Note 15 Pro Plus 5G review: design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LC5zuDvpqXrwhwkHXRtt9o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-5" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/LC5zuDvpqXrwhwkHXRtt9o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>A sleek, modern phone, not a bulky industrial brick</strong></li><li><strong>IP68 and IP69K water resistance ratings</strong></li><li><strong>2.5-meter drop resistance onto hard granite</strong></li><li><strong>Touchscreen remains responsive in pouring rain or with wet hands</strong></li></ul><p>If there’s one area where the Redmi Note 15 Pro Plus 5G truly stands out, it’s design — specifically, durability.</p><p>What makes this device unique is the sheer lengths Xiaomi/Redmi went to in order to build one of the most durable smartphones on the market without incurring the classic "rugged phone" penalty. Instead of resembling a heavy industrial power tool, the Redmi Note 15 Pro Plus 5G looks and feels like a standard, stylish mid-ranger.</p><p>Underneath that homogeneous exterior sits a “Titan Durability” frame, certified by SGS, with a 5-star rating for drops from up to 2.5 meters onto granite. Add full IP68 and IP69K water and dust protection — a high-temperature, high-pressure rating that many of the best smartphones skip — and you have an absolute durability champion.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MSU6uHkfMQo5ME7uXUgQ4o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-7" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/MSU6uHkfMQo5ME7uXUgQ4o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><p>The Redmi Note 15 Pro Plus 5G proves that drop-proof hardware doesn't have to look industrial. Offered in either a faux-leather finish or two matte fiberglass backings with color-matched frames, it demonstrates that extreme durability can coexist with different aesthetic styles.</p><p>This achievement becomes obvious when put side-by-side with its direct rugged price rivals:</p><ul><li><strong>Samsung Galaxy XCover 7 (~£320)</strong>: Wrapped in a heavy black rubber casing with chunky bezels, the XCover measures 10.2mm thick and weighs 240g. The Redmi is 2mm thinner, 33g lighter, has a higher drop rating (2.5m vs 1.5m), and superior water protection.</li><li><strong>Nokia XR21 (~£360)</strong>: Matches the IP69K rating, but caps drop protection at 1.8 meters while measuring a thicker 10.4mm and weighing 231g.</li><li><strong>Doogee S200 (~£330)</strong>: Offers solid protection, but at a massive 16mm thick and 369g — nearly double the Redmi's weight. It looks like an archetypal construction-site brick, whereas the Redmi comfortably slides into standard jeans pockets.</li></ul><p>The Redmi's durability is further enhanced through software features like water ejection, which works the same way as a smartwatch by ejecting water from the speakers using low-frequency sound/vibration, and screen algorithms optimized for use with wet hands.</p><p>The Redmi Note 15 Pro Plus 5G is attractive enough to appeal to casual buyers who aren’t looking for a rugged phone, but its build stands head and shoulders above its rugged competition.</p><ul><li><strong>Design score: 5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-display"><span>Redmi Note 15 Pro Plus 5G review: display</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UASgJJL87QbMaRpEMnvQ5o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-17" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/UASgJJL87QbMaRpEMnvQ5o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>Vibrant 6.83-inch 1.5K AMOLED panel with Dolby Vision and HDR10+</strong></li><li><strong>Smooth 120Hz refresh rate and ultra-high 3840Hz PWM dimming </strong></li><li><strong>3,200 nits peak brightness is bright enough for outdoor use but…</strong></li><li><strong>… aggressive thermal auto-dimming makes it much harder to use in direct sunlight</strong></li></ul><p>The display on the Redmi Note 15 Pro Plus 5G is a strong performer for a mid-range phone. You get a large 6.83-inch 1.5K AMOLED panel (2772 x 1280) that delivers crisp details, rich 12-bit colors, and deep contrast. With both Dolby Vision and HDR10+ support included, media streaming looks noticeably punchier than on baseline 1080p mid-range screens.</p><p>In daily use, scrolling feels fluid thanks to the adaptive 120Hz refresh rate. Xiaomi also equipped the panel with 3840Hz PWM dimming to reduce eye strain during late-night scrolling — a thoughtful touch rarely prioritized at this price point.</p><p>The Redmi Note 15 Pro Plus 5G falls short in Xiaomi’s aggressive thermal management in direct sunlight. While Xiaomi claims a massive 3,200-nit peak brightness — which is higher than most phones at this price point — the company employs aggressive auto-dimming that kicks in quickly when outdoors to protect the panel from overheating. It’s fine for basic tasks, but it won't maintain its peak brightness in sustained summer heat, and it is definitely less enjoyable to watch content on while outdoors.</p><p>That aside, this screen is a solid upper-mid-range offering, and it further reinforces that you can have a great display in a rugged phone.</p><ul><li><strong>Display score: 4 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-cameras"><span>Redmi Note 15 Pro Plus 5G review: cameras</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KwFJZdxQNVLd7roETKpu4o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-2" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/KwFJZdxQNVLd7roETKpu4o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>200MP primary camera (1/1.4" sensor) with OIS delivers detailed daylight stills</strong></li><li><strong>Effective 2x somewhat compensates, but you do miss the telephoto</strong></li><li><strong>8MP ultra-wide lens is a noticeable drop in sharpness and color fidelity</strong></li><li><strong>Video tops out at 4K/30fps on the main camera and 1080p on the front selfie camera</strong></li></ul><p>The Redmi Note 15 Pro Plus 5G camera is the epitome of mid-range compromise, with a single main camera doing all the heavy lifting to compensate for weak or missing additional cameras.</p><p>The 200MP main camera features an f/1.7 aperture and OIS. In daylight and great lighting conditions, it uses 16:1 pixel binning to capture 12.5MP photos with a wide dynamic range and punchy colors. The high-resolution choice means the 2x and 4x zoom options achieved via in-sensor cropping are fairly capable for casual portraits and macro shots, but the lack of a dedicated telephoto lens means this doesn’t stand out for its zoom capabilities.</p><p>Beyond the main sensor, the camera quickly falls apart. The 8MP ultra-wide camera lacks the detail and color accuracy of the primary lens, with soft detail and noticeable grain even in challenging lighting. Nor is the Redmi Note 15 Pro+ 5G a champion at video, with 4K recording at 30fps limited to the rear cameras, and the 32MP selfie camera locked to just 1080p video.</p><ul><li><strong>Cameras score: 3.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-poco-f8-pro-review-camera-samples"><span>Poco F8 Pro review: camera samples</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/TQ9q7dwuXTGVkRJxADYQT9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HxMZc69AKWqxz4Axo9jNu8-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Yh7fnPLdpAmtVYQRB4Tkm8-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xSqvqCDJobnRRoY4UULyg8-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rvPDkpERmuE6ACTKaxnFF9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9D3X7AChhESXLRzxpRqx89-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YRzGTCJ2wdDHoVbhNPff69-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hrSjocB69btpXxAGgjQ869-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zTvnrBTigBFJHUztfta469-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WTuFgqyaNV2BkcyjcbZeN9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5KX6BvCZqTQt7ZZ3dB2gK9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NtxVjsQkR7PudmNxFKJBG9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4wyAeFPa9askcawdUr69K9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure></figure><ul><li><strong>Camera score: 3.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-performance"><span>Redmi Note 15 Pro Plus 5G review: performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aw3PQAGPTGyEHsfJKwHXun" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-10" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/aw3PQAGPTGyEHsfJKwHXun-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>Powered by Snapdragon 7s Gen 4 (4nm) processor</strong></li><li><strong>Up to 12GB of RAM is great, with other phone makers cutting back or increasing costs</strong></li><li><strong>Paired with older UFS 2.2 storage speeds</strong></li><li><strong>Handles daily tasks and media smoothly, but stutters under heavy load</strong></li></ul><p>The Redmi Note 15 Pro Plus 5G has an admirable 8GB or 12GB of RAM, and this is ultimately necessary to provide a somewhat smooth day-to-day experience. However, under heavy loads, the 4nm mid-range Snapdragon 7s Gen 4 starts to struggle, and you are quickly reminded that this is a mid-range phone.</p><p>Xiaomi is quite generous by offering 256GB of storage as the base option, but it uses slower UFS 2.2 storage, which means app installations, accessing storage in apps, and heavy gaming loads are noticeably slower than on rivals using UFS 3.1 or UFS 4.0 standards.</p><p>The 5,200mm2 vapor chamber does keep the phone relatively cool during heavy gaming sessions, which is a pleasant surprise, but as we covered before, it doesn’t prevent the screen from aggressively auto-dimming in response to high temperatures in direct sunlight.</p><p>Overall, this is about the experience you’d expect from a mid-range phone, and if you’re coming from a phone with a flagship processor, you’ll definitely notice the difference. Compared to its rugged rivals, though, the performance package is above average.</p><ul><li><strong>Performance score: 3 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-software"><span>Redmi Note 15 Pro Plus 5G review: software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Nw3AMNKyCDQQPJF8jNfFtn" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-14" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/Nw3AMNKyCDQQPJF8jNfFtn-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>Ships with HyperOS 2 built on Android 15</strong></li><li><strong>4 major OS updates and 6 years of security patches beats most rugged rivals...</strong></li><li><strong>... but falls short of the 6–7-year policies on the Pixel 10a and Galaxy A57</strong></li><li><strong>Preloaded bloatware is annoying</strong></li><li><strong>Has features like Circle to Search, Google Gemini, and IR Blaster</strong></li></ul><p>Xiaomi isn’t known for offering the longest support or fastest updates across its smartphone range, and the Redmi Note 15 Pro Plus 5G firmly sits at the lower end of the update spectrum for modern mid-rangers. Yes, Xiaomi is offering four major OS updates and six years of security patches — which easily beats niche rugged rivals — but Xiaomi is notorious for slow regional rollouts.</p><p>Considering the Redmi Note 15 Pro Plus 5G launches on Android 15 while non-durable competitors at this price point will soon be receiving Android 17, the software commitment doesn't feel particularly future-proof. At best, you’ll get Android 19 support, but it won’t be particularly fast to roll out.</p><p>Further, Xiaomi’s HyperOS 2 remains one of the more frustrating aspects of the user experience. Out of the box, it comes cluttered with preloaded bloatware and opt-out system ads tucked inside native utility apps. Yes, you can uninstall many of them quite easily, but it’s a frustrating first impression.</p><p>On the positive side, HyperOS 2 isn't short on practical utility. You get Google’s native Circle to Search feature and solid Gemini Integration, while Xiaomi’s Hyper Connect suite allows for handy cross-device clipboard sharing and PC integration. The pre-installed Mi Remote app also makes great use of the top-edge IR blaster.</p><p>However, the overall software experience would be far more appealing if Xiaomi adopted a lighter, cleaner approach.</p><ul><li><strong>Software score: 3 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-battery-life"><span>Redmi Note 15 Pro Plus 5G review: battery life</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Sv47pzxdNbnM4W2oC6w97o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-13" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/Sv47pzxdNbnM4W2oC6w97o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>6,500mAh silicon-carbon battery delivers genuine two-day endurance</strong></li><li><strong>100W fast charging charges to full in 40 minutes</strong></li><li><strong>22.5W reverse wired charging </strong></li><li><strong>No wireless charging support</strong></li></ul><p>Many people turn to rugged phones because their large batteries are worth the obvious trade-offs in features and design. There are also many customers who would like the larger battery but are not willing to accept the same trade-offs. </p><p>The Redmi Note 15 Pro Plus 5G sits in the Goldilocks zone between these two camps, with a 6,500mAh battery that’s much larger than those of its non-rugged competition at this price, and also bigger than the batteries in several key rugged rivals. Yes, it’s not as large as the 10,000 mAh battery you’ll find in the Doogee S200, but the Redmi Note 15 Pro Plus 5G strikes the best balance of capacity, longevity, and overall design.</p><p>In real-world usage, this 6,500mAh battery delivers genuine multi-day battery life, with the Redmi Note 15 Pro Plus 5G regularly lasting two full days with between 10 and 11 hours of screen time. This is among the best battery life you’ll reliably get on a smartphone, and even if it does run low, it’s fast to recharge.</p><p>The 100W superfast charging is faster than most of the competition, rugged or otherwise, and takes around 40 minutes for a full charge. This gives it an average speed of 162.5 mAh/min, which is among the fastest of any phone I’ve tested. </p><p>There’s also the option of 22.5W reverse-wired charging, which is fast enough to charge your accessories, or even your friend’s phone in a pinch. In many ways, the Redmi Note 15 Pro Plus 5G is almost the perfect smartphone if you like to go camping for a weekend, as it’s versatile enough for many use cases.</p><ul><li><strong>Battery score: 5 / 5</strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-redmi-note-15-pro-plus-5g"><span>Should you buy the Redmi Note 15 Pro Plus 5G?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9qmub2ixLrf38nhSmKwG6o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-11" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/9qmub2ixLrf38nhSmKwG6o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><div ><table><caption>Redmi Note 15 Pro Plus 5G scorecard</caption><thead><tr><th class="firstcol " ><p>Attributes</p></th><th  ><p>Notes</p></th><th  ><p>Rating</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Combines a stylish, non-rugged look with top-tier IP68/IP69K water resistance and 2.5m drop protection.</p></td><td  ><p>5 / 5</p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>A vibrant 120Hz AMOLED screen, marred only by aggressive thermal auto-dimming in direct sunlight.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Solid for everyday average tasks, but the Snapdragon 7s Gen 4 and older UFS 2.2 cause the phone to stutter under heavy loads</p></td><td  ><p>3 / 5</p></td></tr><tr><td class="firstcol " ><p>Camera</p></td><td  ><p>A great 200MP main camera, but below-average ultra-wide, no telephoto, and poor selfie video..</p></td><td  ><p>3.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Battery</p></td><td  ><p>Outstanding 6,500mAh battery delivers true multi-day battery life, while 100W charging is among the fastest of any smartphone.</p></td><td  ><p>5 / 5</p></td></tr><tr><td class="firstcol " ><p>Software</p></td><td  ><p>HyperOS 2 includes Google AI features, but has a lot of preloaded bloatware and questionable software longevity.</p></td><td  ><p>3 / 5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Unbeatable bang-for-your-buck; 256GB base storage for ~£349 is double the entry storage of main mid-range rivals.</p></td><td  ><p>5 / 5</p></td></tr></tbody></table></div><h2 id="buy-it-if-3">Buy it if...</h2><div class="product"><p><strong>You (or someone you know) has chronic butterfingers </strong><br />With IP68/IP69K ratings and 2.5-meter drop resistance onto granite, this phone offers elite peace of mind without forcing you to carry a bulky industrial brick.</p></div><div class="product"><p><strong>You want multi-day battery life and superfast charging</strong><br />The 6,500mAh battery easily delivers two full days of use (10–11 hours of screen time) and tops up from 0 to 100% in just 40 minutes via 100W HyperCharge.</p></div><div class="product"><p><strong>You want maximum storage value for money</strong><br />Starting at ~£349 for 256GB storage (or just £50 more for 12GB RAM / 512GB storage), it offers double the base capacity of most mid-range competitors.</p></div><h2 id="don-39-t-buy-it-if-2">Don't buy it if...</h2><div class="product"><p><strong>You want a clean software experience free of bloatware</strong><br />HyperOS 2 comes loaded with third-party app bloatware and native system ads out of the box, and Xiaomi’s regional update rollouts lag behind those offered by Google and Samsung.</p></div><div class="product"><p><strong>You spend a lot of time outdoors in bright sunlight</strong><br />While the screen is rated for 3,200 nits peak brightness, Xiaomi's aggressive thermal auto-dimming reduces brightness quickly in sustained summer heat.</p></div><div class="product"><p><strong>You need high-end gaming performance or versatile zoom optics</strong><br />The Snapdragon 7s Gen 4 processor and UFS 2.2 storage struggle under demanding 3D games, and the camera setup lacks a dedicated telephoto lens.</p></div><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-also-consider"><span>Redmi Note 15 Pro Plus 5G: also consider</span></h2><p>There are four real competitors to the Redmi Note 15 Pro Plus 5G worth considering, but each has its compromises.</p><div class="product"><p><strong>Google Pixel 10a (~£449)</strong>: <br />If camera quality and clean software take priority over rugged toughness, the Pixel 10a delivers superior image processing, Google AI features, and seven years of software support. However, it offers much slower charging and standard battery life.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/phones/google-pixel-phones/google-pixel-10a-review" data-dimension112="512fe566-a0f9-11f1-9020-8378d4db6a66" data-action="Deal Block" data-label="Read our full Google Pixel 10a review" data-dimension48="Read our full Google Pixel 10a review" data-dimension25=""><strong>Google Pixel 10a review</strong></a></p></div><div class="product"><p><strong>Samsung Galaxy A57 (~£450)</strong>: <br />A more rounded mainstream choice with a cleaner UI, long-term software support, and a vibrant screen. It won't match the Redmi’s drop resistance or 100W charging speed, but it provides a more polished daily experience.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/phones/samsung-galaxy-phones/samsung-galaxy-a57-review" data-dimension112="512fe5c0-a0f9-11f1-9fff-c1567d868c4b" data-action="Deal Block" data-label="Read our full Samsung Galaxy A57 review" data-dimension48="Read our full Samsung Galaxy A57 review" data-dimension25=""><strong>Samsung Galaxy A57 review</strong></a></p></div><div class="product"><p><strong>Nokia XR21 or Samsung Galaxy XCover 7 (~£320–£360)</strong>:<br />Choose one of these devices if you specifically want a traditional rugged phone with removable parts or rubberized bumpers. Just be aware that both options are significantly thicker, heavier, and offer inferior screens, batteries, and performance compared to the Redmi Note 15 Pro Plus 5G.</p></div><h2 class="article-body__section" id="section-how-i-tested-the-redmi-note-15-pro-plus-5g"><span>How I tested the Redmi Note 15 Pro Plus 5G</span></h2><ul><li><strong>Review test period</strong>: ~2 weeks</li><li><strong>Testing included</strong>: Daily driver usage, including GPS navigation, web browsing, social media feeds, photography, casual and 3D gaming, video streaming, music playback, and outdoor brightness checks.</li><li><strong>Tools used</strong>: Synthetic benchmarks (Geekbench 6, 3DMark), battery drain logs, native Android stats, official Xiaomi chargers, and real-world drop tests.</li></ul><div  class="fancy-box"><div class="fancy_box-title">Why you can trust TechRadar</div><div class="fancy_box_body"><p class="fancy-box__body-text">☑️ <strong>100s of smartphones</strong> reviewed<br />☑️ <strong>15 years</strong> of product testing<br />☑️ Over <strong>16,000 products</strong> reviewed in total<br />☑️ Nearly <strong>200,000 hours</strong> testing tech</p></div></div><p>I tested the Redmi Note 15 Pro Plus 5G as my primary smartphone for two weeks, evaluating everyday performance, real-world battery endurance, outdoor screen visibility, and camera output across various lighting conditions.</p><p><a href="https://www.techradar.com/news/how-we-test">Read more about how we test</a></p><p><em>First tested: May 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/phones/redmi-phones/redmi-note-15-pro-plus-5g-review</link>
                                                                            <description>
                            <![CDATA[ With IP69K water resistance, drop-proof armor, and a massive 6,500mAh battery, the Redmi Note 15 Pro Plus 5G is a mid-range tank. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FtYoigVccCpK6nB2H5QZTG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/TAoEWqjeWc9XC5hxZzLauB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Nov 2026 11:16:43 +0000</pubDate>                                                                                                                                <updated>Thu, 05 Nov 2026 11:17:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Redmi Phones]]></category>
                                                    <category><![CDATA[Android]]></category>
                                                    <category><![CDATA[Xiaomi Phones]]></category>
                                                    <category><![CDATA[Phones]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nirave Gondhia ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atDA9fRUjekFQjQ86SGqD-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nirave is a veteran tech journalist and creator at House of Tech. He&#039;s reviewed over 1,000 phones and other consumer gadgets over the past 20 years. A heart attack at 33 inspired him to consider the impact of technology on our physical, mental, and emotional health.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/TAoEWqjeWc9XC5hxZzLauB-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Redmi Note 15 Pro Plus 5G being held in the hand]]></media:description>                                                            <media:text><![CDATA[The Redmi Note 15 Pro Plus 5G being held in the hand]]></media:text>
                                <media:title type="plain"><![CDATA[The Redmi Note 15 Pro Plus 5G being held in the hand]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/TAoEWqjeWc9XC5hxZzLauB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-two-minute-review"><span>Redmi Note 15 Pro Plus 5G review: Two-minute review</span></h2><p>You may not have heard of Redmi, but you likely know its parent company, <a href="https://www.techradar.com/news/best-xiaomi-phones">Xiaomi</a>, which regularly features in our coverage of the <a href="https://www.techradar.com/news/best-phone">best phones</a>.</p><p>While Xiaomi focuses on premium smartphones and tablets, Redmi offers solid mid-range smartphones that aim to compete with the similarly priced competition from Google, Samsung, and Nothing.</p><p>Indeed, the Redmi Note 15 Pro Plus 5G stands squarely against the <a href="https://www.techradar.com/phones/google-pixel-phones/google-pixel-10a-review">Google Pixel 10a</a>, <a href="https://www.techradar.com/phones/samsung-galaxy-phones/samsung-galaxy-a57-review">Samsung Galaxy A57</a>, and Nothing Phone 4b in the mid-range category. But while those devices stand out for camera, design, or overall polish, Redmi has chosen to focus on raw durability with the Note 15 Pro Plus 5G.</p><p>The star feature is an SGS 5-star certified Titan Durability frame with Gorilla Glass Victus 2, offering up to 2.5-meter drop resistance alongside flagship-level IP68 and IP69K dust and water resistance. That’s paired with a large 6,500 mAh battery with 100W fast charging — both market-leading at the phone's £350 price point.</p><p>Still, at that price, there’s always a catch. The Redmi Note 15 Pro Plus 5G prioritizes tough hardware over software refinement. The 6.83-inch 120Hz display is sharp and supports Dolby Vision, but aggressive auto-dimming hampers outdoor visibility. The 200MP main camera takes great daylight shots, but the 8MP ultra-wide is mediocre, and there’s no dedicated telephoto lens.</p><p>Meanwhile, the mid-range Snapdragon 7s Gen 4 processor struggles under heavy gaming loads; Xiaomi’s HyperOS has a bundle of ads through native apps, and there’s a general lack of UX refinement, all of which lead to a more sluggish experience than you'll find on other phones.</p><p>You'll notice these trade-offs throughout daily use, but the phone's excellent battery life and solid drop protection make it a champion in its own right.</p><p>If you can live with less polish and the usual mid-range trade-offs, you’ll get something that can withstand much more than most phones. And if you know a chronic butterfinger who can’t keep a phone in their hands — my sister, for instance — the Redmi Note 15 Pro Plus 5G is the exact phone you should buy them.</p><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-price-and-availability"><span>Redmi Note 15 Pro Plus 5G review: price and availability</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XB4AFHEtPQmzsib4BjVf6o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-22" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/XB4AFHEtPQmzsib4BjVf6o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>Launched for £429 in January 2026</strong></li><li><strong>Currently available from ~£349 in the UK and Europe</strong></li><li><strong>Not officially sold in the US or Australia</strong></li></ul><p>The Redmi Note 15 Pro Plus 5G was announced in December 2025 and launched in January 2026 at £429 in the UK. It was quickly followed by launches in India and across Asia, but like many Xiaomi phones, it's not available in the US or Australia.</p><p>Six months later, at the time of writing, the Redmi Note 15 Pro Plus 5G has dropped to around £350 for the model with 8G of RAM and 256GB of storage, the latter of which is double that of its three key competitors — the Pixel 10a, Galaxy A57, and Nothing Phone 4b.</p><p>The upgraded version with 12GB of RAM and 512GB of storage costs just £50 more, offering excellent value for money, especially given the ever-increasing cost of RAM and storage driven by AI. A price of £479 is relatively unheard of in this price bracket, as phones with 512GB usually cost considerably more.</p><p>Like most Redmi phones, there are a few colors to choose from. Mocha Brown features a vegan-leather rear panel paired with a gold frame and matching camera-ring accents. However, this model is slightly thicker and heavier than the Glacier Blue and Black versions, which both feature a fiberglass back with a matte texture and color-matched side rails.</p><ul><li><strong>Value score: 5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-specs"><span>Redmi Note 15 Pro Plus 5G review: specs</span></h2><div ><table><caption>Redmi Note 15 Pro Plus 5G specs</caption><thead><tr><th class="firstcol empty" ></th><th  ></th></tr></thead><tbody><tr><td class="firstcol " ><p>Dimensions:</p></td><td  ><p>163.3 x 78.3 x 8.2 mm</p></td></tr><tr><td class="firstcol " ><p>Weight:</p></td><td  ><p>207g</p></td></tr><tr><td class="firstcol " ><p>Display:</p></td><td  ><p>6.83-inch AMOLED (1280 x 2772), 120Hz, 3,200 nits peak brightness</p></td></tr><tr><td class="firstcol " ><p>Chipset:</p></td><td  ><p>Qualcomm Snapdragon 7s Gen 4</p></td></tr><tr><td class="firstcol " ><p>RAM:</p></td><td  ><p>8GB / 12GB RAM</p></td></tr><tr><td class="firstcol " ><p>Storage:</p></td><td  ><p>256GB / 512GB</p></td></tr><tr><td class="firstcol " ><p>OS:</p></td><td  ><p>Android 15, but Android 16 is now available<br /></p></td></tr><tr><td class="firstcol " ><p>Primary camera:</p></td><td  ><p>200MP, f/1.7 <br />1/1.4-inch sensor<br />PDAF, OIS</p></td></tr><tr><td class="firstcol " ><p>Ultra-wide camera:</p></td><td  ><p>8MP, f/2.2, 120°<br />1/4-inch sensor,</p></td></tr><tr><td class="firstcol " ><p>Selfie camera:</p></td><td  ><p>32MP, f/2.2<br />1/3-inch sensor</p></td></tr><tr><td class="firstcol " ><p>Battery:</p></td><td  ><p>6,500mAh</p></td></tr><tr><td class="firstcol " ><p>Charging:</p></td><td  ><p>100W wired</p></td></tr><tr><td class="firstcol " ><p>Colors:</p></td><td  ><p>Glacier Blue, Mocha Brown, Black</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-design"><span>Redmi Note 15 Pro Plus 5G review: design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LC5zuDvpqXrwhwkHXRtt9o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-5" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/LC5zuDvpqXrwhwkHXRtt9o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>A sleek, modern phone, not a bulky industrial brick</strong></li><li><strong>IP68 and IP69K water resistance ratings</strong></li><li><strong>2.5-meter drop resistance onto hard granite</strong></li><li><strong>Touchscreen remains responsive in pouring rain or with wet hands</strong></li></ul><p>If there’s one area where the Redmi Note 15 Pro Plus 5G truly stands out, it’s design — specifically, durability.</p><p>What makes this device unique is the sheer lengths Xiaomi/Redmi went to in order to build one of the most durable smartphones on the market without incurring the classic "rugged phone" penalty. Instead of resembling a heavy industrial power tool, the Redmi Note 15 Pro Plus 5G looks and feels like a standard, stylish mid-ranger.</p><p>Underneath that homogeneous exterior sits a “Titan Durability” frame, certified by SGS, with a 5-star rating for drops from up to 2.5 meters onto granite. Add full IP68 and IP69K water and dust protection — a high-temperature, high-pressure rating that many of the best smartphones skip — and you have an absolute durability champion.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MSU6uHkfMQo5ME7uXUgQ4o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-7" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/MSU6uHkfMQo5ME7uXUgQ4o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><p>The Redmi Note 15 Pro Plus 5G proves that drop-proof hardware doesn't have to look industrial. Offered in either a faux-leather finish or two matte fiberglass backings with color-matched frames, it demonstrates that extreme durability can coexist with different aesthetic styles.</p><p>This achievement becomes obvious when put side-by-side with its direct rugged price rivals:</p><ul><li><strong>Samsung Galaxy XCover 7 (~£320)</strong>: Wrapped in a heavy black rubber casing with chunky bezels, the XCover measures 10.2mm thick and weighs 240g. The Redmi is 2mm thinner, 33g lighter, has a higher drop rating (2.5m vs 1.5m), and superior water protection.</li><li><strong>Nokia XR21 (~£360)</strong>: Matches the IP69K rating, but caps drop protection at 1.8 meters while measuring a thicker 10.4mm and weighing 231g.</li><li><strong>Doogee S200 (~£330)</strong>: Offers solid protection, but at a massive 16mm thick and 369g — nearly double the Redmi's weight. It looks like an archetypal construction-site brick, whereas the Redmi comfortably slides into standard jeans pockets.</li></ul><p>The Redmi's durability is further enhanced through software features like water ejection, which works the same way as a smartwatch by ejecting water from the speakers using low-frequency sound/vibration, and screen algorithms optimized for use with wet hands.</p><p>The Redmi Note 15 Pro Plus 5G is attractive enough to appeal to casual buyers who aren’t looking for a rugged phone, but its build stands head and shoulders above its rugged competition.</p><ul><li><strong>Design score: 5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-display"><span>Redmi Note 15 Pro Plus 5G review: display</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UASgJJL87QbMaRpEMnvQ5o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-17" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/UASgJJL87QbMaRpEMnvQ5o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>Vibrant 6.83-inch 1.5K AMOLED panel with Dolby Vision and HDR10+</strong></li><li><strong>Smooth 120Hz refresh rate and ultra-high 3840Hz PWM dimming </strong></li><li><strong>3,200 nits peak brightness is bright enough for outdoor use but…</strong></li><li><strong>… aggressive thermal auto-dimming makes it much harder to use in direct sunlight</strong></li></ul><p>The display on the Redmi Note 15 Pro Plus 5G is a strong performer for a mid-range phone. You get a large 6.83-inch 1.5K AMOLED panel (2772 x 1280) that delivers crisp details, rich 12-bit colors, and deep contrast. With both Dolby Vision and HDR10+ support included, media streaming looks noticeably punchier than on baseline 1080p mid-range screens.</p><p>In daily use, scrolling feels fluid thanks to the adaptive 120Hz refresh rate. Xiaomi also equipped the panel with 3840Hz PWM dimming to reduce eye strain during late-night scrolling — a thoughtful touch rarely prioritized at this price point.</p><p>The Redmi Note 15 Pro Plus 5G falls short in Xiaomi’s aggressive thermal management in direct sunlight. While Xiaomi claims a massive 3,200-nit peak brightness — which is higher than most phones at this price point — the company employs aggressive auto-dimming that kicks in quickly when outdoors to protect the panel from overheating. It’s fine for basic tasks, but it won't maintain its peak brightness in sustained summer heat, and it is definitely less enjoyable to watch content on while outdoors.</p><p>That aside, this screen is a solid upper-mid-range offering, and it further reinforces that you can have a great display in a rugged phone.</p><ul><li><strong>Display score: 4 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-cameras"><span>Redmi Note 15 Pro Plus 5G review: cameras</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KwFJZdxQNVLd7roETKpu4o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-2" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/KwFJZdxQNVLd7roETKpu4o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>200MP primary camera (1/1.4" sensor) with OIS delivers detailed daylight stills</strong></li><li><strong>Effective 2x somewhat compensates, but you do miss the telephoto</strong></li><li><strong>8MP ultra-wide lens is a noticeable drop in sharpness and color fidelity</strong></li><li><strong>Video tops out at 4K/30fps on the main camera and 1080p on the front selfie camera</strong></li></ul><p>The Redmi Note 15 Pro Plus 5G camera is the epitome of mid-range compromise, with a single main camera doing all the heavy lifting to compensate for weak or missing additional cameras.</p><p>The 200MP main camera features an f/1.7 aperture and OIS. In daylight and great lighting conditions, it uses 16:1 pixel binning to capture 12.5MP photos with a wide dynamic range and punchy colors. The high-resolution choice means the 2x and 4x zoom options achieved via in-sensor cropping are fairly capable for casual portraits and macro shots, but the lack of a dedicated telephoto lens means this doesn’t stand out for its zoom capabilities.</p><p>Beyond the main sensor, the camera quickly falls apart. The 8MP ultra-wide camera lacks the detail and color accuracy of the primary lens, with soft detail and noticeable grain even in challenging lighting. Nor is the Redmi Note 15 Pro+ 5G a champion at video, with 4K recording at 30fps limited to the rear cameras, and the 32MP selfie camera locked to just 1080p video.</p><ul><li><strong>Cameras score: 3.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-poco-f8-pro-review-camera-samples"><span>Poco F8 Pro review: camera samples</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/TQ9q7dwuXTGVkRJxADYQT9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HxMZc69AKWqxz4Axo9jNu8-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Yh7fnPLdpAmtVYQRB4Tkm8-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xSqvqCDJobnRRoY4UULyg8-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rvPDkpERmuE6ACTKaxnFF9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9D3X7AChhESXLRzxpRqx89-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YRzGTCJ2wdDHoVbhNPff69-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hrSjocB69btpXxAGgjQ869-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zTvnrBTigBFJHUztfta469-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WTuFgqyaNV2BkcyjcbZeN9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5KX6BvCZqTQt7ZZ3dB2gK9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NtxVjsQkR7PudmNxFKJBG9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4wyAeFPa9askcawdUr69K9-1920-80.jpg" alt="Camera sample captures on the Xiaomi Redmi Note 15 Pro Plus" /><figcaption><small role="credit">Nirave Gondhia</small></figcaption></figure></figure><ul><li><strong>Camera score: 3.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-performance"><span>Redmi Note 15 Pro Plus 5G review: performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aw3PQAGPTGyEHsfJKwHXun" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-10" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/aw3PQAGPTGyEHsfJKwHXun-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>Powered by Snapdragon 7s Gen 4 (4nm) processor</strong></li><li><strong>Up to 12GB of RAM is great, with other phone makers cutting back or increasing costs</strong></li><li><strong>Paired with older UFS 2.2 storage speeds</strong></li><li><strong>Handles daily tasks and media smoothly, but stutters under heavy load</strong></li></ul><p>The Redmi Note 15 Pro Plus 5G has an admirable 8GB or 12GB of RAM, and this is ultimately necessary to provide a somewhat smooth day-to-day experience. However, under heavy loads, the 4nm mid-range Snapdragon 7s Gen 4 starts to struggle, and you are quickly reminded that this is a mid-range phone.</p><p>Xiaomi is quite generous by offering 256GB of storage as the base option, but it uses slower UFS 2.2 storage, which means app installations, accessing storage in apps, and heavy gaming loads are noticeably slower than on rivals using UFS 3.1 or UFS 4.0 standards.</p><p>The 5,200mm2 vapor chamber does keep the phone relatively cool during heavy gaming sessions, which is a pleasant surprise, but as we covered before, it doesn’t prevent the screen from aggressively auto-dimming in response to high temperatures in direct sunlight.</p><p>Overall, this is about the experience you’d expect from a mid-range phone, and if you’re coming from a phone with a flagship processor, you’ll definitely notice the difference. Compared to its rugged rivals, though, the performance package is above average.</p><ul><li><strong>Performance score: 3 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-software"><span>Redmi Note 15 Pro Plus 5G review: software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Nw3AMNKyCDQQPJF8jNfFtn" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-14" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/Nw3AMNKyCDQQPJF8jNfFtn-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>Ships with HyperOS 2 built on Android 15</strong></li><li><strong>4 major OS updates and 6 years of security patches beats most rugged rivals...</strong></li><li><strong>... but falls short of the 6–7-year policies on the Pixel 10a and Galaxy A57</strong></li><li><strong>Preloaded bloatware is annoying</strong></li><li><strong>Has features like Circle to Search, Google Gemini, and IR Blaster</strong></li></ul><p>Xiaomi isn’t known for offering the longest support or fastest updates across its smartphone range, and the Redmi Note 15 Pro Plus 5G firmly sits at the lower end of the update spectrum for modern mid-rangers. Yes, Xiaomi is offering four major OS updates and six years of security patches — which easily beats niche rugged rivals — but Xiaomi is notorious for slow regional rollouts.</p><p>Considering the Redmi Note 15 Pro Plus 5G launches on Android 15 while non-durable competitors at this price point will soon be receiving Android 17, the software commitment doesn't feel particularly future-proof. At best, you’ll get Android 19 support, but it won’t be particularly fast to roll out.</p><p>Further, Xiaomi’s HyperOS 2 remains one of the more frustrating aspects of the user experience. Out of the box, it comes cluttered with preloaded bloatware and opt-out system ads tucked inside native utility apps. Yes, you can uninstall many of them quite easily, but it’s a frustrating first impression.</p><p>On the positive side, HyperOS 2 isn't short on practical utility. You get Google’s native Circle to Search feature and solid Gemini Integration, while Xiaomi’s Hyper Connect suite allows for handy cross-device clipboard sharing and PC integration. The pre-installed Mi Remote app also makes great use of the top-edge IR blaster.</p><p>However, the overall software experience would be far more appealing if Xiaomi adopted a lighter, cleaner approach.</p><ul><li><strong>Software score: 3 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-review-battery-life"><span>Redmi Note 15 Pro Plus 5G review: battery life</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Sv47pzxdNbnM4W2oC6w97o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-13" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/Sv47pzxdNbnM4W2oC6w97o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><ul><li><strong>6,500mAh silicon-carbon battery delivers genuine two-day endurance</strong></li><li><strong>100W fast charging charges to full in 40 minutes</strong></li><li><strong>22.5W reverse wired charging </strong></li><li><strong>No wireless charging support</strong></li></ul><p>Many people turn to rugged phones because their large batteries are worth the obvious trade-offs in features and design. There are also many customers who would like the larger battery but are not willing to accept the same trade-offs. </p><p>The Redmi Note 15 Pro Plus 5G sits in the Goldilocks zone between these two camps, with a 6,500mAh battery that’s much larger than those of its non-rugged competition at this price, and also bigger than the batteries in several key rugged rivals. Yes, it’s not as large as the 10,000 mAh battery you’ll find in the Doogee S200, but the Redmi Note 15 Pro Plus 5G strikes the best balance of capacity, longevity, and overall design.</p><p>In real-world usage, this 6,500mAh battery delivers genuine multi-day battery life, with the Redmi Note 15 Pro Plus 5G regularly lasting two full days with between 10 and 11 hours of screen time. This is among the best battery life you’ll reliably get on a smartphone, and even if it does run low, it’s fast to recharge.</p><p>The 100W superfast charging is faster than most of the competition, rugged or otherwise, and takes around 40 minutes for a full charge. This gives it an average speed of 162.5 mAh/min, which is among the fastest of any phone I’ve tested. </p><p>There’s also the option of 22.5W reverse-wired charging, which is fast enough to charge your accessories, or even your friend’s phone in a pinch. In many ways, the Redmi Note 15 Pro Plus 5G is almost the perfect smartphone if you like to go camping for a weekend, as it’s versatile enough for many use cases.</p><ul><li><strong>Battery score: 5 / 5</strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-redmi-note-15-pro-plus-5g"><span>Should you buy the Redmi Note 15 Pro Plus 5G?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9qmub2ixLrf38nhSmKwG6o" name="Xiaomi-Redmi-Note-15-Pro-Plus-Review-Pics-TechRadar-11" alt="Xiaomi Redmi Note 15 Pro Plus in brown leather" src="https://cdn.mos.cms.futurecdn.net/9qmub2ixLrf38nhSmKwG6o-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nirave Gondhia)</span></figcaption></figure><div ><table><caption>Redmi Note 15 Pro Plus 5G scorecard</caption><thead><tr><th class="firstcol " ><p>Attributes</p></th><th  ><p>Notes</p></th><th  ><p>Rating</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Combines a stylish, non-rugged look with top-tier IP68/IP69K water resistance and 2.5m drop protection.</p></td><td  ><p>5 / 5</p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>A vibrant 120Hz AMOLED screen, marred only by aggressive thermal auto-dimming in direct sunlight.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Solid for everyday average tasks, but the Snapdragon 7s Gen 4 and older UFS 2.2 cause the phone to stutter under heavy loads</p></td><td  ><p>3 / 5</p></td></tr><tr><td class="firstcol " ><p>Camera</p></td><td  ><p>A great 200MP main camera, but below-average ultra-wide, no telephoto, and poor selfie video..</p></td><td  ><p>3.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Battery</p></td><td  ><p>Outstanding 6,500mAh battery delivers true multi-day battery life, while 100W charging is among the fastest of any smartphone.</p></td><td  ><p>5 / 5</p></td></tr><tr><td class="firstcol " ><p>Software</p></td><td  ><p>HyperOS 2 includes Google AI features, but has a lot of preloaded bloatware and questionable software longevity.</p></td><td  ><p>3 / 5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Unbeatable bang-for-your-buck; 256GB base storage for ~£349 is double the entry storage of main mid-range rivals.</p></td><td  ><p>5 / 5</p></td></tr></tbody></table></div><h2 id="buy-it-if-3">Buy it if...</h2><div class="product"><p><strong>You (or someone you know) has chronic butterfingers </strong><br />With IP68/IP69K ratings and 2.5-meter drop resistance onto granite, this phone offers elite peace of mind without forcing you to carry a bulky industrial brick.</p></div><div class="product"><p><strong>You want multi-day battery life and superfast charging</strong><br />The 6,500mAh battery easily delivers two full days of use (10–11 hours of screen time) and tops up from 0 to 100% in just 40 minutes via 100W HyperCharge.</p></div><div class="product"><p><strong>You want maximum storage value for money</strong><br />Starting at ~£349 for 256GB storage (or just £50 more for 12GB RAM / 512GB storage), it offers double the base capacity of most mid-range competitors.</p></div><h2 id="don-39-t-buy-it-if-2">Don't buy it if...</h2><div class="product"><p><strong>You want a clean software experience free of bloatware</strong><br />HyperOS 2 comes loaded with third-party app bloatware and native system ads out of the box, and Xiaomi’s regional update rollouts lag behind those offered by Google and Samsung.</p></div><div class="product"><p><strong>You spend a lot of time outdoors in bright sunlight</strong><br />While the screen is rated for 3,200 nits peak brightness, Xiaomi's aggressive thermal auto-dimming reduces brightness quickly in sustained summer heat.</p></div><div class="product"><p><strong>You need high-end gaming performance or versatile zoom optics</strong><br />The Snapdragon 7s Gen 4 processor and UFS 2.2 storage struggle under demanding 3D games, and the camera setup lacks a dedicated telephoto lens.</p></div><h2 class="article-body__section" id="section-redmi-note-15-pro-plus-5g-also-consider"><span>Redmi Note 15 Pro Plus 5G: also consider</span></h2><p>There are four real competitors to the Redmi Note 15 Pro Plus 5G worth considering, but each has its compromises.</p><div class="product"><p><strong>Google Pixel 10a (~£449)</strong>: <br />If camera quality and clean software take priority over rugged toughness, the Pixel 10a delivers superior image processing, Google AI features, and seven years of software support. However, it offers much slower charging and standard battery life.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/phones/google-pixel-phones/google-pixel-10a-review" data-dimension112="512fe566-a0f9-11f1-9020-8378d4db6a66" data-action="Deal Block" data-label="Read our full Google Pixel 10a review" data-dimension48="Read our full Google Pixel 10a review" data-dimension25=""><strong>Google Pixel 10a review</strong></a></p></div><div class="product"><p><strong>Samsung Galaxy A57 (~£450)</strong>: <br />A more rounded mainstream choice with a cleaner UI, long-term software support, and a vibrant screen. It won't match the Redmi’s drop resistance or 100W charging speed, but it provides a more polished daily experience.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/phones/samsung-galaxy-phones/samsung-galaxy-a57-review" data-dimension112="512fe5c0-a0f9-11f1-9fff-c1567d868c4b" data-action="Deal Block" data-label="Read our full Samsung Galaxy A57 review" data-dimension48="Read our full Samsung Galaxy A57 review" data-dimension25=""><strong>Samsung Galaxy A57 review</strong></a></p></div><div class="product"><p><strong>Nokia XR21 or Samsung Galaxy XCover 7 (~£320–£360)</strong>:<br />Choose one of these devices if you specifically want a traditional rugged phone with removable parts or rubberized bumpers. Just be aware that both options are significantly thicker, heavier, and offer inferior screens, batteries, and performance compared to the Redmi Note 15 Pro Plus 5G.</p></div><h2 class="article-body__section" id="section-how-i-tested-the-redmi-note-15-pro-plus-5g"><span>How I tested the Redmi Note 15 Pro Plus 5G</span></h2><ul><li><strong>Review test period</strong>: ~2 weeks</li><li><strong>Testing included</strong>: Daily driver usage, including GPS navigation, web browsing, social media feeds, photography, casual and 3D gaming, video streaming, music playback, and outdoor brightness checks.</li><li><strong>Tools used</strong>: Synthetic benchmarks (Geekbench 6, 3DMark), battery drain logs, native Android stats, official Xiaomi chargers, and real-world drop tests.</li></ul><div  class="fancy-box"><div class="fancy_box-title">Why you can trust TechRadar</div><div class="fancy_box_body"><p class="fancy-box__body-text">☑️ <strong>100s of smartphones</strong> reviewed<br />☑️ <strong>15 years</strong> of product testing<br />☑️ Over <strong>16,000 products</strong> reviewed in total<br />☑️ Nearly <strong>200,000 hours</strong> testing tech</p></div></div><p>I tested the Redmi Note 15 Pro Plus 5G as my primary smartphone for two weeks, evaluating everyday performance, real-world battery endurance, outdoor screen visibility, and camera output across various lighting conditions.</p><p><a href="https://www.techradar.com/news/how-we-test">Read more about how we test</a></p><p><em>First tested: May 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ SteelSeries Rival Pro Mini review: S-tier performance in a compact package ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-steelseries-rival-pro-mini-review"><span>SteelSeries Rival Pro Mini review</span></h2><p>The SteelSeries Rival Pro Mini might just be perfect for you, if you're looking for a compact gaming mouse that makes no sacrifices when it comes to performance.</p><p>The SteelSeries Rival Pro Mini has everything a competitive gamer could ever want, be that true 8K polling, programmable buttons, 42K DPI sensitivity… you name it. It even brings ‘infinite power supply’ tech to the table, meaning you’ll have next to no downtime when duking it out against your opponents.</p><p>However, this mouse doesn’t come cheap. At $179.99 / £169.99 (about AU$250), it sits firmly in the premium category, meaning it has to go above and beyond to prove itself against the <a href="https://www.techradar.com/news/computing-components/peripherals/what-mouse-10-best-mice-compared-1027809">best mice</a> on the market. But is it truly worth that steep asking price? Here’s my view after hours of intensive testing.</p><p>Let’s start things off by looking at some of the features that the Rival Pro Mini has to offer. I may have piqued your curiosity when I mentioned that ‘infinite’ power supply just now — but what exactly does that mean? </p><p>Well, the Rival Pro Mini and its accompanying Ultra Wideband base station come with hot-swappable batteries. One will slot into your mouse while gaming, and the other will sit in the base station and charge up in the meantime. When your mouse eventually runs dry — around 60 hours with 1K polling or 16 hours with 8K — you can simply pop the battery out of your base station, slot it into your mouse, and continue playing in an instant.</p><p>This is a truly brilliant feature, and means you’ll never run out of juice when competing in a tournament or playing a few casual rounds. Even though the Rival Pro Mini mouse has no USB slot for wired use, this tech means that you’ll never truly need it.</p><p>But there are so many more features to discover on the Rival Pro Mini. First up, you’re getting true 8K polling for ultra-smooth performance. SuperSync is also here, which enables you to independently set tracking and clicking polling rates. There’s also aim tools, 42K DPI sensitivity, and six fully programmable buttons on board. </p><p>You can customize the way that buttons function in the GG app or web platform, which also lets you adjust sensitivity, polling rate, and power management among other things. I found both the downloadable and web app to be incredibly easy to use and navigate, with no shortage of options at my disposal.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="haez7RJ3FYspxCnrinbweH" name="Steelseries_RivalProMini_007.JPG" alt="SteelSeries Rival Pro Mini with UWB base station" src="https://cdn.mos.cms.futurecdn.net/haez7RJ3FYspxCnrinbweH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But just how does the Rival Pro Mini feel to use in practice? Just as good as you’d hope. When playing <em>Cyberpunk 2077 </em>on the <a href="https://www.techradar.com/computing/monitors/lg-reveals-worlds-first-native-1-000hz-gaming-monitor-but-good-luck-trying-to-find-a-gpu-to-drive-it-without-breaking-the-bank">LG UltraGear 25G590B 1000Hz gaming monitor</a>, I was blown away by the all-round quality on offer. When aiming, movement felt supremely stable and accurate, and even basic functions like turning the camera was super smooth and highly responsive. </p><p>In addition, the optical switches had a great feel to them, and allowed me to blast down my foes with unrivaled speed and precision. Like typical optical switches, these aren’t the quietest around, but their satisfying click felt never seemed obnoxiously loud or distracting to me. The mechanical scroll wheel also impressed me with its control and tactility, and its ridges provided ample grip when gaming or simply performing everyday tasks at work.</p><p>This mouse gets it right when it comes to ergonomics too, although it is a more compact model, so if you have larger hands I’d recommend picking up the full-sized Rival Pro instead. But the mouse’s molded exterior and lightweight feel fantastic, and I was able to use the Rival Pro Mini for hours on end without any cramp or fatigue. This is an ergonomic model for right-handed gamers, though, so if you’re a lefty, I’d suggest checking out the symmetrical SteelSeries Sensei Pro Mini.</p><p>The Rival Pro Mini plays it fairly safe looks-wise, but it does have a sleek aesthetic, and the orange scroll wheel gives it a bit of pop. It also has strong build quality, and I liked its lightly textured matte finish, which adds a premium touch. One thing I will say, however, is that this finish does turn the Rival Pro Mini into a bit of a fingerprint magnet, so it’ll need a good wipe down every now and then if you want to keep it looking pristine. Still, fingerprints will likely seem less visible if you opt for the white colorway over the black variant I tested.</p><p>There’s very little holding this mouse back, though one thing could prove to put some gamers off. And you guessed it: it’s that asking price. </p><p>While I think that the Rival Pro Mini offers solid value thanks to its exemplary functionality, at $179.99 / £169.99 (about AU$250), it’s unquestionably expensive. It’s also priced identically to the larger, full-size model — no big deal given that they share the same features, but it would’ve been nice to get this one at an ever-so-slightly lower price. </p><p>When all’s said and done, though, I had an overwhelmingly positive experience with the SteelSeries Rival Pro Mini. Its S-tier performance, clever hot-swappable batteries, and customizable buttons make it a great option, even for the most competitive gamers out there, and if you can stomach the price, it’s well worth picking up.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rASN6BNM2bWUiAC5qmzFZH" name="Steelseries_RivalProMini_003.JPG" alt="Scroll wheel on the SteelSeries Rival Pro Mini" src="https://cdn.mos.cms.futurecdn.net/rASN6BNM2bWUiAC5qmzFZH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-steelseries-rival-pro-mini-review-price-release-date"><span>SteelSeries Rival Pro Mini review: price &amp; release date</span></h2><ul><li><strong>Priced at $179.99 / £169.99 (about AU$250)</strong></li><li><strong>Released in October 2026</strong></li></ul><p>The SteelSeries Rival Pro Mini first arrived in October 2026 alongside three other models, namely the larger SteelSeries Rival Pro, as well as the SteelSeries Sensei Pro and Sensei Pro Mini. The Rival Pro Mini has the same list price as the full-sized model, coming in at $179.99 / £169.99 (about AU$250). As you’d expect, that places it in the premium category with competition including the <a href="https://www.techradar.com/computing/mice/logitech-pro-x2-superstrike-review">Logitech G Pro X2 Superstrike</a> and the <a href="https://www.techradar.com/computing/mice/razer-deathadder-v4-pro">Razer DeathAdder V4 Pro</a> — both of which you can learn more about in the ‘also consider’ section.</p><h2 class="article-body__section" id="section-steelseries-rival-pro-mini-review-specs"><span>SteelSeries Rival Pro Mini review: specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Interface</p></td><td  ><p>Ultra Wideband Wireless (6GHz and above)</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>Up to 60 hours 1K / 16 hours 8K</p></td></tr><tr><td class="firstcol " ><p>Sensor</p></td><td  ><p>TrueMove 42K Pro Sensor</p></td></tr><tr><td class="firstcol " ><p>Polling rate</p></td><td  ><p>8KHz (with 9KHz overpolling)</p></td></tr><tr><td class="firstcol " ><p>Buttons</p></td><td  ><p>6</p></td></tr><tr><td class="firstcol " ><p>DPI</p></td><td  ><p>42,000</p></td></tr><tr><td class="firstcol " ><p>Switches</p></td><td  ><p>Optical</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>4.75 x 2.57 x 1.59 inches / 120.7 x 65.4 x 40.5mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>1.7oz / 49g</p></td></tr></tbody></table></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iAHbaUFJjw492hdByQYZzH" name="Steelseries_RivalProMini_012.JPG" alt="SteelSeries Rival Pro Mini with various accessories" src="https://cdn.mos.cms.futurecdn.net/iAHbaUFJjw492hdByQYZzH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-should-i-buy-the-steelseries-rival-pro-mini"><span>Should I buy the SteelSeries Rival Pro Mini?</span></h2><div ><table><thead><tr><th class="firstcol " ><p><strong>Attribute</strong></p></th><th  ><p><strong>Notes</strong></p></th><th  ><p><strong>Score</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Great ergonomics, ultra-lightweight, great build quality, and nice matte finish — although it's a bit of a fingerprint magnet.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>8K polling with SuperSync, top-tier 42K DPI sensitivity, practical infinite power system.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Steep price, and just as expensive as the full-sized model, but incredibly high overall quality.</p></td><td  ><p>3.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-4">Buy it if…</h2><div class="product"><p><strong>You want top-tier performance</strong><br />Whether you’re an esports competitor or an FPS fanatic, the features on the Rival Pro Mini are sure to cover all of the bases. You get true 8K polling, 42K DPI sensitivity, and plenty of customization options in the GG app and web platform to get you ready for competitive play.</p></div><div class="product"><p><strong>You want a mouse with unbeatable battery life</strong><br />The hot-swappable batteries on the Rival Pro Mini ensure that you’ll never run out of battery life when playing your favorite games. Sure, you’ll have to swap in the battery from your base station when your mouse runs dry, but otherwise you’ll experience no down time whatsoever.</p></div><h2 id="don-t-buy-it-if-2">Don’t buy it if…</h2><div class="product"><p><strong>You have larger hands</strong><br />If you’re someone with larger hands, then you may find the SteelSeries Rival Pro Mini to be a little undersized. I’d recommend just stepping up to the full-size Rival Pro, which is virtually identical to the Mini, just a bit bigger and marginally weightier.</p></div><div class="product"><p><strong>You don’t need the most advanced gaming features</strong><br />Unless you’re playing games that need high levels of precision, then I’d say that the Rival Pro Mini might be overkill for you. After all, it comes in at a very high asking price, and there are plenty of great options available for less than $100 / £100.</p></div><h2 class="article-body__section" id="section-steelseries-rival-pro-mini-review-also-consider"><span>SteelSeries Rival Pro Mini review: also consider</span></h2><div class="product"><p><strong>Logitech G Pro X2 Superstrike</strong><br />We’re big fans of this Logitech mouse here at TechRadar. When we tested it we were wowed by its ultra-low click and sensor latency, excellent switches, and great build quality — though like its SteelSeries rival, this mouse is pretty pricey. Read our full <a href="https://www.techradar.com/computing/mice/logitech-pro-x2-superstrike-review" data-dimension112="cdf5c41a-d22e-11f1-b8d2-c31e11ac6d07" data-action="Deal Block" data-label="Logitech G Pro X2 Superstrike review" data-dimension48="Logitech G Pro X2 Superstrike review" data-dimension25="">Logitech G Pro X2 Superstrike review</a>. </p></div><div class="product"><p><strong>Razer DeathAdder V4 Pro</strong><br />The Razer DeathAdder V4 Pro is a spectacular gaming mouse, and competes with the very best models on the market. It supplies exceptional performance, a brilliant optical scroll wheel, and marvelous ergonomics too. It comes in at a similar cost to its SteelSeries rival, though we have seen this Razer mouse appear on sale now and then. Read our full <a href="https://www.techradar.com/computing/mice/razer-deathadder-v4-pro" data-dimension112="cdf5c47e-d22e-11f1-8b44-155de0060b65" data-action="Deal Block" data-label="Razer DeathAdder V4 Pro review" data-dimension48="Razer DeathAdder V4 Pro review" data-dimension25="">Razer DeathAdder V4 Pro review</a>.</p></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AtiJnFcD3gZUmFd3frqTwH" name="Steelseries_RivalProMini_010.JPG" alt="SteelSeries Rival Pro Mini behind block with UWB base station front and center" src="https://cdn.mos.cms.futurecdn.net/AtiJnFcD3gZUmFd3frqTwH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-how-i-tested-the-steelseries-rival-pro-mini"><span>How I tested the SteelSeries Rival Pro Mini</span></h2><ul><li><strong>Tested intensively for hours</strong></li><li><strong>Used for gaming and general productivity</strong></li><li><strong>Made use of all features in the GG web app</strong></li></ul><p>I tested the SteelSeries Rival Pro Mini across the course of a few days, and spent hours using it for both gaming and general productivity purposes.</p><p>For playing games, I made sure to pair the Rival Pro Mini with the LG UltraGear 25G590B 1000Hz gaming monitor, which helped me get the best performance possible out of the mouse. I also made sure to try the mouse with a variety of games, though I mainly used the PC version of <em>Cyberpunk 2077</em> to test its capabilities. What’s more, I made sure to trial all of the mouse’s features and customization options in the GG web app.</p><p>More generally, I’ve spent years testing gadgets here at TechRadar, where I serve as a Senior Reviews Writer. I’ve reviewed everything from premium wireless headphones to mechanical keyboards, and have tested a number of mice, including the <a href="https://www.techradar.com/computing/mice/logitech-mobi-fold-review">Logitech Mobi Fold</a>.</p><ul><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar’s reviews guarantee</a></li><li><em>First reviewed: October 2026</em></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/computing/mice/steelseries-rival-pro-mini-review</link>
                                                                            <description>
                            <![CDATA[ The SteelSeries Rival Pro Mini offers flagship performance in a compact form, and has all of the features a competitive gamer could want — but it comes at quite the price. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kUPCeXXtnzwvZKaoJNV3fe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9xR3CXjpyNsMw3aLdFbFqG-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 23:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mice]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Peripherals & Accessories]]></category>
                                                                                                <author><![CDATA[ harry.padoan@futurenet.com (Harry Padoan) ]]></author>                    <dc:creator><![CDATA[ Harry Padoan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/995EkuqRKUTUjvMk7ataFi-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Harry is a Senior Reviews Writer for TechRadar. He reviews everything from party speakers to wall chargers and has a particular interest in the worlds of audio and gaming.&lt;/p&gt;&lt;p&gt;Prior to joining TechRadar, Harry was a journalist covering stories from the telecoms industry, drilling into areas such as innovation, acquisitions, and sustainability.&lt;/p&gt;&lt;p&gt;When he isn’t testing the newest tech, Harry can probably be found listening to deep house, playing JRPGs, or watching his beloved Tottenham Hotspur.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/9xR3CXjpyNsMw3aLdFbFqG-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Man holding the Steelseries Rival Pro Mini]]></media:description>                                                            <media:text><![CDATA[Man holding the Steelseries Rival Pro Mini]]></media:text>
                                <media:title type="plain"><![CDATA[Man holding the Steelseries Rival Pro Mini]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9xR3CXjpyNsMw3aLdFbFqG-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-steelseries-rival-pro-mini-review"><span>SteelSeries Rival Pro Mini review</span></h2><p>The SteelSeries Rival Pro Mini might just be perfect for you, if you're looking for a compact gaming mouse that makes no sacrifices when it comes to performance.</p><p>The SteelSeries Rival Pro Mini has everything a competitive gamer could ever want, be that true 8K polling, programmable buttons, 42K DPI sensitivity… you name it. It even brings ‘infinite power supply’ tech to the table, meaning you’ll have next to no downtime when duking it out against your opponents.</p><p>However, this mouse doesn’t come cheap. At $179.99 / £169.99 (about AU$250), it sits firmly in the premium category, meaning it has to go above and beyond to prove itself against the <a href="https://www.techradar.com/news/computing-components/peripherals/what-mouse-10-best-mice-compared-1027809">best mice</a> on the market. But is it truly worth that steep asking price? Here’s my view after hours of intensive testing.</p><p>Let’s start things off by looking at some of the features that the Rival Pro Mini has to offer. I may have piqued your curiosity when I mentioned that ‘infinite’ power supply just now — but what exactly does that mean? </p><p>Well, the Rival Pro Mini and its accompanying Ultra Wideband base station come with hot-swappable batteries. One will slot into your mouse while gaming, and the other will sit in the base station and charge up in the meantime. When your mouse eventually runs dry — around 60 hours with 1K polling or 16 hours with 8K — you can simply pop the battery out of your base station, slot it into your mouse, and continue playing in an instant.</p><p>This is a truly brilliant feature, and means you’ll never run out of juice when competing in a tournament or playing a few casual rounds. Even though the Rival Pro Mini mouse has no USB slot for wired use, this tech means that you’ll never truly need it.</p><p>But there are so many more features to discover on the Rival Pro Mini. First up, you’re getting true 8K polling for ultra-smooth performance. SuperSync is also here, which enables you to independently set tracking and clicking polling rates. There’s also aim tools, 42K DPI sensitivity, and six fully programmable buttons on board. </p><p>You can customize the way that buttons function in the GG app or web platform, which also lets you adjust sensitivity, polling rate, and power management among other things. I found both the downloadable and web app to be incredibly easy to use and navigate, with no shortage of options at my disposal.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="haez7RJ3FYspxCnrinbweH" name="Steelseries_RivalProMini_007.JPG" alt="SteelSeries Rival Pro Mini with UWB base station" src="https://cdn.mos.cms.futurecdn.net/haez7RJ3FYspxCnrinbweH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But just how does the Rival Pro Mini feel to use in practice? Just as good as you’d hope. When playing <em>Cyberpunk 2077 </em>on the <a href="https://www.techradar.com/computing/monitors/lg-reveals-worlds-first-native-1-000hz-gaming-monitor-but-good-luck-trying-to-find-a-gpu-to-drive-it-without-breaking-the-bank">LG UltraGear 25G590B 1000Hz gaming monitor</a>, I was blown away by the all-round quality on offer. When aiming, movement felt supremely stable and accurate, and even basic functions like turning the camera was super smooth and highly responsive. </p><p>In addition, the optical switches had a great feel to them, and allowed me to blast down my foes with unrivaled speed and precision. Like typical optical switches, these aren’t the quietest around, but their satisfying click felt never seemed obnoxiously loud or distracting to me. The mechanical scroll wheel also impressed me with its control and tactility, and its ridges provided ample grip when gaming or simply performing everyday tasks at work.</p><p>This mouse gets it right when it comes to ergonomics too, although it is a more compact model, so if you have larger hands I’d recommend picking up the full-sized Rival Pro instead. But the mouse’s molded exterior and lightweight feel fantastic, and I was able to use the Rival Pro Mini for hours on end without any cramp or fatigue. This is an ergonomic model for right-handed gamers, though, so if you’re a lefty, I’d suggest checking out the symmetrical SteelSeries Sensei Pro Mini.</p><p>The Rival Pro Mini plays it fairly safe looks-wise, but it does have a sleek aesthetic, and the orange scroll wheel gives it a bit of pop. It also has strong build quality, and I liked its lightly textured matte finish, which adds a premium touch. One thing I will say, however, is that this finish does turn the Rival Pro Mini into a bit of a fingerprint magnet, so it’ll need a good wipe down every now and then if you want to keep it looking pristine. Still, fingerprints will likely seem less visible if you opt for the white colorway over the black variant I tested.</p><p>There’s very little holding this mouse back, though one thing could prove to put some gamers off. And you guessed it: it’s that asking price. </p><p>While I think that the Rival Pro Mini offers solid value thanks to its exemplary functionality, at $179.99 / £169.99 (about AU$250), it’s unquestionably expensive. It’s also priced identically to the larger, full-size model — no big deal given that they share the same features, but it would’ve been nice to get this one at an ever-so-slightly lower price. </p><p>When all’s said and done, though, I had an overwhelmingly positive experience with the SteelSeries Rival Pro Mini. Its S-tier performance, clever hot-swappable batteries, and customizable buttons make it a great option, even for the most competitive gamers out there, and if you can stomach the price, it’s well worth picking up.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rASN6BNM2bWUiAC5qmzFZH" name="Steelseries_RivalProMini_003.JPG" alt="Scroll wheel on the SteelSeries Rival Pro Mini" src="https://cdn.mos.cms.futurecdn.net/rASN6BNM2bWUiAC5qmzFZH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-steelseries-rival-pro-mini-review-price-release-date"><span>SteelSeries Rival Pro Mini review: price &amp; release date</span></h2><ul><li><strong>Priced at $179.99 / £169.99 (about AU$250)</strong></li><li><strong>Released in October 2026</strong></li></ul><p>The SteelSeries Rival Pro Mini first arrived in October 2026 alongside three other models, namely the larger SteelSeries Rival Pro, as well as the SteelSeries Sensei Pro and Sensei Pro Mini. The Rival Pro Mini has the same list price as the full-sized model, coming in at $179.99 / £169.99 (about AU$250). As you’d expect, that places it in the premium category with competition including the <a href="https://www.techradar.com/computing/mice/logitech-pro-x2-superstrike-review">Logitech G Pro X2 Superstrike</a> and the <a href="https://www.techradar.com/computing/mice/razer-deathadder-v4-pro">Razer DeathAdder V4 Pro</a> — both of which you can learn more about in the ‘also consider’ section.</p><h2 class="article-body__section" id="section-steelseries-rival-pro-mini-review-specs"><span>SteelSeries Rival Pro Mini review: specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Interface</p></td><td  ><p>Ultra Wideband Wireless (6GHz and above)</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>Up to 60 hours 1K / 16 hours 8K</p></td></tr><tr><td class="firstcol " ><p>Sensor</p></td><td  ><p>TrueMove 42K Pro Sensor</p></td></tr><tr><td class="firstcol " ><p>Polling rate</p></td><td  ><p>8KHz (with 9KHz overpolling)</p></td></tr><tr><td class="firstcol " ><p>Buttons</p></td><td  ><p>6</p></td></tr><tr><td class="firstcol " ><p>DPI</p></td><td  ><p>42,000</p></td></tr><tr><td class="firstcol " ><p>Switches</p></td><td  ><p>Optical</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>4.75 x 2.57 x 1.59 inches / 120.7 x 65.4 x 40.5mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>1.7oz / 49g</p></td></tr></tbody></table></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iAHbaUFJjw492hdByQYZzH" name="Steelseries_RivalProMini_012.JPG" alt="SteelSeries Rival Pro Mini with various accessories" src="https://cdn.mos.cms.futurecdn.net/iAHbaUFJjw492hdByQYZzH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-should-i-buy-the-steelseries-rival-pro-mini"><span>Should I buy the SteelSeries Rival Pro Mini?</span></h2><div ><table><thead><tr><th class="firstcol " ><p><strong>Attribute</strong></p></th><th  ><p><strong>Notes</strong></p></th><th  ><p><strong>Score</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Great ergonomics, ultra-lightweight, great build quality, and nice matte finish — although it's a bit of a fingerprint magnet.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>8K polling with SuperSync, top-tier 42K DPI sensitivity, practical infinite power system.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Steep price, and just as expensive as the full-sized model, but incredibly high overall quality.</p></td><td  ><p>3.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-4">Buy it if…</h2><div class="product"><p><strong>You want top-tier performance</strong><br />Whether you’re an esports competitor or an FPS fanatic, the features on the Rival Pro Mini are sure to cover all of the bases. You get true 8K polling, 42K DPI sensitivity, and plenty of customization options in the GG app and web platform to get you ready for competitive play.</p></div><div class="product"><p><strong>You want a mouse with unbeatable battery life</strong><br />The hot-swappable batteries on the Rival Pro Mini ensure that you’ll never run out of battery life when playing your favorite games. Sure, you’ll have to swap in the battery from your base station when your mouse runs dry, but otherwise you’ll experience no down time whatsoever.</p></div><h2 id="don-t-buy-it-if-2">Don’t buy it if…</h2><div class="product"><p><strong>You have larger hands</strong><br />If you’re someone with larger hands, then you may find the SteelSeries Rival Pro Mini to be a little undersized. I’d recommend just stepping up to the full-size Rival Pro, which is virtually identical to the Mini, just a bit bigger and marginally weightier.</p></div><div class="product"><p><strong>You don’t need the most advanced gaming features</strong><br />Unless you’re playing games that need high levels of precision, then I’d say that the Rival Pro Mini might be overkill for you. After all, it comes in at a very high asking price, and there are plenty of great options available for less than $100 / £100.</p></div><h2 class="article-body__section" id="section-steelseries-rival-pro-mini-review-also-consider"><span>SteelSeries Rival Pro Mini review: also consider</span></h2><div class="product"><p><strong>Logitech G Pro X2 Superstrike</strong><br />We’re big fans of this Logitech mouse here at TechRadar. When we tested it we were wowed by its ultra-low click and sensor latency, excellent switches, and great build quality — though like its SteelSeries rival, this mouse is pretty pricey. Read our full <a href="https://www.techradar.com/computing/mice/logitech-pro-x2-superstrike-review" data-dimension112="cdf5c41a-d22e-11f1-b8d2-c31e11ac6d07" data-action="Deal Block" data-label="Logitech G Pro X2 Superstrike review" data-dimension48="Logitech G Pro X2 Superstrike review" data-dimension25="">Logitech G Pro X2 Superstrike review</a>. </p></div><div class="product"><p><strong>Razer DeathAdder V4 Pro</strong><br />The Razer DeathAdder V4 Pro is a spectacular gaming mouse, and competes with the very best models on the market. It supplies exceptional performance, a brilliant optical scroll wheel, and marvelous ergonomics too. It comes in at a similar cost to its SteelSeries rival, though we have seen this Razer mouse appear on sale now and then. Read our full <a href="https://www.techradar.com/computing/mice/razer-deathadder-v4-pro" data-dimension112="cdf5c47e-d22e-11f1-8b44-155de0060b65" data-action="Deal Block" data-label="Razer DeathAdder V4 Pro review" data-dimension48="Razer DeathAdder V4 Pro review" data-dimension25="">Razer DeathAdder V4 Pro review</a>.</p></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AtiJnFcD3gZUmFd3frqTwH" name="Steelseries_RivalProMini_010.JPG" alt="SteelSeries Rival Pro Mini behind block with UWB base station front and center" src="https://cdn.mos.cms.futurecdn.net/AtiJnFcD3gZUmFd3frqTwH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-how-i-tested-the-steelseries-rival-pro-mini"><span>How I tested the SteelSeries Rival Pro Mini</span></h2><ul><li><strong>Tested intensively for hours</strong></li><li><strong>Used for gaming and general productivity</strong></li><li><strong>Made use of all features in the GG web app</strong></li></ul><p>I tested the SteelSeries Rival Pro Mini across the course of a few days, and spent hours using it for both gaming and general productivity purposes.</p><p>For playing games, I made sure to pair the Rival Pro Mini with the LG UltraGear 25G590B 1000Hz gaming monitor, which helped me get the best performance possible out of the mouse. I also made sure to try the mouse with a variety of games, though I mainly used the PC version of <em>Cyberpunk 2077</em> to test its capabilities. What’s more, I made sure to trial all of the mouse’s features and customization options in the GG web app.</p><p>More generally, I’ve spent years testing gadgets here at TechRadar, where I serve as a Senior Reviews Writer. I’ve reviewed everything from premium wireless headphones to mechanical keyboards, and have tested a number of mice, including the <a href="https://www.techradar.com/computing/mice/logitech-mobi-fold-review">Logitech Mobi Fold</a>.</p><ul><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar’s reviews guarantee</a></li><li><em>First reviewed: October 2026</em></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Leak TruStream review: a gifted network audio player that just lacks a bit of dynamic headroom ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-leak-trustream-two-minute-review"><span>Leak TruStream: Two-minute review</span></h3><p>Leak has been doing very nicely as its own tribute act lately, and the latest product to get the ‘walnut and aluminium’ mid-20th century modern retro treatment is a network streamer called TruStream.</p><p>But while it looks like a throwback, the TruStream is thoroughly modern on the inside. Wired and wireless connectivity, balanced and unbalanced analogue outputs, a top-end 32bit ESS Sabre DAC and a streaming platform provided by Silent Angel all contribute to a player that’s absolutely got it where it counts. Its control app could learn a thing or two from pretty much anyone else’s control app, mind you… </p><p>Given some good hi-res content to deal with, the Leak proves an expansive, detailed listen that controls both the layout of a soundstage and the description of rhythms really well. Its powers of insight and resolution make for an absorbing listen — although the sensation of outright fidelity is undermined just a little by the integrated DAC’s tendency to attack high frequency information a little too readily and by a relative lack of dynamic headroom. But given everything it does well in sonic terms, and given that it’s a visually unique offering in a “me too!” market, don’t be surprised if plenty of people are able to overlook these shortcomings… </p><h3 class="article-body__section" id="section-leak-trustream-review-price-and-release-date"><span>Leak TruStream Review: Price and release date</span></h3><ul><li><strong>Launched in April 2026</strong></li><li><strong>Costs $1,499 / £999 / AU$2,199</strong></li></ul><p>The Leak TruStream network music player is on sale now having hit shelves in April 2026 for most of us, and in the United Kingdom it costs £999. In Australia it goes for something like AU$2,199, while in the United States it will set you back $1,499 or thereabouts.</p><p>And while that's not crazy money in the world of hi-res audio and hi-fi, it's emphatically an investment — and Leak's still up against stiff competition from the likes of <a href="https://www.techradar.com/audio/cambridge-audios-new-network-player-rekindled-my-love-of-listening-in-stereo">Cambridge, with the CXN100</a>, priced at $1,099 / £899 / €1,049 (around AU$1,665). </p><p>There's also a November 2026-launch Yamaha dual hi-fi streamer launch to cast your eye over if you're looking for alternatives, starting with the <a href="https://www.techradar.com/audio/multi-room/yamahas-new-compact-hi-fi-streamers-have-all-the-wired-and-wireless-hi-res-connections-you-could-want-for-a-smart-small-stereo-system-and-one-doubles-as-an-amp-too">cheaper Yamaha WXC-70</a>, which at the time of writing is due to sell for £859 (about $1,170, AU$1,700), so it's the cheaper of the two models.</p><p>Then again, <a href="https://www.techradar.com/audio/affordable-is-relative-nagras-music-streamer-and-dac-costs-thousands-but-you-know-you-want-it-anyway">Nagra's Compact Streamer</a> was launched just before the Leak, in March 2026 — and that will set you back a slightly more eye-watering £6,000 / AU$9,495 (around $8,000). So, there's plenty to think about within Leak's chosen territory. </p><h3 class="article-body__section" id="section-leak-trustream-review-features"><span>Leak TruStream review: Features</span></h3><ul><li><strong>32bit ESS Sabre DAC</strong></li><li><strong>Digital outputs as well as balanced and unbalanced analogue outputs</strong></li><li><strong>Silent Angel streaming platform</strong></li></ul><p>You’re not short of choice when it comes to network streamers at this sort of money, even if the rest of them don’t have a hint of the TruStream’s visual panache. Good looks will only carry a product a little way, though, so it’s just as well Leak has specified the TruStream to be fully competitive.</p><p>The TruStream uses Silent Angel technology for its streaming platform, and that’s an uncomplicatedly good thing. Low-noise digital transmission and stable networking are the foundations of Silent Angel’s reputation, and when you also consider the Leak’s wide compatibility with streaming technologies it looks like a very wise choice indeed. Apple AirPlay 2, ‘Connect’ for Qobuz, Spotify and TIDAL, and TuneIn internet radio are all available, and in addition the TruStream can deal with playback from network-attached devices via DLNA or from physically connected USB drives. By way of an encore, it’s also Roon Ready.  </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5gQoBKUxQDmDvCEng6qw4X" name="IMG_1223" alt="A view of the back of the Leak TruStream." src="https://cdn.mos.cms.futurecdn.net/5gQoBKUxQDmDvCEng6qw4X-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Leak takes care of the critical digital-to-analogue business with a 32bit ESS Sabre ES9038Q2M DAC chipset. It’s able to deal with every worthwhile digital audio file type (as well as quite a few of the more esoteric alternatives) and can operate at resolutions of up to 32bit/768kHz PCM and DSD512. You can get the information to the DAC using Ethernet, dual-band wi-fi or one of the three USB inputs on the rear of the machine — there’s a USB-C for use with PCs and a couple of USB-A slots for direct connection of storage devices.</p><p>You’ve a few options when it comes to getting it out again, too. As well as balanced XLR and unbalanced RCA analog outputs, the Leak also features digital coaxial and digital optical outputs - which is handy on the off-chance you have a more capable DAC somewhere in your system than the one fitted here. There’s also a 6.3mm headphone socket on the fascia, which is powered by a dedicated current-feedback headphone amplifier that’s able to drive even quite tricky loads presented by unhelpful headphones. </p><ul><li><strong>Features score:  5 / 5</strong></li></ul><h3 class="article-body__section" id="section-leak-trustream-review-sound-quality"><span>Leak TruStream review: Sound quality</span></h3><ul><li><strong>Detailed, organised sound delivered at considerable scale</strong></li><li><strong>Could be more dynamic</strong></li><li><strong>Treble response can be provoked</strong></li></ul><p>It’s not, strictly speaking, a game of two halves here — because the things the TruStream gets right outweigh the things it struggles with more than somewhat. Its shortcomings, though, do undermine its overall performance more than a touch - so I may as well start with them before I get into the good stuff.</p><p>The Leak is not an especially dynamic listen where the broad strokes of ‘quiet/loud’ and ‘gentle/intense’ are concerned. The two-and-a-half hours of Aphex Twin’s <em>Selected Ambient Works Volume II</em> feature more than a few fluctuations of this type, and while the TruStream is able to make the differences in volume and attack apparent, it doesn’t have the headroom to put proper distance between them. Some similarly priced rivals describe the distance between ‘quiet’ and ‘loud’ in miles, but the Leak measures them in meters.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZVY5LsgcHkEEkmZ23b3GBX" name="IMG_1220" alt="A diagonal view of the Leak TruStream." src="https://cdn.mos.cms.futurecdn.net/ZVY5LsgcHkEEkmZ23b3GBX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The same recording reveals its tendency to hit the higher frequencies quite hard, too — or, at least, it does when it’s doing its own digital-to-analog converting. The onboard DAC has a lot going for it — as I will get to shortly — but it’s fairly edgy where treble sounds are concerned and in the wrong circumstances can become quite fierce. A listen to the way the Leak hits the plosives in the vocal during <em>Dalliance</em> by The Wedding Present lets you know what ‘the wrong circumstances’ are.</p><p>Elsewhere, though, the TruStream has plenty going for it. The scale of its presentation, for instance, is straightforwardly impressive. It generates a large and persuasive soundstage that manages to incorporate a sensation of ‘front to back’ as well as ‘left to right’. The areas between participants on the stage are described just as carefully as the activities of the participants themselves, and there’s more than enough breathing space available for even the most complex recordings to sound organised and coherent.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RMT8Y29U7chQ6GEiWintFX" name="IMG_1222" alt="The remote control for the Leak TruStream." src="https://cdn.mos.cms.futurecdn.net/RMT8Y29U7chQ6GEiWintFX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Aside from the latent treble issues, there’s a nice neutrality to the tonality and an evenness to the frequency response that’s on display here. At the bottom end the TruStream hits good and hard without being showy about it, and controls the attack of bass sounds with such confidence that rhythms are always expressed in a positive and naturalistic manner. It transitions into the midrange smoothly, and once there it’s perfectly capable of revealing the full range of attitude and character in a vocal performance. </p><p>In fact, detail levels are gratifyingly high at every stage — even the most minor occurrences in a recording are picked up on, and the Leak has real expertise when it comes to giving these details the proper weighting and context. It’s particularly adept when it comes to identifying the harmonic variations that come to fore when listening to unaccompanied voice or solo instrument, and those same circumstances also let it highlight its facility with transient information.</p><ul><li><strong>Sound quality score: 3.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-leak-trustream-review-design"><span>Leak TruStream review: Design</span></h3><ul><li><strong>118 x 330 x 288mm (HxWxD)</strong></li><li><strong>A single, quite distinctive, finish</strong></li><li><strong>Goes without a display</strong></li></ul><p>Whoever it was that said “people who like this sort of thing will find this the sort of thing they like” was really onto something. Not everyone will want their network streamer to look like it was designed 70 years ago, of course — but the rest of us will get one look at the diminutive (118 x 330 x 288mm, HxWxD) walnut casework and immediately feel covetous. </p><p>The fact that the TruStream is very nicely constructed and impeccably finished, and the aluminium of its fascia contrasts nicely with the wooden panelling - both materials are as tactile as they are visually alluring.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cWfAKcCF9wat3h6RFMfB6X" name="IMG_1216" alt="Leak TruStream" src="https://cdn.mos.cms.futurecdn.net/cWfAKcCF9wat3h6RFMfB6X-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I realise the whole md-century vibe might be compromised by a fascia display, but nevertheless it conceivably puts the TruStream at a disadvantage when you consider the price-comparable rivals that feature quite large, crisp, bright, colourful screens displaying album artwork and what-have-you. </p><p>Yes, that information is all available on the device you’re using to stream to the Leak — but ultimately I have to hope the money that has been saved by not implementing any display technology, and the absence of the inevitable electrical activity a display creates inside a streamer, results in a player that outperforms anything of similar price that has one. </p><ul><li><strong>Design score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-leak-trustream-review-usability-and-setup"><span>Leak TruStream review: Usability and setup</span></h3><ul><li><strong>Remote control handset</strong></li><li><strong>‘Leak TruStream’ control app</strong></li><li><strong>A few fascia controls</strong></li></ul><p>Setting up the Leak TruStream is, with one significant caveat, straightforward. It needs to be plugged into the mains, of course, and a physical connection made to the system into which it’s forming a part — all that’s required then is to get it onto your local network and you’re good to go.</p><p>But because of the way the ‘Leak TruStream’ control app (which is free for iOS and Android) is configured, this is not as simple as it really should be. It uses a mixture of fonts, all of them rather small and some of them with unnecessary serifs that look fussy and spoil legibility. The occasional use of black type on an orange background is unhelpful too — yes, it passes WCAG (web content accessibility guidelines) standards but is nevertheless difficult to read, especially as those guidelines tend to concern themselves with ‘normal’ and ‘large’ text. The colorblind or otherwise visually impaired will find these elements fatiguing if they can read them at all. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="k5PXUsMPuyz3csUKEMWsFX" name="ios-portrait-dual-mockup-orange-high" alt="Screenshots from the Leak TruStream app." src="https://cdn.mos.cms.futurecdn.net/k5PXUsMPuyz3csUKEMWsFX-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s only fair to mention at this point that the app is stable, wide-ranging and does all of the stuff you’d reasonably expect: browse internet stations, check for firmware updates, build playlists and so on, and there’s a degree of home-page customisation available too. But it’s hard to shake the suspicion that this started as a desktop application and has been transferred to mobile devices either on the cheap or in a hurry (or both). </p><p>The big remote control handset is a system control, and so the majority of its buttons are surplus to TruStream requirements. Still, it’s a sight more legible than the control app. And the very few fascia controls (power on/off, input selection and volume) feel nicely positive in their action. </p><p>The volume control allows the Leak to function as a preamplifier when connected directly to active speakers or a power amp,  as long as you don’t mind ‘the system’ consisting of a network streamer — there are no inputs for external source devices, of course.</p><ul><li><strong>Usability and setup score: 3 / 5</strong></li></ul><h3 class="article-body__section" id="section-leak-trustream-review-value"><span>Leak TruStream review: Value</span></h3><p>If you can put a price on a pleasing aesthetic, on the look and feel of premium materials, and on hard-to-come-by individuality, then the Leak TruStream seems a pretty compelling offering even before you consider the thorough nature of its specification or the sound it makes. And though the sound it produces is not entirely without issues, there’s so much to like about it in sonic terms that it seems likely that many listeners who are sold on the look will reach an accommodation with the slight shortcomings in the sound.</p><ul><li><strong>Value score: 3.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-should-i-buy-the-leak-trustream"><span>Should I buy the Leak TruStream?</span></h3><h2 id="buy-it-if-5">Buy it if...</h2><div class="product"><p><strong>You’re a sucker for the looks</strong><br />You’re entitled to be excited by the idea of a network streamer that doesn’t just look like every other network streamer</p></div><div class="product"><p><strong>You like to know what’s what</strong><br />The Leak describes a large and well-controlled soundstage, which makes even tricky recordings easy to follow</p></div><div class="product"><p><strong>You REALLY like to know what’s what</strong><br />The TruSound is great at revealing the finer details in a recording, which goes a long way to ensuring you’re getting a full account</p></div><h2 id="don-39-t-buy-it-if-3">Don't buy it if...</h2><div class="product"><p><strong>You know a clear and legible control app when you see one</strong><br />The ‘Leak TruStream’ control app isn’t particularly either of those things</p></div><div class="product"><p><strong>You hanker after a fascia display</strong><br />There were no OLED displays in the 1960s, after all, so there’s no way the Leak is getting one</p></div><div class="product"><p><strong>You’re sensitive to high-frequency sounds</strong><br />The TruStream is not afraid to hit treble information absolutely as hard as possible</p></div><h3 class="article-body__section" id="section-leak-trustream-also-consider"><span>Leak TruStream: Also consider</span></h3><div class="product"><p><strong>Cambridge CXN100 SE</strong><br />For £899, you can buy the Cambridge CXN100 SE network streamer, and what it’s lacking in visual pizzazz compared to the Leak TruStream it certainly makes up for elsewhere. A big and bright display, a control app that’s easy to read and slick in operation, an HDMI eARC input for wide system compatibility, and that muscular-yet-delicate sound the Cambrdge has been refining for a good while, all go towards making the CXN100 SE a pretty compelling device.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-leak-trustream"><span>How I tested the Leak TruStream</span></h3><p>I use the TruStream as a source, connected to an Eversolo DAC-Z10 first by its analogue outputs and then by its digital equivalent - which makes assessing the relative quality of the Leak’s DAC straightforward. I also connect it directly to a Cambridge Edge W power amp using its XLR outputs - which means it’s now a preamp as well as a network player. Alternating between wi-fi and Ethernet connections allows access to Qobuz and TIDAL Connect, as well as giving access to a Synology BeeStation Plus (full of very hi-res content) on the local network.</p><ul><li><em>First reviewed: October 2026</em></li><li><a href="https://www.techradar.com/news/how-we-test"><u>Read TechRadar's review guarantee</u></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/audio/audio-streaming/leak-trustream-may-look-like-a-1960s-radio-but-its-thoroughly-modern-and-gifted-network-music-player-albeit-one-that-sounds-a-tad-toothy-at-the-top</link>
                                                                            <description>
                            <![CDATA[ For the TruStream, Leak has hidden a whole lot of cutting-edge digital audio functionality in what looks like a piece of audio equipment from the swinging sixties ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NCvQpmd86xwzEUVs2qvwDW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ZL4Tru3YjXVK2E8QzeGPqW-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 20:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Audio Streaming]]></category>
                                                    <category><![CDATA[Audio]]></category>
                                                                                                                    <dc:creator><![CDATA[ Simon Lucas ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/XZU88gUp2HCF96TN4ozBR4-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Simon Lucas is a freelance technology journalist and consultant, with particular emphasis on the audio/video aspects of home entertainment. If it&#039;s involved in the production of sound or visual images, Simon will have written about it during the course of what will soon be a 20-year career.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before embracing the carefree life of the freelancer, Simon was editor of What Hi-Fi? magazine and&amp;nbsp;&lt;a href=&quot;http://whathifi.com/&quot; target=&quot;_blank&quot;&gt;whathifi.com&lt;/a&gt;&amp;nbsp;– a stint that lasted nearly six years and coincided with the website&amp;nbsp;becoming the planet&#039;s leading source of audio/visual buying advice for consumers. Since then, he&#039;s written for titles including (but not limited to) to Wired, Metro, the Guardian, HiFi+ and GQ, and has acted as an audio consultant for some of the&amp;nbsp;world&#039;s most high-profile consumer&amp;nbsp;electronics brands. All from what he likes to call &#039;The English Riviera&#039; but what is more commonly known as &#039;Brighton&#039;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Despite an invariably packed schedule, Simon likes to make time during the working week to publish (and invariably then hastily delete) tweets about the state of the nation (in general), the state of Aston Villa (in particular) and the state of his partner&#039;s cat via&amp;nbsp;&lt;a href=&quot;https://twitter.com/onlysimonlucas?lang=en&quot; target=&quot;_blank&quot;&gt;@OnlySimonLucas&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt; ]]></dc:description>
                                                                                                        <dc:contributor><![CDATA[ Becky Scarrott ]]></dc:contributor>
                                                                    <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ZL4Tru3YjXVK2E8QzeGPqW-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Leak TruStream]]></media:description>                                                            <media:text><![CDATA[Leak TruStream]]></media:text>
                                <media:title type="plain"><![CDATA[Leak TruStream]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ZL4Tru3YjXVK2E8QzeGPqW-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-leak-trustream-two-minute-review"><span>Leak TruStream: Two-minute review</span></h3><p>Leak has been doing very nicely as its own tribute act lately, and the latest product to get the ‘walnut and aluminium’ mid-20th century modern retro treatment is a network streamer called TruStream.</p><p>But while it looks like a throwback, the TruStream is thoroughly modern on the inside. Wired and wireless connectivity, balanced and unbalanced analogue outputs, a top-end 32bit ESS Sabre DAC and a streaming platform provided by Silent Angel all contribute to a player that’s absolutely got it where it counts. Its control app could learn a thing or two from pretty much anyone else’s control app, mind you… </p><p>Given some good hi-res content to deal with, the Leak proves an expansive, detailed listen that controls both the layout of a soundstage and the description of rhythms really well. Its powers of insight and resolution make for an absorbing listen — although the sensation of outright fidelity is undermined just a little by the integrated DAC’s tendency to attack high frequency information a little too readily and by a relative lack of dynamic headroom. But given everything it does well in sonic terms, and given that it’s a visually unique offering in a “me too!” market, don’t be surprised if plenty of people are able to overlook these shortcomings… </p><h3 class="article-body__section" id="section-leak-trustream-review-price-and-release-date"><span>Leak TruStream Review: Price and release date</span></h3><ul><li><strong>Launched in April 2026</strong></li><li><strong>Costs $1,499 / £999 / AU$2,199</strong></li></ul><p>The Leak TruStream network music player is on sale now having hit shelves in April 2026 for most of us, and in the United Kingdom it costs £999. In Australia it goes for something like AU$2,199, while in the United States it will set you back $1,499 or thereabouts.</p><p>And while that's not crazy money in the world of hi-res audio and hi-fi, it's emphatically an investment — and Leak's still up against stiff competition from the likes of <a href="https://www.techradar.com/audio/cambridge-audios-new-network-player-rekindled-my-love-of-listening-in-stereo">Cambridge, with the CXN100</a>, priced at $1,099 / £899 / €1,049 (around AU$1,665). </p><p>There's also a November 2026-launch Yamaha dual hi-fi streamer launch to cast your eye over if you're looking for alternatives, starting with the <a href="https://www.techradar.com/audio/multi-room/yamahas-new-compact-hi-fi-streamers-have-all-the-wired-and-wireless-hi-res-connections-you-could-want-for-a-smart-small-stereo-system-and-one-doubles-as-an-amp-too">cheaper Yamaha WXC-70</a>, which at the time of writing is due to sell for £859 (about $1,170, AU$1,700), so it's the cheaper of the two models.</p><p>Then again, <a href="https://www.techradar.com/audio/affordable-is-relative-nagras-music-streamer-and-dac-costs-thousands-but-you-know-you-want-it-anyway">Nagra's Compact Streamer</a> was launched just before the Leak, in March 2026 — and that will set you back a slightly more eye-watering £6,000 / AU$9,495 (around $8,000). So, there's plenty to think about within Leak's chosen territory. </p><h3 class="article-body__section" id="section-leak-trustream-review-features"><span>Leak TruStream review: Features</span></h3><ul><li><strong>32bit ESS Sabre DAC</strong></li><li><strong>Digital outputs as well as balanced and unbalanced analogue outputs</strong></li><li><strong>Silent Angel streaming platform</strong></li></ul><p>You’re not short of choice when it comes to network streamers at this sort of money, even if the rest of them don’t have a hint of the TruStream’s visual panache. Good looks will only carry a product a little way, though, so it’s just as well Leak has specified the TruStream to be fully competitive.</p><p>The TruStream uses Silent Angel technology for its streaming platform, and that’s an uncomplicatedly good thing. Low-noise digital transmission and stable networking are the foundations of Silent Angel’s reputation, and when you also consider the Leak’s wide compatibility with streaming technologies it looks like a very wise choice indeed. Apple AirPlay 2, ‘Connect’ for Qobuz, Spotify and TIDAL, and TuneIn internet radio are all available, and in addition the TruStream can deal with playback from network-attached devices via DLNA or from physically connected USB drives. By way of an encore, it’s also Roon Ready.  </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5gQoBKUxQDmDvCEng6qw4X" name="IMG_1223" alt="A view of the back of the Leak TruStream." src="https://cdn.mos.cms.futurecdn.net/5gQoBKUxQDmDvCEng6qw4X-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Leak takes care of the critical digital-to-analogue business with a 32bit ESS Sabre ES9038Q2M DAC chipset. It’s able to deal with every worthwhile digital audio file type (as well as quite a few of the more esoteric alternatives) and can operate at resolutions of up to 32bit/768kHz PCM and DSD512. You can get the information to the DAC using Ethernet, dual-band wi-fi or one of the three USB inputs on the rear of the machine — there’s a USB-C for use with PCs and a couple of USB-A slots for direct connection of storage devices.</p><p>You’ve a few options when it comes to getting it out again, too. As well as balanced XLR and unbalanced RCA analog outputs, the Leak also features digital coaxial and digital optical outputs - which is handy on the off-chance you have a more capable DAC somewhere in your system than the one fitted here. There’s also a 6.3mm headphone socket on the fascia, which is powered by a dedicated current-feedback headphone amplifier that’s able to drive even quite tricky loads presented by unhelpful headphones. </p><ul><li><strong>Features score:  5 / 5</strong></li></ul><h3 class="article-body__section" id="section-leak-trustream-review-sound-quality"><span>Leak TruStream review: Sound quality</span></h3><ul><li><strong>Detailed, organised sound delivered at considerable scale</strong></li><li><strong>Could be more dynamic</strong></li><li><strong>Treble response can be provoked</strong></li></ul><p>It’s not, strictly speaking, a game of two halves here — because the things the TruStream gets right outweigh the things it struggles with more than somewhat. Its shortcomings, though, do undermine its overall performance more than a touch - so I may as well start with them before I get into the good stuff.</p><p>The Leak is not an especially dynamic listen where the broad strokes of ‘quiet/loud’ and ‘gentle/intense’ are concerned. The two-and-a-half hours of Aphex Twin’s <em>Selected Ambient Works Volume II</em> feature more than a few fluctuations of this type, and while the TruStream is able to make the differences in volume and attack apparent, it doesn’t have the headroom to put proper distance between them. Some similarly priced rivals describe the distance between ‘quiet’ and ‘loud’ in miles, but the Leak measures them in meters.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZVY5LsgcHkEEkmZ23b3GBX" name="IMG_1220" alt="A diagonal view of the Leak TruStream." src="https://cdn.mos.cms.futurecdn.net/ZVY5LsgcHkEEkmZ23b3GBX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The same recording reveals its tendency to hit the higher frequencies quite hard, too — or, at least, it does when it’s doing its own digital-to-analog converting. The onboard DAC has a lot going for it — as I will get to shortly — but it’s fairly edgy where treble sounds are concerned and in the wrong circumstances can become quite fierce. A listen to the way the Leak hits the plosives in the vocal during <em>Dalliance</em> by The Wedding Present lets you know what ‘the wrong circumstances’ are.</p><p>Elsewhere, though, the TruStream has plenty going for it. The scale of its presentation, for instance, is straightforwardly impressive. It generates a large and persuasive soundstage that manages to incorporate a sensation of ‘front to back’ as well as ‘left to right’. The areas between participants on the stage are described just as carefully as the activities of the participants themselves, and there’s more than enough breathing space available for even the most complex recordings to sound organised and coherent.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RMT8Y29U7chQ6GEiWintFX" name="IMG_1222" alt="The remote control for the Leak TruStream." src="https://cdn.mos.cms.futurecdn.net/RMT8Y29U7chQ6GEiWintFX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Aside from the latent treble issues, there’s a nice neutrality to the tonality and an evenness to the frequency response that’s on display here. At the bottom end the TruStream hits good and hard without being showy about it, and controls the attack of bass sounds with such confidence that rhythms are always expressed in a positive and naturalistic manner. It transitions into the midrange smoothly, and once there it’s perfectly capable of revealing the full range of attitude and character in a vocal performance. </p><p>In fact, detail levels are gratifyingly high at every stage — even the most minor occurrences in a recording are picked up on, and the Leak has real expertise when it comes to giving these details the proper weighting and context. It’s particularly adept when it comes to identifying the harmonic variations that come to fore when listening to unaccompanied voice or solo instrument, and those same circumstances also let it highlight its facility with transient information.</p><ul><li><strong>Sound quality score: 3.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-leak-trustream-review-design"><span>Leak TruStream review: Design</span></h3><ul><li><strong>118 x 330 x 288mm (HxWxD)</strong></li><li><strong>A single, quite distinctive, finish</strong></li><li><strong>Goes without a display</strong></li></ul><p>Whoever it was that said “people who like this sort of thing will find this the sort of thing they like” was really onto something. Not everyone will want their network streamer to look like it was designed 70 years ago, of course — but the rest of us will get one look at the diminutive (118 x 330 x 288mm, HxWxD) walnut casework and immediately feel covetous. </p><p>The fact that the TruStream is very nicely constructed and impeccably finished, and the aluminium of its fascia contrasts nicely with the wooden panelling - both materials are as tactile as they are visually alluring.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cWfAKcCF9wat3h6RFMfB6X" name="IMG_1216" alt="Leak TruStream" src="https://cdn.mos.cms.futurecdn.net/cWfAKcCF9wat3h6RFMfB6X-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I realise the whole md-century vibe might be compromised by a fascia display, but nevertheless it conceivably puts the TruStream at a disadvantage when you consider the price-comparable rivals that feature quite large, crisp, bright, colourful screens displaying album artwork and what-have-you. </p><p>Yes, that information is all available on the device you’re using to stream to the Leak — but ultimately I have to hope the money that has been saved by not implementing any display technology, and the absence of the inevitable electrical activity a display creates inside a streamer, results in a player that outperforms anything of similar price that has one. </p><ul><li><strong>Design score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-leak-trustream-review-usability-and-setup"><span>Leak TruStream review: Usability and setup</span></h3><ul><li><strong>Remote control handset</strong></li><li><strong>‘Leak TruStream’ control app</strong></li><li><strong>A few fascia controls</strong></li></ul><p>Setting up the Leak TruStream is, with one significant caveat, straightforward. It needs to be plugged into the mains, of course, and a physical connection made to the system into which it’s forming a part — all that’s required then is to get it onto your local network and you’re good to go.</p><p>But because of the way the ‘Leak TruStream’ control app (which is free for iOS and Android) is configured, this is not as simple as it really should be. It uses a mixture of fonts, all of them rather small and some of them with unnecessary serifs that look fussy and spoil legibility. The occasional use of black type on an orange background is unhelpful too — yes, it passes WCAG (web content accessibility guidelines) standards but is nevertheless difficult to read, especially as those guidelines tend to concern themselves with ‘normal’ and ‘large’ text. The colorblind or otherwise visually impaired will find these elements fatiguing if they can read them at all. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="k5PXUsMPuyz3csUKEMWsFX" name="ios-portrait-dual-mockup-orange-high" alt="Screenshots from the Leak TruStream app." src="https://cdn.mos.cms.futurecdn.net/k5PXUsMPuyz3csUKEMWsFX-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s only fair to mention at this point that the app is stable, wide-ranging and does all of the stuff you’d reasonably expect: browse internet stations, check for firmware updates, build playlists and so on, and there’s a degree of home-page customisation available too. But it’s hard to shake the suspicion that this started as a desktop application and has been transferred to mobile devices either on the cheap or in a hurry (or both). </p><p>The big remote control handset is a system control, and so the majority of its buttons are surplus to TruStream requirements. Still, it’s a sight more legible than the control app. And the very few fascia controls (power on/off, input selection and volume) feel nicely positive in their action. </p><p>The volume control allows the Leak to function as a preamplifier when connected directly to active speakers or a power amp,  as long as you don’t mind ‘the system’ consisting of a network streamer — there are no inputs for external source devices, of course.</p><ul><li><strong>Usability and setup score: 3 / 5</strong></li></ul><h3 class="article-body__section" id="section-leak-trustream-review-value"><span>Leak TruStream review: Value</span></h3><p>If you can put a price on a pleasing aesthetic, on the look and feel of premium materials, and on hard-to-come-by individuality, then the Leak TruStream seems a pretty compelling offering even before you consider the thorough nature of its specification or the sound it makes. And though the sound it produces is not entirely without issues, there’s so much to like about it in sonic terms that it seems likely that many listeners who are sold on the look will reach an accommodation with the slight shortcomings in the sound.</p><ul><li><strong>Value score: 3.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-should-i-buy-the-leak-trustream"><span>Should I buy the Leak TruStream?</span></h3><h2 id="buy-it-if-5">Buy it if...</h2><div class="product"><p><strong>You’re a sucker for the looks</strong><br />You’re entitled to be excited by the idea of a network streamer that doesn’t just look like every other network streamer</p></div><div class="product"><p><strong>You like to know what’s what</strong><br />The Leak describes a large and well-controlled soundstage, which makes even tricky recordings easy to follow</p></div><div class="product"><p><strong>You REALLY like to know what’s what</strong><br />The TruSound is great at revealing the finer details in a recording, which goes a long way to ensuring you’re getting a full account</p></div><h2 id="don-39-t-buy-it-if-3">Don't buy it if...</h2><div class="product"><p><strong>You know a clear and legible control app when you see one</strong><br />The ‘Leak TruStream’ control app isn’t particularly either of those things</p></div><div class="product"><p><strong>You hanker after a fascia display</strong><br />There were no OLED displays in the 1960s, after all, so there’s no way the Leak is getting one</p></div><div class="product"><p><strong>You’re sensitive to high-frequency sounds</strong><br />The TruStream is not afraid to hit treble information absolutely as hard as possible</p></div><h3 class="article-body__section" id="section-leak-trustream-also-consider"><span>Leak TruStream: Also consider</span></h3><div class="product"><p><strong>Cambridge CXN100 SE</strong><br />For £899, you can buy the Cambridge CXN100 SE network streamer, and what it’s lacking in visual pizzazz compared to the Leak TruStream it certainly makes up for elsewhere. A big and bright display, a control app that’s easy to read and slick in operation, an HDMI eARC input for wide system compatibility, and that muscular-yet-delicate sound the Cambrdge has been refining for a good while, all go towards making the CXN100 SE a pretty compelling device.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-leak-trustream"><span>How I tested the Leak TruStream</span></h3><p>I use the TruStream as a source, connected to an Eversolo DAC-Z10 first by its analogue outputs and then by its digital equivalent - which makes assessing the relative quality of the Leak’s DAC straightforward. I also connect it directly to a Cambridge Edge W power amp using its XLR outputs - which means it’s now a preamp as well as a network player. Alternating between wi-fi and Ethernet connections allows access to Qobuz and TIDAL Connect, as well as giving access to a Synology BeeStation Plus (full of very hi-res content) on the local network.</p><ul><li><em>First reviewed: October 2026</em></li><li><a href="https://www.techradar.com/news/how-we-test"><u>Read TechRadar's review guarantee</u></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ NordVPN review: still the pinnacle of VPNs ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-how-we-tested-nordvpn"><span>How we tested NordVPN</span></h2><h2 class="article-body__section" id="section-nordvpn-review-scores"><span>NordVPN review scores</span></h2><div ><table><thead><tr><th class="firstcol " ><p>Category</p></th><th  ><p>Score</p></th><th  ><p>Comments</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Total</strong></p></td><td  ><p>90 / 100</p></td><td  ><p>Top notch features, watertight security, and the best streaming performance out there by a distance all solidify NordVPN as the best VPN available right now. <a href="#section-final-verdict"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Price plans &amp; value</p></td><td  ><p> 8 / 10</p></td><td  ><p>Despite its hefty price rises, NordVPN's array of plans and features give you more than enough value no matter your choice.  <a href="#section-nordvpn-price-plans"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Features</p></td><td  ><p>10 / 10</p></td><td  ><p>NordVPN is set apart by some of its unique features. Meshnet is something offered by no other VPN, Next Gen Antivirus  is the best of any similar product offered, and NordPass is the best password manager out there. Plus, there's a whole bunch more <a href="#section-features-what-can-nordvpn-do"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Server network</p></td><td  ><p>10 / 10</p></td><td  ><p>NordVPN's server network is unmatched. While some providers offer more locations in specific regions, no-one is as well spread as NordVPN is. <a href="#section-server-network-and-locations"><strong>Read more </strong>▼</a></p></td></tr><tr><td class="firstcol " ><p>Privacy</p></td><td  ><p>10 / 10</p></td><td  ><p>Based in Panama, with an airtight, audited no-logs policy, secure, proprietary protocols, and a host of privacy-focused settings, you can't dislike NordVPN in this regard. <a href="#section-privacy"><strong>Read more ▼</strong></a></p></td></tr></tbody></table></div><div class="collapsible-block-start"></div><div class="collapsible-block-title"strong-read-all-of-nordvpn-s-review-scores-strong"><p><strong>Read all of NordVPN's review scores ▼</strong></p></div><div ><table><tbody><tr><td class="firstcol " ><p>Security</p></td><td  ><p>10 / 10</p></td><td  ><p>NordVPN scores top marks here thanks to its commitments both now and in the future. Next Gen Antivirus is top notch, post-quantum encryption is already in place, and it has top-grade encryption for the current generation too. <a href="#section-security"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Speed</p></td><td  ><p>9 / 10</p></td><td  ><p>Good speeds, superb latency and jitter, a top performer all-around for whatever your needs are. <a href="#section-speed"><strong>Read more </strong>▼</a></p></td></tr><tr><td class="firstcol " ><p>Unblocking streams</p></td><td  ><p>10 / 10</p></td><td  ><p>NordVPN performed flawlessly in our unblocking tests. Zero issues, zero blocks, on every service, top marks! <a href="#section-unblocking-streaming-services"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>P2P &amp; Torrenting</p></td><td  ><p>4 / 5</p></td><td  ><p>Despite not offering port-forwarding, NordVPN offers near complete P2P optimization coverage on its servers and offers a suite of guides to help users get going if they need them, <a href="#section-p2p-and-torrenting"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Apps &amp; Compatibility</p></td><td  ><p>4 / 5</p></td><td  ><p>NordVPN has apps for every platform, which all look great and work flawlessly no matter your device. Its only limitation is its feature imparity across platforms which, while improved in recent years, still has room for improvement. <a href="#section-compatibility"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Usability</p></td><td  ><p>5 / 5</p></td><td  ><p>Dropping the interactive map and honing in on quick access to tools has made NordVPNs apps easy to use no matter your VPN experience, plus the experience is near identical everywhere. <a href="#section-usability"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Accessibility</p></td><td  ><p>2 / 5</p></td><td  ><p>NordVPN's accessibility is good enough but by no means perfect. It has an average spread of languages, some amount of keyboard support, and some contrast issues. But, for the most part it comfortably among the most accessible VPNs. <a href="#section-accessibility"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Customer support</p></td><td  ><p>4 / 5</p></td><td  ><p>NordVPN's customer support is among the best available.  Several options to find a solution, responsive live chat, and well considered conversations with email agents all help a user greatly. Its only area for improvement is usability in terms of its FAQ navigation. <a href="#section-customer-support"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p> Track record</p></td><td  ><p>4 / 5</p></td><td  ><p>NordVPN for the most part has a shiny clean track record to be admired. However a breach in 2019 and its ongoing legal battles surround auto-renewals leaves a level of doubt available for some.  <a href="#section-track-record-can-you-trust-nordvpn"><strong>Read more ▼</strong></a></p></td></tr></tbody></table></div><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-nordvpn-price-plans"><span>NordVPN price plans </span></h2><ul><li>Prices start <strong>from $3.49/month</strong> with NordVPN Basic.</li><li><strong>Complete offers the best value</strong> balance of features and price.</li><li><strong>Auto-renewal fees are eye-watering – remember to opt out.</strong></li></ul><div ><table><caption>NordVPN per month price</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>NordVPN Basic</strong></p></td><td  ><p><strong>NordVPN Complete (US-only)</strong></p></td><td  ><p><strong>NordVPN Prime (US-only)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>1-month</strong></p></td><td  ><p>$14.99</p></td><td  ><p>$19.99</p></td><td  ><p>$29.99</p></td></tr><tr><td class="firstcol " ><p><strong>1-year </strong>(+3 extra months)</p></td><td  ><p>$4.99/month</p></td><td  ><p>$5.99/month</p></td><td  ><p>$8.99/month</p></td></tr><tr><td class="firstcol " ><p><strong>2-year </strong>(+3 extra months)</p></td><td  ><p>$3.49/month</p></td><td  ><p>$3.99/month</p></td><td  ><p>$6.99/month</p></td></tr></tbody></table></div><p>NordVPN has changed some of its plans and their respective prices in recent months. It’s removed the Plus tier and now offers three tiers instead of four: Basic, Complete, and Prime. </p><p>While all countries offer Basic and Complete plans, top-tier plans vary by country: in the US it's Prime, in Canada it’s Ultra, and in the UK it’s known as Ultimate Max. For this review, we're primarily focusing on the US plans. </p><p>Still, one constant is that you can secure up to 10 devices simultaneously – matching <a href="https://www.techradar.com/reviews/expressvpn">ExpressVPN</a> and <a href="https://www.techradar.com/reviews/protonvpn">Proton VPN</a>.</p><p><a href="https://www.techradar.com/vpn/nordvpn-price-deals-discounts-offers">NordVPN’s current pricing</a> puts it at the premium end. It’s particularly expensive when comparing its one-month subscription plans. While its entry-level Basic plan is $14.99/month – the same as ExpressVPN – the latter’s mid- and top-tier equivalents are significantly cheaper.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-price-plans"><p>Read more about NordVPN's price plans ▼</p></div><p>There’s little reason to choose NordVPN if you want the flexibility of a short-term plan. Only Surfshark’s base tier is more expensive at $18.95. </p><p>You’re better off considering Proton Plus at $9.99/month, or <a href="https://www.techradar.com/reviews/private-internet-access-vpn">PIA</a> for $11.99/month. Let’s not forget <a href="https://www.techradar.com/reviews/mullvad">Mullvad</a> either, which, at €5 a month (roughly $5.60 at the time of writing), is a steal - three months of Mullvad is almost the same price as one month of NordVPN Basic.</p><p>Where NordVPN gets more competitive is with its one- and two-year subscriptions. This is where the steep discounts kick in, though you’ll need to pay the full amount upfront. </p><p>One-year prices of $4.99, $5.99, and $8.99/month are on par with ExpressVPN and Proton VPN. However, <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a> has the edge, offering plans from just $2.99 a month.</p><p>Two-year plans deliver the biggest savings. NordVPN’s prices of $3.49, $3.99, and $6.99/month put it below those of ExpressVPN. Proton VPN is similarly priced, but Surfshark is cheaper, starting at $2.19/month.</p><div ><table><caption>NordVPN total price (pre-tax)</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>NordVPN Basic</strong></p></td><td  ><p><strong>NordVPN Complete (US-only)</strong></p></td><td  ><p><strong>NordVPN Prime (US-only)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>1-month</strong></p></td><td  ><p>$14.99</p></td><td  ><p>$19.99</p></td><td  ><p>$29.99</p></td></tr><tr><td class="firstcol " ><p><strong>1-year </strong>(+3 extra months)</p></td><td  ><p>$74.85</p></td><td  ><p>$89.85</p></td><td  ><p>$134.85</p></td></tr><tr><td class="firstcol " ><p><strong>2-year </strong>(+3 extra months)</p></td><td  ><p>$94.23</p></td><td  ><p>$107.73</p></td><td  ><p>$188.73</p></td></tr></tbody></table></div><p>When you total the yearly cost, the numbers won’t add up – that’s because you’re getting three extra months included too. Also note that the prices quoted are pre-tax, and the final bill will increase based on your country’s sales tax.</p><p>There isn’t too much of a gulf between the total price you pay for NordVPN’s Basic and Complete plans, at least not initially. Upgrading from Basic to Complete costs just $1.00/month more on the annual plan, or $0.50/month more over two years. </p><p>This represents solid value considering it adds Nord’s <a href="https://www.techradar.com/vpn/vpn-services/nordvpns-next-gen-antivirus-aces-independent-testing-with-a-96-percent-phishing-block-rate">next-gen antivirus</a>, call, email, and message protection, a password manager, and cloud storage.</p><p>The bigger price jump is between Complete and Prime – $45 upfront for the annual term, or $81 for the two-year plan, for advanced identity protection via Coveron. That’s an extra $3/month either way, though it won’t be worth it if you’re outside the US since Coveron’s identity protection is US-only.</p><div ><table><caption>NordVPN auto-renewal prices</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>NordVPN Basic</strong></p></td><td  ><p><strong>NordVPN Complete (US-only)</strong></p></td><td  ><p><strong>NordVPN Prime (US-only)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>1-year (pre-tax)</strong></p></td><td  ><p>$139.08</p></td><td  ><p>$219.48</p></td><td  ><p>$296.28</p></td></tr><tr><td class="firstcol " ><p><strong>2-year (pre-tax)</strong></p></td><td  ><p>$278.16</p></td><td  ><p>$438.86</p></td><td  ><p>$592.56</p></td></tr></tbody></table></div><p>We then have to consider <a href="https://www.techradar.com/vpn/vpn-services/nordvpn-hit-with-yet-another-lawsuit-over-difficult-to-cancel-auto-renewal-subscriptions">NordVPN’s auto-renewal prices</a> which are significant to say the least. Take NordVPN’s Complete plan over two years, for example. That’s just $107.73 for the initial two-year term, but it rises a staggering 358% on renewal to $438.86.</p><p>You’re not just paying more later, either – you’re also getting fewer months. The initial term throws in three extra months so your lump sum stretches over 27 months; the renewal charges full price for just 24.</p><p>If anything, this is a reminder to make sure you turn off auto-renewal upon signup to prevent any nasty surprises further down the line. And if you want the best NordVPN deal, you’ll likely find the deepest discounts during major sales events like <a href="https://www.techradar.com/black-friday/vpn-black-friday-deals">Black Friday</a>.</p><p><strong>Price and plans score: 8/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-features-what-can-nordvpn-do"><span>Features: What can NordVPN do?</span></h2><ul><li><strong>NordVPN Basic and Plus</strong> plans are the same across the world.</li><li>Full <strong>NordProtect cyber-insurance</strong> only available in the US.</li><li><strong>NordPass password manager</strong> included with all plans apart from Basic.</li></ul><h2 id="nordvpn-basic">NordVPN Basic</h2><p>The Basic plan from NordVPN does exactly what the name suggests. The main feature is the VPN product itself and not too much more. It's the same full VPN software as available on all NordVPN plans.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="LddzPGAzqxECKXqYxNnVf9" name="NordVPN running in dark mode on a laptop on desk" alt="NordVPN running in dark mode on a laptop on desk" src="https://cdn.mos.cms.futurecdn.net/LddzPGAzqxECKXqYxNnVf9-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">All of the best features available with NordVPN can be swiftly accessed via its redesigned home screen.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 id="nordvpn-plus">NordVPN Plus</h2><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-features"><p>Read more about NordVPN features ▼</p></div><p>The Plus plan is my favorite NordVPN plan. Available in any region, it strikes a good balance between value and power by incorporating what I think are NordVPN’s most essential tools and features.</p><p>Most notably, you’re given Next Gen Antivirus. This adds malware protection via file scanning, ad-blocking capabilities (including tracker blocking), and measures to protect against phishing and other malicious websites. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="UraaoMJmyEJfaD68iaANLH" name="NordVPN in dark mode running Threat Protection Pro" alt="NordVPN in dark mode running NExt Gen Antivirus" src="https://cdn.mos.cms.futurecdn.net/UraaoMJmyEJfaD68iaANLH-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Next Gen Antivirus is an effective protective solution, even if you can only access it on desktop at the time of writing.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unfortunately, these improvements can only be seen on NordVPN’s desktop apps, which is great if your home PC is the device you’re most concerned about, but leaves you short-changed across all of your mobile devices.</p><p>This is especially unfortunate since <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a>, for example, offers its complete protective toolkit for mobile too – including antivirus on Android, which NordVPN doesn’t have whatsoever. </p><p>Something included across almost any device, however, is <a href="https://www.techradar.com/reviews/nordpass" target="_blank">NordPass</a>. We rate NordPass as the <a href="https://www.techradar.com/best/password-manager">best password manager</a> available right now, so getting it thrown in alongside your VPN package is some serious value.</p><p>It’s compatible across all major desktop operating systems, as well as popular web browsers such as Chrome, Brave, Firefox, Edge, and Opera, and of course, iOS and Android mobile devices. </p><div ><table><caption>Compare NordVPN plan availability</caption><thead><tr><th class="firstcol empty" ></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow">Basic Plan</a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Plus Plan </strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Complete Plan</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Ultimate Plan</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Prime Plan</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Ultra Plan</strong></a></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>US</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td></tr><tr><td class="firstcol " ><p><strong>UK</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td></tr><tr><td class="firstcol " ><p><strong>Canada</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Australia </strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td></tr></tbody></table></div><p>NordPass encrypts your passwords using XChaCha20 but also secures password generation, passkey support, and easy synchronization of data between platforms, so you’re never stuck without the details you need.</p><p>What's more, you can use NordPass' data breach scanning – which is traditionally kept for premium NordPass plans. That said, we found it only worked through the NordVPN app, which could be confusing if you're using it alongside NordPass.</p><h2 id="nordvpn-complete">NordVPN Complete </h2><p>Entering the upper echelons of NordVPN is where things get complex since, as mentioned, no one country gets the same premium plans. For the moment, we’ll stick with what the US gets.</p><p>NordVPN Complete adds two features to the spread offered by a Plus Plan: firstly, 1 TB of <a href="https://www.techradar.com/pro/vpn/what-is-e2ee">end-to-end encrypted</a> storage. For an extra dollar a month, that may initially seem to be a great deal, but first, consider whether the added storage is actually going to be used. </p><p>If, like me, you’ve already pushed the limits of your free storage allowances on systems like Google and iCloud, then maybe it will, but will the added storage outweigh the convenience these services offer? The value for money for that 1 TB of storage is good, but, if you won’t use it, why pay more?</p><p>In terms of the value, it’s definitely worth mentioning that among the top VPN providers, only <a href="https://www.techradar.com/reviews/protonvpn">Proton VPN</a> currently offers encrypted storage with any of its packages.</p><p>Though to get 500 GB of storage with Proton, you pay $3 per month more than you’d pay for a NordVPN Complete plan. And that makes NordVPN Complete comparatively better value if storage with your VPN is a priority.</p><p>Next up is Scam Call Protection. This is NordVPN's latest feature addition, offering potential scam detection, caller identification, and caller categorization (such as telemarketers). For now, this is an Android-only feature, NordVPN has confirmed it's planning to bring the functionality to iPhone users soon. </p><h2 id="nordvpn-prime">NordVPN Prime</h2><p>Prime only brings one new thing to the party, though this time it’s a biggie – NordProtect.</p><p><a href="https://www.techradar.com/pro/security/nordprotect-made-me-rethink-how-i-protect-my-personal-information-online" target="_blank">NordProtect</a> is an all-in-one package aimed at protecting your identity at all costs. Firstly, <a href="https://www.techradar.com/pro/what-is-dark-web-monitoring">Dark Web Monitoring</a> searches for your social security number, phone number, and email on the dark web 24/7, with immediate notifications should anything be found.</p><p>Your credit card also gets similar protection. 1-Bureau credit monitoring notifies you about changes, including inquiries into your credit file, new accounts, and unauthorized use. You can also make use of VantageScore credit scoring, should you wish for insights into how to improve your credit.</p><p>TransUnion, the company behind VantageScore, also provides credit freeze assistance as part of NordProtect. This not only helps to prevent credit card fraud, but also ensures your credit score isn’t impacted if you fall victim to it.</p><p>If that wasn’t enough, you’re also provided with identity theft insurance up to $1M in coverage, and cyber extortion insurance up to $100K in coverage.</p><p>All this protection does come at a hefty cost, however, as Prime Plans start from $6.99 per month on the two-year plan.</p><p>That takes your total payment to $50 more than Complete, and your cost on renewal rises to around $340 before tax. So, make sure you really need NordProtect before signing up.</p><div ><table><caption>Compare NordVPN features</caption><thead><tr><th class="firstcol empty" ></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow">Basic Plan</a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Plus </strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Complete</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Ultimate</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Ultra</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Prime</strong></a></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>VPN</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Next Gen Antivirus </strong></p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Ad and tracker blocker</strong></p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Password manager</strong></p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Data breach scanning</strong></p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>1TB encrypted cloud storage</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Cyber insurance (up to £5,000)</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td></tr><tr><td class="firstcol " ><p><strong>Identity theft insurance (up to $1M)</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Cyber extortion insurance (up to $100k)</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Incogni personal data removal</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td></tr></tbody></table></div><p>A surprising omission from almost all NordVPN plans worldwide is Incogni. Developed by Nord Security, NordVPN and Surfshark’s parent company,<a href="https://www.techradar.com/reviews/incogni" target="_blank"> Incogni</a> is a data removal tool that removes your personal information from company databases and people search sites, helping reduce the risk of scams, fraud, and identity theft.</p><p>Only Canada’s Ultra plan includes Incogni. Though, much like the US Prime plan, you’ll be forking out a fair sum for it, with prices starting from CA$8.19 per month.</p><p>If there’s one constant piece of advice we can give about picking a NordVPN plan, it’s this: know what you want. They all offer value, but only if you actually use the features you're buying.</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-server-network-and-locations"><span>Server network and locations</span></h2><ul><li><strong>Most countries covered</strong> of any tested VPN (150).</li><li><strong>Most locations overall</strong> with 225</li><li><strong>Approximately 8,000</strong>-strong network of RAM-only servers.</li></ul><p>NordVPN offers the largest selection of server locations of any VPN we test. Nobody beats NordVPN's 225 locations, while only Proton VPN's 149 countries come close to NordVPN's chart-topping 150</p><p>The spread of these locations also earns it top marks. 77 locations in North America is the most of any VPN, 54 locations in Europe are only usurped by NymVPN, ExpressVPN, and Proton VPN, and 30 locations in Africa are only topped by Proton’s 33. </p><p>NordVPN also remains top for locations in South America and Oceania, while its 43 Asian locations keep it second to Proton VPN's 51. </p><p>The provider offers around 79 virtual locations in regions where physical servers are not possible. This is perfect if you're travelling to regions with tight internet restrictions and require a stable, secure connection. However, you can't see in-app which locations are virtual when on Windows, which is unfortunate. </p><p>Much like other top VPNs, NordVPN’s network runs on RAM-only servers. This is now reasonably standard practice, since RAM-only servers not only ensure no user data is accidentally stored (since they wipe on reboot) but they are also more efficient in terms of speed, latency, and power consumption.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-server-network"><p>Read more about NordVPN's server network ▼</p></div><p>This ensures the servers are capable of handling NordVPN’s various server uses, be that <a href="https://www.techradar.com/vpn/what-is-p2p">P2P</a>, <a href="https://www.techradar.com/vpn/nordvpn-double-vpn">multi-hop</a>, or <a href="https://www.techradar.com/vpn/what-is-meshnet">Meshnet</a>, without noticeable drops in performance. </p><p>Handily, NordVPN also recently made all of its servers P2P compatible. That means you no longer need to select a dedicated P2P server from the dedicated 'Speciality Servers' list, instead, you can use whichever NordVPN server works best for your needs. </p><p>Earlier in 2025, <a href="https://www.techradar.com/vpn/vpn-services/vpn-server-count-doesnt-matter-nordvpn-throws-a-challenge-to-the-vpn-industry" target="_blank">NordVPN threw a challenge to the VPN industry</a>, claiming that the exact number of servers across its locations isn’t important. This means we no longer have a precise figure to use to compare NordVPN with its competitors. </p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>NordVPN</p></th><th  ><p>Surfshark</p></th><th  ><p>ExpressVPN</p></th><th  ><p>Proton VPN</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>North America</p></td><td  ><p><strong>77</strong></p></td><td  ><p>34</p></td><td  ><p>71</p></td><td  ><p>39</p></td></tr><tr><td class="firstcol " ><p>South America</p></td><td  ><p><strong>12</strong></p></td><td  ><p>10</p></td><td  ><p>9</p></td><td  ><p>10</p></td></tr><tr><td class="firstcol " ><p>Europe</p></td><td  ><p><strong>54</strong></p></td><td  ><p>54</p></td><td  ><p>58</p></td><td  ><p>53</p></td></tr><tr><td class="firstcol " ><p>Asia</p></td><td  ><p><strong>43</strong></p></td><td  ><p>32</p></td><td  ><p>36</p></td><td  ><p>48</p></td></tr><tr><td class="firstcol " ><p>Oceania</p></td><td  ><p><strong>9</strong></p></td><td  ><p>6</p></td><td  ><p>8</p></td><td  ><p>7</p></td></tr><tr><td class="firstcol " ><p>Africa</p></td><td  ><p><strong>30</strong></p></td><td  ><p>6</p></td><td  ><p>6</p></td><td  ><p>31</p></td></tr></tbody></table></div><p>Surfshark, a VPN also owned by Nord Security, uses around 4,500 servers currently, while Proton VPN uses over 15,000. Our latest research suggests NordVPN's figure is somewhere over 8,000 servers, which is above average, but by no means the most.</p><p>Realistically, however, we rarely see VPN servers reach absolute maximum load, and, frankly, with the spread of locations NordVPN has, you'll never be short of another place to connect to. There's really nothing we can complain about here, loads of locations, RAM-only servers, top marks!</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-privacy"><span>Privacy</span></h2><ul><li><strong>Strong, privacy-focused protocol choices</strong> – NordLynx and NordWhisper</li><li><strong>Double VPN and Onion over VPN</strong> boost privacy and anonymity</li><li><strong>Tapjacking protection is a handy bonus</strong> for Android users</li></ul><p>NordVPN’s privacy is founded on its <a href="https://www.techradar.com/pro/vpn/the-difference-between-no-logs-and-zero-logs-vpns-and-why-it-matters">no-logs policy</a>. Not only is the policy in depth, but it has been audited six times, <a href="https://www.techradar.com/vpn/vpn-services/independent-auditors-confirm-nordvpn-never-stores-your-data-for-the-6th-time" target="_blank">most recently by Deloitte at the end of 2025</a>.</p><p>That depth doesn't make for good casual reading but it does successfully cover every important topic, and in enough detail that we’re comfortable with saying that nothing is amiss.</p><p>The closest NordVPN comes to recording data is its enforcement of the 10 device limit. As it explains, username and timestamp information is “used to limit the amount of concurrent active user sessions and is automatically deleted within 15 minutes after a session is terminated”.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-privacy-measures"><p>Read more about NordVPN's privacy measures ▼</p></div><p>In-app, NordVPN’s primary privacy focal point is its <a href="https://www.techradar.com/vpn/vpn-services/nordvpn-launches-new-revolutionary-censorship-resistant-vpn-protocol">NordWhisper protocol</a>.</p><p><a href="https://www.techradar.com/vpn/vpn-services/nordvpn-launches-new-revolutionary-censorship-resistant-vpn-protocol" target="_blank">Introduced in January 2025</a>, the <a href="https://www.techradar.com/vpn/what-is-a-vpn-protocol">protocol</a> is based on the <a href="https://www.techradar.com/pro/security/tor-has-a-new-https-esque-feature-to-help-beat-censorship">Tor Project’s WebTunnel technology. </a>It wraps your encrypted VPN traffic in a standard HTTPS connection to hide it from detection. This disguises it as standard web traffic and makes NordWhisper especially effective in regions of high internet censorship and places where people found to be using VPNs can be punished. </p><p>For everyday connectivity, you’re not short of options either. <a href="https://www.techradar.com/vpn/what-is-openvpn">OpenVPN</a> is available in both its <a href="https://www.techradar.com/vpn/udp-vs-tcp">TCP and UDP</a> forms. The former provides a more stable, reliable connection for emailing, browsing, and the like. The latter is more focused towards speed for gaming, streaming, or similar.</p><p>Alongside this, you also get NordVPN’s other proprietary protocol, NordLynx. <a href="https://www.techradar.com/vpn/what-is-nordlynx" target="_blank">NordLynx</a> uses a ‘double NAT’ system to remove privacy vulnerabilities you’d be at risk of by using traditional <a href="https://www.techradar.com/vpn/what-is-wireguard">WireGuard</a>.</p><p>By combining double NAT technology and WireGuard, NordLynx allows you to experience the speed benefits of WireGuard, without any identifiable information being stored, even temporarily, in a server. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="dKGZBGKxSWcuYnqtyNYEm3" name="NordVPN website during Black Friday 2025 running on a laptop on a desk" alt="NordVPN website during Black Friday 2025 running on a laptop on a desk" src="https://cdn.mos.cms.futurecdn.net/dKGZBGKxSWcuYnqtyNYEm3-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">NordVPN's privacy and no-logs policies can be easily accessed via the NordVPN website. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>NordLynx is also <a href="https://www.techradar.com/pro/vpn/nordvpn-joins-the-post-quantum-revolution" target="_blank">NordVPN’s first post-quantum encrypted VPN protocol</a>. It ensures that your data remains secure even once quantum computing arrives with its enormous boost in code-cracking, number crunching power.</p><p>NordVPN has chosen to use <a href="https://www.techradar.com/pro/vpn/post-quantum-encryption-standards-are-here-a-new-era-for-vpn-security-begins" target="_blank">ML-KEM</a>, an approved quantum-resistant cryptographic standard, with NordLynx.</p><p>NordVPN’s use of RAM-only servers helps too. Since RAM-only servers don’t store any data permanently. That means you’re never at risk of being personally identifiable should Nord’s servers be seized, since there’s no data to be found.</p><p>Connecting to NordVPN offers several privacy-centric options. <a href="https://www.techradar.com/vpn/nordvpn-double-vpn" target="_blank">Double VPN</a> works as the name suggests, routing your connection through two VPN servers rather than one. In other words, your data is encrypted twice.</p><p>That makes your connection twice as difficult for cybercriminals to crack, your IP address is further protected (since the second server doesn’t have any information about it), and your ISP knows nothing about where you end up on the web.</p><p>This makes Double VPN perfect for those needing greater protection in regions where governments attempt to intercept messages or surveil online activities.</p><p>NordVPN currently offers 12 Double VPN locations, including 2 locations in the US and Canada. This is far fewer than the likes of <a href="https://www.techradar.com/reviews/protonvpn">Proton VPN</a> and <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a>.</p><p>Proton VPN offers 64 locations that utilize its <a href="https://www.techradar.com/vpn/proton-vpn-secure-core">Secure Core</a> technology, while <a href="https://www.techradar.com/news/surfshark-adds-new-cutting-technology-to-its-vpn-service">Surfshark’s Nexus network</a> allows you to make any two server connections you want from its entire server network.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="Vz5xAMvyBZfBzarRiDJQPa" name="NordVPN server types displaying on phone on desk" alt="NordVPN server types displaying on phone on desk" src="https://cdn.mos.cms.futurecdn.net/Vz5xAMvyBZfBzarRiDJQPa-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">NordVPN's selection of server types can be quickly accessed whether you're on mobile or desktop. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Another option for concealing your VPN connection is NordVPN’s obfuscated servers. These servers now use NordVPN's NordWhisper protocol in addition to extra protections to ensure your VPN connection isn't detected. The shift to using NordWhisper also means you can now connect to obfuscated servers in almost all of NordVPN's locations.</p><p>If you’re looking to access the darker corners of the web securely, NordVPN also offers <a href="https://www.techradar.com/vpn/vpn-privacy-security/what-is-onion-over-vpn" target="_blank">Onion Over VPN</a> connections. Available via its Amsterdam, Stockholm, and Zurich server locations. This connection routes your traffic through both a VPN server and <a href="https://www.techradar.com/reviews/tor-browser">the Tor Network</a>. </p><p>As a result, since the Tor Network’s servers are volunteer-operated, you are secured by a VPN before entering it in case a bad actor has planted servers intent on tracking your online activity and stealing your data. This added security when using Tor is something only offered by a few top VPNs, the most notable of which are NordVPN and Proton VPN.</p><p>Depending on the platform you’re using, NordVPN also offers several handy privacy settings you can use to further affirm your privacy. Android users get arguably the biggest spread. Notably, NordVPN’s ‘Tapjacking protection’ is something you won’t find on any other NordVPN platform, or offered by any other VPN for that matter.</p><p>The system aims to protect users against malicious overlays and is as simple to use as toggling on and forgetting about it. Having had the protection turned on for a matter of months now, I can comfortably say I've never found an instance where an overlay has slipped through the net, and I've never noticed it adding unwanted strain to my phone’s performance either.</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-security"><span>Security</span></h2><ul><li><strong>Strong encryption</strong> and post-quantum encryption standards already live.</li><li><strong>Next Gen Antivirus performs well</strong> against malware and phishing sites</li><li>Lots of options for <strong>granular security customization.</strong></li></ul><p>NordVPN’s security is top-notch.</p><p>We tested its claims of strong <a href="https://www.techradar.com/news/what-is-aes" target="_blank">AES-256-GCM encryption</a> on OpenVPN using a 4096-bit Diffie-Hellman key, and we saw exactly that. Our tests registered AES-256-GCM-SHA384 encryption with 4096-bit certification using TLS 1.3. This makes NordVPN’s OpenVPN protocol as secure as possible, ensuring you needn’t worry about your connection, no matter your location.</p><p>On NordLynx, you’re similarly protected. Since the protocol is based on WireGuard, it uses the same ChaCha20 encryption you’d expect to see, using Poly1305 for authentication. This means you’re using the latest and greatest encryption capabilities across both of NordVPN’s primary protocols.</p><p><a href="https://www.techradar.com/pro/vpn/post-quantum-encryption-standards-are-here-a-new-era-for-vpn-security-begins">Post-quantum encryption</a> has also already reached NordVPN. While providers such as Proton VPN and Surfshark are yet to implement it or are in the early stages, NordLynx is already post-quantum ready, with the future-proof encryption method available at the switch of a toggle.</p><p>While that might seem superfluous right now, it's a key differentiator given the existence of <a href="https://www.techradar.com/pro/security/quantum-race-how-are-cybercriminals-silently-stealing-the-trophy">harvest now, decrypt later attacks</a>.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-security-features"><p>Read more about NordVPN's security features ▼</p></div><p>OpenVPN and NordWhisper aren’t post-quantum-equipped quite yet. It's worth knowing that if you turn on post-quantum encryption, it'll turn itself off if your automatically selected protocol isn't NordLynx. This can be fixed in a matter of clicks by turning automatic protocol choosing off, instead selecting to always use NordLynx</p><p>You also won’t be post-quantum-protected when using Meshnet or NordVPN’s obfuscated server connection; the same goes if you add a dedicated IP to your plan.</p><p>If you’ve turned on post-quantum encryption before using Meshnet, beware that this automatically turns Meshnet off, making you choose between your secure local network and a super-secure VPN connection.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="h5ZkvznRGyWnjbHnk9ipiL" name="NordVPN Meshnet settings screen on  laptop at a desk" alt="NordVPN Meshnet settings screen on  laptop at a desk" src="https://cdn.mos.cms.futurecdn.net/h5ZkvznRGyWnjbHnk9ipiL-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Meshnet is a superb, unique NordVPN feature, though it doesn't benefit from post-quantum encryption as yet.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>NordVPN also, of course, a more standard suite or security options in place.</p><p>Auto-connect jumps straight to mind, since you can fully customize exactly when and how NordVPN auto-connects you to a server.</p><p>It covers both the server type, and the instances in which it connects. This includes options for <a href="https://www.techradar.com/vpn/nordvpn-double-vpn">Double VPN</a>, Obfuscated, Onion-Over, and P2P servers, and connecting when on Wi-Fi, Ethernet, or mobile networks. You can even create lists of trusted networks that are excluded from auto-connect parameters.</p><p>I use this kind of customization to make sure that I'm always protected and I particularly like it to my ensure my connection on-the-go.</p><p>If you want to continue the granular levels of security tailoring, you can also control the <a href="https://www.techradar.com/vpn/what-is-dns">DNS server address</a> you connect to, your visibility over LAN, and, on desktops, whether your computer can still be accessed remotely when connected. It’s worth noting, with LAN invisibility especially, toggling these settings can impact performance. </p><p>For example, with LAN invisibility turned on, iPhone, iPad, and Mac users won’t be able to use AirDrop. You may also experience significant performance impacts due to how Apple integrates the relevant API parameters in its hardware. If you want to know more, NordVPN released a complete breakdown you can read <a href="https://support.nordvpn.com/hc/en-us/articles/25202605194257-Invisibility-on-a-local-network-why-we-had-to-build-a-broken-feature" target="_blank">here</a>.</p><p>Something that continues to impress is NordVPN’s kill switch. It's often the downfall of less secure VPN providers. In our security testing, a <a href="https://www.techradar.com/vpn/vpn-kill-switch-explained" target="_blank">kill switch</a> is key to ensuring your connection is never inadvertently exposed to bad actors, governments and the like.</p><p>We tried to break NordVPN’s kill switch in various ways, including uninstalling NordVPN’s network adapter driver while connected. Not only did NordVPN disconnect us successfully without any IP leaks, but it recognized the issue, reinstalled and activated the driver, and reconnected us, all within seconds.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="uRhVxq3Xibufwxup3ZYAz9" name="NordVPN kill switch settings screen on laptop at desk with coffee" alt="NordVPN kill switch settings screen on laptop at desk with coffee" src="https://cdn.mos.cms.futurecdn.net/uRhVxq3Xibufwxup3ZYAz9-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">NordVPN has an array of effective security settings, which can all be found in one place whether you're on desktop or mobile. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If we could wish for one thing to improve NordVPN’s kill switch, it would be moving away from the native kill switch system on Android devices. </p><p>Across all platforms aside from Android, you can turn the kill switch on and off as you please. On Android, the native kill switch forces you to use the VPN at all times and disconnects you completely from the internet should the connection fail. </p><p>While this is super-secure, it’s frustrating should you only require a VPN connection in certain situations. </p><p>Something we’ll cover in more depth in the <a href="#section-compatibility">compatibility section</a> is NordVPN’s feature parity across platforms. <a href="https://www.techradar.com/vpn/split-tunneling">Split tunneling</a>, another of NordVPN’s security capabilities, is a notable victim of some of NordVPN’s variations by device.</p><p>Windows users can create either a list of apps that must use the VPN or a list of apps that must not. Android users can only choose which apps won't use the VPN, and Mac and iOS users don’t get split tunneling at all – though this is reasonably common among VPNs owing to the security systems in place on Apple devices.</p><p>Our testing showed no reason to doubt NordVPN’s split tunneling capabilities, though it would be great to see its Android apps gain the same capabilities as Windows. Lacking the choice in this way puts NordVPN behind the likes of <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a> and <a href="https://www.techradar.com/reviews/protonvpn">Proton VPN</a>, which offer both choices on their Android apps.</p><p>We’ve mentioned <a href="https://www.techradar.com/vpn/vpn-services/nordvpn-launches-new-revolutionary-censorship-resistant-vpn-protocol">NordWhisper</a> already, but NordVPN also offers traditional obfuscated servers too. This is helpful since, at the time of writing, NordWhisper isn’t quite available on all platforms as yet – though Windows, Android, Linux, Mac, and iOS all have it already.</p><p>These servers, however, have one big problem: accessibility. Not only does NordVPN only offer obfuscated servers in 16 of its 127 countries, but also, depending on the app and protocol you’re using, you may not even see the option. NordVPN’s obfuscated servers only work over OpenVPN, which is understandable given the added security it brings, even if at a huge speed deficit, but if you’ve not manually selected OpenVPN as your protocol choice, your app may not show them. </p><p>Our testing on Apple devices showed the option simply doesn’t exist in the app unless you go into your settings and change to OpenVPN. </p><p>Windows and Android users don’t face the same issue. The option appears in the ‘Specialty Server’ section, no matter the protocol chosen, which makes much more sense and begs the question of why it isn’t this simple across all devices. </p><p>What’s more, the lack of locations means those in regions distant from a server will face even greater performance drops than you’d expect anyway from obfuscated servers.</p><p>Another feature lacking in locations is NordVPN’s Onion-over VPN capabilities, though in this instance, this is less of a problem since many providers don’t offer this at all. Onion-over VPN allows you to connect to sites on the <a href="https://www.techradar.com/reviews/tor-browser">Tor Network</a> while secured by a VPN connection, something only offered by Proton VPN among other top VPN providers. In NordVPN’s case, it offers three countries to connect to: the Netherlands, Sweden, and Switzerland. </p><p>By comparison, Proton’s six locations include Sweden and Switzerland, but the additions of France, Germany, Hong Kong, and the US give the VPN provider not only wider EU coverage but broader coverage worldwide. </p><p>As with any VPN connection, reduced locations often mean worse speeds, either due to distance to the server or the load the server is under, and NordVPN’s Onion-over VPN servers prove no different. </p><p><a href="https://www.techradar.com/vpn/vpn-privacy-security/what-is-onion-over-vpn">Onion-over VPN</a> connections (otherwise called Tor-over VPN) always require greater processing. That makes a dent on performance straight away, no matter the location, but the 741 Kbps download speeds we saw in testing demonstrate just how limited you can be, yes, that was Kbps by the way!</p><p>Finally, <a href="https://www.techradar.com/vpn/nordvpn-double-vpn">Double VPN</a>. This is NordVPN’s version of a multi-hop connection, though its simpler than some competitor alternatives. This is because NordVPN doesn’t allow you to choose your entry and exit server, unlike <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a>. </p><p>Even Proton, whose <a href="https://www.techradar.com/vpn/proton-vpn-secure-core" target="_blank">Secure Core Technology</a> limits the choices you have, gives users a few choices. We won’t directly compare NordVPN and Surfshark here, since Surfshark’s <a href="https://www.techradar.com/news/surfshark-adds-new-cutting-technology-to-its-vpn-service" target="_blank">Nexus technology</a> gives users complete freedom to multi-hop between every Surfshark server, something no other VPN provider offers. </p><p>Outside of the VPN itself, NordVPN also offers Next Gen Antivirus. This works at a deeper level, protecting your desktop devices from phishing and malicious URLs, as well as ads and trackers. It can even scan for and block malicious downloads. </p><p>While this is nice, there are several downsides. Firstly, Next Gen Antivirus, oddly,  isn’t actually an antivirus. It can’t scan files already on your computer for malware, nor can it remove them. Secondly, the full Next Gen Antivirus suite is only available on desktop devices, while mobile users only get Threat Protection.</p><p>That limitation puts NordVPN behind Surfshark here. Surfshark includes a full antivirus with its Surfshark One plan – and it works on mobile as well as desktop. </p><p>That said, you can hardly fault Next Gen Antivirus’s results.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Phishing Sites Blocked</strong></p></th><th  ><p><strong>Malware Sites Blocked</strong></p></th><th  ><p><strong>Ads blocked</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>NordVPN (Next Gen Antivirus)</strong></p></td><td  ><p>92%</p></td><td  ><p>80%</p></td><td  ><p>21%</p></td></tr><tr><td class="firstcol " ><p><strong>Proton VPN</strong></p></td><td  ><p>88%</p></td><td  ><p>0%</p></td><td  ><p>88%</p></td></tr><tr><td class="firstcol " ><p><strong>ExpressVPN</strong></p></td><td  ><p>76%</p></td><td  ><p>0%</p></td><td  ><p>86%</p></td></tr><tr><td class="firstcol " ><p><strong>Surfshark</strong></p></td><td  ><p>48%</p></td><td  ><p>28%</p></td><td  ><p>44%</p></td></tr></tbody></table></div><p>We tested Next Gen Antivirus against 50 brand-new malware-hosting and phishing pages, and it was the top-performing software of anything similar we tested among VPNs. It blocked 92% of phishing sites and 80% of malware sites. </p><p>By comparison, Surfshark Antivirus achieved only 48% and 28% in these same tests, putting a stretch ahead.</p><p>While these results do impress when compared to VPNs, a dedicated antivirus software performs far better than even Next Gen Antivirus.</p><p>The likes of<a href="https://www.techradar.com/reviews/avast-one"> Avast</a>, Norton, and ESET achieved equal or greater success in phishing protection tests carried out by AV-Comparatives in 2025. This is why we normally recommend picking up one of the <a href="https://www.techradar.com/best/best-antivirus">best antivirus software</a> in addition to your VPN of choice.</p><p>It's also worth mentioning that Next Gen Antivirus's remit is constantly expanding. In recent months, Email Protection, hijacked session and double extension alerts, search result safety indicators, and crypto wallet checks have all joined the mix. While many of these are niche solutions, they're a handy addition should they fit your everyday needs.</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-speed"><span>Speed</span></h2><ul><li>NordVPN is still <strong>among the fastest VPNs </strong>using WireGuard.</li><li>Minimal latency and jitter make the <strong>best VPN for gamers</strong>.</li><li><strong>Struggled over OpenVPN</strong> in latest speed tests.</li></ul><p>We recently completed our second round of testing using a 10 Gbps line with an increased number of data points. </p><p>This time around, NordVPN's NordLynx speeds saw a slight improvement, recording 1427 Mbps, having previously achieved 1249 Mbps. Despite this,  NordVPN remains slower than Proton VPN and Surfshark using WireGuard and <a href="https://www.techradar.com/vpn/expressvpn-lightway">ExpressVPN’s Lightway Turbo protocol</a>.</p><p>Take ExpressVPN’s results with a pinch of salt, though, since <a href="https://www.techradar.com/vpn/vpn-services/can-fast-be-faster-expressvpn-promises-its-possible" target="_blank">Lightway Turbo </a>is only available on its Windows app, and ExpressVPN has warned that it might cause issues with some websites and games.</p><p>None of that is true for NordLynx and, although Lightway Turbo’s 1479 Mbps speeds put it a margin ahead of NordLynx on paper, most users won’t see this difference in day-to-day usage.</p><p>Instead, you’ll likely benefit more from the added compatibility of NordLynx.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-performance"><p>Read more about NordVPN's performance ▼</p></div><p>NordLynx’s results do, however, put it among the best VPN protocols for gamers, since in our testing, it recorded only 7 ms latency and 2.2 ms jitter when connected to our nearest server.</p><p>High latency results in laggy gameplay, and high jitter can lead to unstable gameplay and stuttering, so recording latency and jitter at low result is key when choosing the <a href="https://www.techradar.com/vpn/best-gaming-vpn">best gaming VPN</a>.</p><p>Connecting to US NordVPN servers from the UK proved less effective, though still improved over last time around. NordLynx achieved 939 Mbps connecting over the pond this time, having only managed 688 Mbps last time. </p><p>This is still slower than many other VPNs over the same distance. That said, you'll rarely struggle with these results no matter what streaming or gaming you test it with. </p><p>NordVPN did still hold up well for latency and jitter over long distance, proving, again, that it's a great gaming VPN choice – perfect, in this instance for avoiding unwanted lag while connecting to servers abroad for gaming, streaming, or other high-intensity tasks.</p><p>Unfortunately, NordVPN's OpenVPN performance has yet again dropped off. Previously registering 688 Mbps, it now only achieved 633 Mbps, much lower than several other top VPNs. </p><p><strong>Score: 9/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-unblocking-streaming-services"><span>Unblocking streaming services</span></h2><ul><li><strong>Only struggled with two streaming services </strong>we tested.</li><li><strong>Never encountered unwanted CAPTCHAs</strong>, or dropouts.</li><li>All servers are <strong>streaming optimized.</strong></li></ul><p>NordVPN was the clear winner in our latest unblocking testing. It struggled with the fewest streaming services of every VPN we've tested.</p><p>We test Netflix, across the US, UK, Australia, Canada, and Japan, Prime Video, Disney+, and YouTube. We also tested NordVPN at unblocking local free streaming services, including BBC iPlayer, ITVX, C4, 9Now, and 10Play.</p><p>Only YouTube US and Prime Video Australia proved inaccessible. Aside from these, we never encountered VPN detection, unwanted CAPTCHAs during login, or any dreadful lag, buffering or connection dropouts to ruin our streaming experience. This was the same whether we were attempting to watch something live or catching up on demand.</p><p>So, while there are now some small blips on NordVPN's record, most won't be heavily impacted. </p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-unblocking-capabilities"><p>Read more about NordVPN's unblocking capabilities ▼</p></div><p>Proton VPN, ExpressVPN, and Surfshark all equally struggled with US YouTube. Proton also struggled with Disney+ USA alongside ITVX and Channel 4 in the UK. Surfshark suffered a spread of issues across platforms worldwide, a big change from a near-flawless performance last time out. </p><p>What was even more impressive was the lack of impact of NordVPN's Threat Protection Pro ad-blocker. Normally, we find that the ad-blockers of VPN services disrupted the streaming capabilities of local, ad-based services like Channel 4 and ITV, but we saw no such issues with NordVPN. The same cannot be said of Proton VPM and Surfshark. </p><p>NordVPN never found itself unable to load services due to their advert reel requirements, even when connecting to ad-based services abroad, such as Peacock. Top marks.</p><p>Something certainly playing into this success is that all of NordVPN’s servers are streaming-optimized. This move not only means you never have to scroll through to find those with the correct optimization, but it also means you’re never short of another server to connect to if one struggles to connect to the streaming service you’re trying to access.</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-p2p-and-torrenting"><span>P2P and torrenting</span></h2><ul><li>Most<strong> servers are P2P optimized.</strong></li><li><strong>Lots of guides</strong> to help beginners get started.</li><li><strong>No port forwarding</strong> support.</li></ul><p>Nothing summarizes NordVPN’s torrenting capabilities more than the fact that all but four of its countries offer <a href="https://www.techradar.com/vpn/what-is-p2p" target="_blank">P2P-optimized servers</a> – sorry to those looking to torrent connected to Albania, Bosnia and Herzegovina, Moldova, and North Macedonia! </p><p>What’s more, finding the server you need is super simple. NordVPN’s P2P-optimized locations can be found in its Specialized Servers section on any app, and you even get the option to quickly connect to the fastest server if you’re not after somewhere specific and would rather sheer performance.</p><p>Thankfully, NordVPN’s speed capabilities mean your torrenting experience is likely to be more limited by your peers than your VPN. What’s more, its security measures meant we never found ourselves receiving warnings from our ISP when testing its capabilities with <a href="https://www.techradar.com/reviews/utorrent">uTorrent</a>, no matter if we were using NordLynx or OpenVPN.</p><p>As is standard among top VPNs, NordVPN doesn’t support <a href="https://www.techradar.com/how-to/how-to-port-forward">port forwarding</a> due to the security risks posed. A full blog article outlines their reasons for this, which you can read <a href="https://nordvpn.com/blog/port-forwarding/" target="_blank" rel="nofollow">here</a>.</p><p>If you’re new to torrenting, it’s also great to see NordVPN has a whole variety of guides for setting up proxies with popular torrenting services, including <a href="https://www.techradar.com/reviews/bittorrent">BitTorrent</a>, <a href="https://www.techradar.com/reviews/utorrent">uTorrent</a>, and <a href="https://www.techradar.com/reviews/qbittorrent">qBittorrent</a>. They’re easy to digest and come with all the information you need packed in, too.</p><p><strong>Score: 4/5</strong></p><h2 class="article-body__section" id="section-compatibility"><span>Compatibility</span></h2><ul><li><strong>Apps for every platform</strong> – including Linux GUI and routers.</li><li><strong>A similar look</strong> across almost every app.</li><li>No<strong> Threat Protection Pro</strong> on mobile.</li></ul><p>NordVPN has apps across every platform out there, including a GUI <a href="https://www.techradar.com/vpn/best-linux-vpn" target="_blank">Linux VPN</a> and <a href="https://www.techradar.com/news/best-vpn-routers">router VPN</a> capabilities, alongside the expected web extensions and smart TV apps.</p><p>The majority of NordVPN's apps share a similar feel and consequently enough regularity that the features you can access will be found where you’d expect them. Smart TVs are, as expected with most VPNs, the platform with the most differentiation in layout, but that change brings added simplicity and makes it easy to use.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Windows</p></th><th  ><p>Mac</p></th><th  ><p>iOS </p></th><th  ><p>Android</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Protocols</strong></p></td><td  ><p>NordLynx, NordWhisper, OpenVPN (TCP and UDP)</p></td><td  ><p>NordLynx, NordWhisper, OpenVPN (TCP and UDP)</p></td><td  ><p>NordLynx, NordWhisper, OpenVPN (TCP and UDP)</p></td><td  ><p>NordLynx, NordWhisper, OpenVPN (TCP and UDP)</p></td></tr><tr><td class="firstcol " ><p><strong>Kill switch</strong></p></td><td  ><p>3-mode kill switch including VPN and application specific settings</p></td><td  ><p>Application-level kill switch</p></td><td  ><p>VPN connection failure killswitch</p></td><td  ><p>Android-native kill switch only</p></td></tr><tr><td class="firstcol " ><p><strong>Split tunnelling</strong></p></td><td  ><p>Disable or Enable based split tunnelling</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>Disable only</p></td></tr><tr><td class="firstcol " ><p><strong>Auto-connect</strong></p></td><td  ><p>WiFi, ethernet, or mobile network settings. Plus custom or fastest location choice</p></td><td  ><p>Can be set to auto connect when using untrusted WiFi networks. Plus location choice</p></td><td  ><p>Can be set up for all networks, no networks, or WiFi only. Plus location choice</p></td><td  ><p>All networks, Wifi, or mobile networks settings. Plus location choice</p></td></tr><tr><td class="firstcol " ><p><strong>Threat Protection Pro</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>Basic Threat Protection only</p></td><td  ><p>Basic Threat Protection only</p></td></tr></tbody></table></div><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-compatibility"><p>Read more about NordVPN's compatibility ▼</p></div><p>I mentioned already that NordVPN isn’t stellar in terms of its feature-parity across platforms, but for the most part, NordVPN’s compatibility is nothing to be concerned about.</p><p>As you can see, in the table below, like most VPNs, Windows gets everything, and iOS users get the least. In amongst this, though, are several key differentiators.</p><p>NordVPN users on iOS and Mac don't get to enjoy s<a href="https://www.techradar.com/vpn/split-tunneling" target="_blank">plit tunneling</a>. In the past, that proved difficult for all VPN providers on iOS and Mac due to Apple's security infrastructure, but now the likes of <a href="https://www.techradar.com/reviews/ipvanish-vpn" target="_blank">IPVanish</a> and <a href="https://www.techradar.com/reviews/surfshark" target="_blank">Surfshark</a> are beginning to roll the feature out. NordVPN users have no such luck.</p><p>It’s not often that we see Android users facing big feature shortfalls as well but, most frustrating, of the absentees is that there's no <a href="https://www.techradar.com/pro/nordvpn-threat-protection-pro-is-now-even-better-at-keeping-you-safe">Threat Protection Pro</a> on any mobile devices. That's a real loss.</p><p>Threat Protection Pro is the best-performing VPN security add-on we've tested, and is a notable step up from the results we saw basic <a href="https://www.techradar.com/vpn/nordvpn-threat-protection">Threat Protection</a>, which mobile users do get.</p><p>By comparison, <a href="https://www.techradar.com/news/surfshark-launches-antivirus-to-go-alongside-your-vpn">Surfshark's full antivirus</a> capabilities are available across any platform, including the regular file scanning feature – something not offered by NordVPN.</p><p><strong>Score: 4/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-usability"><span>Usability</span></h2><ul><li>Simple set up – but <strong>ensure you disable auto-renewals.</strong></li><li><strong>Similar user experience</strong> across most apps.</li><li>Reducing the use of the map has <strong>improved functionality hugely.</strong></li></ul><h2 id="set-up">Set up</h2><p>Setting up NordVPN is simple enough. Once you’re signed up, you can download the VPN directly from the website (unless you’ve signed up within the iOS or Android app, in which case you’ll have already installed it to do so). From there, you’re almost on your own.</p><p>Loading the installer gives you the option of also adding <a href="https://www.techradar.com/reviews/nordpass">NordPass</a> and the NordVPN browser extension to your device. Both are great tools and super handy to have – and then you’re straight into the NordVPN app.</p><p>Something we recommend doing as soon as you’re in is stopping your auto-renewals. This will stop you getting a nasty and very expensive surprise when your initial NordVPN agreement runs out.</p><p>Stop auto-renewal by heading to the Account section of your Settings menu. It takes almost no time at all.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-usability"><p>Read more about NordVPN's usability ▼</p></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="eRoMh94zDi2myDraB5BszN" name="NordVPN website download screen on laptop with a coffee" alt="NordVPN website download screen on laptop with a coffee" src="https://cdn.mos.cms.futurecdn.net/eRoMh94zDi2myDraB5BszN-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">You can find the quickest ways to download each of NordVPN's apps via its website, including web extensions.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 id="user-experience">User Experience</h2><p>NordVPN is as close to identical as it can be across the majority of its apps nowadays, which is only a good thing for sure.</p><p>The only times you’ll see anything especially different is on smart TVs, as is expected with most VPNs, and streaming devices such as Fire TV Sticks.</p><p>Older Fire TV Sticks, especially, will be in for a shock, as, depending on your device generation, you can be hit with a much older-appearing UI than anywhere else. </p><p>Even NordVPN's Chrome extension shares a similar feel. While you can't use it to access <a href="https://www.techradar.com/vpn/what-is-a-vpn-protocol">VPN protocols</a> or specialist servers, you're never left wondering where anything is.</p><p>What's more, you're still equipped with everything from the kill switch, auto-connect, and split tunneling, to otherwise hidden features such as location spoofing, which is only available via the web extension and sets your browser to the location and time zone of your VPN server. It's by no means perfect, but you have all the essential tools in a familiar package.</p><p>One of NordVPN’s quirky inclusions in its desktop and mobile apps used to be an interactive map interface you could use to select your server. While this did look rather pleasing, we’ve never found ourselves using it in all the years it’s been there, nor did it ever do anything to make the connection process quicker. So, we’re glad to see it getting phased out on desktop devices in favor of more screen space for features such as Threat Protection Pro.</p><p>This change makes it supremely quick and easy access to almost every tool, whether on mobile or desktop.</p><p>The home screen brings quick access to every VPN country available, each of NordVPN’s specialty server types, <a href="https://www.techradar.com/vpn/what-is-meshnet" target="_blank">Meshnet</a>, Dark Web Monitoring, and the three key aspects of Threat Protection Pro – anti-malware, advanced browser protection, and ad and tracker blocking.</p><p>Accessing these features in more detail is as simple as clicking the corresponding icon on the side-nav, and once you’re where you want to be, you’re greeted by explainer after explainer giving you everything you need to know to understand the tool and how it’ll benefit either your VPN connection or your online security. </p><p>I do have two gripes with the desktop version however:</p><p>Firstly, the search bar isn’t the most advanced. While some VPN providers will allow you to search for a location and choose between its specific capabilities, for example, P2P or obfuscated, Nord’s shows you the location as though you were connecting normally. </p><p>If you’re after, say, a P2P server, you’d have to search P2P, and then choose a server from the icon that appears – a method slower than simply choosing P2P in the specialty servers section you’re greeted with on the home screen. </p><p>Secondly, the desktop app no longer offers both choices of pausing your connection or disconnecting entirely. Instead, you now get a pause button which, once clicked, becomes a dropdown with a series of pause durations alongside a disconnect button. </p><p>While I understand adding steps to the disconnection process reduces the chance someone will, thus improving their security, for those of us who know when we do and don’t want to be connected, it’s an unnecessary added step. Still, it's a pretty minor beef.</p><p>Mobile users get a similarly efficient experience, which we love. While it retains the interactive map, you can access every country, Meshnet, and all of Nord’s Specialty Servers from your home screen – though, understandably given screen restraints, there’s no room for Threat Protection or Dark Web Monitoring this time round. </p><p>You still get the same detailed explanations of each feature and setting throughout the app, though you’re still stuck with the same limited search capabilities and pause button that the desktop app uses. </p><p>Oddly, something omitted from the main screen across desktop and mobile is any reference to key features, such as protocols or the kill switch. To set up or change these, you need to head into the settings instead. What’s more, while on desktop you can click one button to set the server you’re connected to as your auto-connect, you’re given no such convenience on mobile – though for many this won’t be so useful. </p><p>Aside from the minor gripes, NordVPN’s apps are the best they’ve been in years – efficient, clean to look at, and easy for beginners.</p><p>The few issues we’ve found, and their minor impact show just how much thought has gone into NordVPN's usability across the board.</p><p><strong>Score: 5/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-accessibility"><span>Accessibility</span></h2><ul><li>NordVPN's website is <strong>among the most accessible VPN websites.</strong></li><li><strong>Not a huge amount</strong> of language support.</li><li>Keyboard-only navigation <strong>could be better</strong>.</li></ul><p>We put <a href="http://nordvpn.com" target="_blank">NordVPN.com</a> through an AccessibilityChecker audit, and its score of 83% puts it among the most accessible VPN websites out there. It scores higher than Proton VPN (35%), Surfshark (41%), and ExpressVPN (21%) and PIA (10%). This makes it the most accessible VPN website of all our <a href="https://www.techradar.com/vpn/best-vpn">best VPNs</a>.</p><div id="crow-inpage-content"><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');        #fv-chart-1765993020521-aorml67bt *, #fv-chart-1765993020521-aorml67bt *:before, #fv-chart-1765993020521-aorml67bt *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1765993020521-aorml67bt { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1765993020521-aorml67bt {        position: relative !important; overflow: visible !important;        --riv-primary: #2E6E93;    }    #fv-chart-1765993020521-aorml67bt .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;    }        /* Typography */    #fv-chart-1765993020521-aorml67bt .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: #1F2937 !important; font-size: 1.25rem !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; }    #fv-chart-1765993020521-aorml67bt .fv-chart-subhead { font-size: 1rem !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #6B7280 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; }    #fv-chart-1765993020521-aorml67bt .rv-chart-caption { font-size: 15px !important; color: #6B7280 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    #fv-chart-1765993020521-aorml67bt .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; }    /* Footer */    #fv-chart-1765993020521-aorml67bt .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1765993020521-aorml67bt .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1765993020521-aorml67bt .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; }    /* Display Mode Controls */    #fv-chart-1765993020521-aorml67bt .fv-dropdown-container { text-align: center !important; margin-bottom: 16px !important; }    #fv-chart-1765993020521-aorml67bt .fv-dropdown {        width: 100% !important; max-width: 350px !important; padding: 8px 12px !important; font-size: 14px !important; line-height: 1.2 !important;        border: 2px solid #d1d5db !important; border-radius: 8px !important; background-color: #ffffff !important; color: #374151 !important;        cursor: pointer !important; appearance: none !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 8 4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 12px center !important; background-repeat: no-repeat !important; background-size: 14px !important; padding-right: 35px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1765993020521-aorml67bt .fv-dropdown:hover { border-color: var(--riv-primary) !important; }    #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .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: 13px !important; color: #6b7280 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1765993020521-aorml67bt .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1765993020521-aorml67bt .fv-carousel-counter { font-size: 14px !important; color: #6b7280 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #4B5563 !important; }    #fv-chart-1765993020521-aorml67bt .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1765993020521-aorml67bt .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1765993020521-aorml67bt .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;    }    #fv-chart-1765993020521-aorml67bt .fv-bar-row, #fv-chart-1765993020521-aorml67bt .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #4B5563 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1765993020521-aorml67bt .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; }    #fv-chart-1765993020521-aorml67bt .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1765993020521-aorml67bt .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; color: white !important; font-size: 14px !important; font-weight: bold !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; overflow: hidden !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #4B5563 !important; white-space: nowrap !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Stacked Bar */    #fv-chart-1765993020521-aorml67bt .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1765993020521-aorml67bt .fv-segment-value { font-size: 14px !important; font-weight: bold !important; color: white !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; }    /* Grouped Bar */    #fv-chart-1765993020521-aorml67bt .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1765993020521-aorml67bt .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1765993020521-aorml67bt .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: #4B5563 !important; text-transform: none !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1765993020521-aorml67bt .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1765993020521-aorml67bt .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1765993020521-aorml67bt .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #6B7280 !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #6B7280 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #6B7280 !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-1765993020521-aorml67bt .fv-y-axis-title {        font-size: 15px !important;        color: #6B7280 !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;    }    /* Mobile / Forced Mobile View */    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-pie-container { flex-direction: column !important; gap: 1rem !important; }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-bar-row,    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-stacked-product,    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-grouped-bar-product {        flex-direction: column !important;        align-items: flex-start !important;        margin-bottom: 1.25rem !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-bar-label,    #fv-chart-1765993020521-aorml67bt.mobile-view .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-1765993020521-aorml67bt.mobile-view .fv-bar-container,    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-bar-cluster {        width: 100% !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-x-axis-wrapper {        margin-left: 0 !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-x-axis-label-space {        display: none !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-x-axis-chart-space {        padding-right: 0 !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-benchmark-title { font-size: 16px !important; }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-logo { width: 60px !important; max-width: 60px !important; }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-carousel-nav-btn { padding: 6px 8px !important; font-size: 11px !important; }    @media (max-width: 500px) {         #fv-chart-1765993020521-aorml67bt .fv-pie-container { flex-direction: column !important; gap: 1rem !important; }        #fv-chart-1765993020521-aorml67bt .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }        #fv-chart-1765993020521-aorml67bt .fv-bar-row,        #fv-chart-1765993020521-aorml67bt .fv-stacked-product {            flex-direction: column !important;            align-items: flex-start !important;            margin-bottom: 1.25rem !important;        }        #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .fv-bar-container {            width: 100% !important;        }        #fv-chart-1765993020521-aorml67bt .fv-x-axis-wrapper:not(.fv-grouped-x-axis) {            margin-left: 0 !important;        }        #fv-chart-1765993020521-aorml67bt .fv-x-axis-label-space:not(.fv-grouped-x-axis .fv-x-axis-label-space) {            display: none !important;        }        #fv-chart-1765993020521-aorml67bt .fv-x-axis-chart-space {            padding-right: 0 !important;        }        #fv-chart-1765993020521-aorml67bt .fv-benchmark-title { font-size: 16px !important; }        #fv-chart-1765993020521-aorml67bt .fv-logo { width: 60px !important; max-width: 60px !important; }        #fv-chart-1765993020521-aorml67bt .fv-carousel-nav-btn { padding: 6px 8px !important; font-size: 11px !important; }        #fv-chart-1765993020521-aorml67bt .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1765993020521-aorml67bt.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }          </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Website Accessibility Scores",  "description": "AccessibilityChecker audit of the home pages of each VPN website",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2025-12-17T17:37:00.522Z",  "citation": "NordVPN offers a very easy to navigate website for those with visual accessibility needs. The apps could have better keyboard-only support, though.",  "keywords": [    "NordVPN",    "Surfshark",    "ExpressVPN",    "Proton VPN",    "PureVPN",    "Mullvad",    "IPVanish",    "CyberGhost",    "AdGuard VPN",    "PrivadoVPN",    "Hotspot Shield",    "TunnelBear",    "Accessibility score",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "NordVPN – Accessibility score",      "value": 83,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "Surfshark – Accessibility score",      "value": 41,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "ExpressVPN – Accessibility score",      "value": 23,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "Proton VPN – Accessibility score",      "value": 35,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "PureVPN – Accessibility score",      "value": 35,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "Mullvad – Accessibility score",      "value": 89,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "IPVanish – Accessibility score",      "value": 71,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "CyberGhost – Accessibility score",      "value": 17,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "AdGuard VPN – Accessibility score",      "value": 17,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "PrivadoVPN – Accessibility score",      "value": 10,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "Hotspot Shield – Accessibility score",      "value": 23,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "TunnelBear – Accessibility score",      "value": 74,      "unitText": "%"    }  ]}</script>        <div id="fv-chart-1765993020521-aorml67bt" class="fv-chart-wrapper ">        <div class="fv-inner-wrapper">            <h3 class="fv-chart-title">Website Accessibility Scores</h3>            <p class="fv-chart-subhead">AccessibilityChecker audit of the home pages of each VPN website</p>                        <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1765993020521-aorml67bt-bar-Accessibility score" data-chart-type="Bar" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Accessibility score</h4><div class="fv-bar-row" title="NordVPN - Accessibility score: 83 Percent">                <div class="fv-bar-label fv-primary-product">NordVPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #0033A0;" data-target-width="83">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">83</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="Surfshark - Accessibility score: 41 Percent">                <div class="fv-bar-label ">Surfshark</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #1CA9C4;" data-target-width="41">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">41</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="ExpressVPN - Accessibility score: 23 Percent">                <div class="fv-bar-label ">ExpressVPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #E33235;" data-target-width="23">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">23</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="Proton VPN - Accessibility score: 35 Percent">                <div class="fv-bar-label ">Proton VPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #9333EA;" data-target-width="35">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">35</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="PureVPN - Accessibility score: 35 Percent">                <div class="fv-bar-label ">PureVPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #470ca4;" data-target-width="35">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">35</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="Mullvad - Accessibility score: 89 Percent">                <div class="fv-bar-label ">Mullvad</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #f5cd22;" data-target-width="89">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">89</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="IPVanish - Accessibility score: 71 Percent">                <div class="fv-bar-label ">IPVanish</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #6db642;" data-target-width="71">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">71</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="CyberGhost - Accessibility score: 17 Percent">                <div class="fv-bar-label ">CyberGhost</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #f7c603;" data-target-width="17">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">17</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="AdGuard VPN - Accessibility score: 17 Percent">                <div class="fv-bar-label ">AdGuard VPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #2E6E93;" data-target-width="17">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">17</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="PrivadoVPN - Accessibility score: 10 Percent">                <div class="fv-bar-label ">PrivadoVPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #E8238C;" data-target-width="10">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">10</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="Hotspot Shield - Accessibility score: 23 Percent">                <div class="fv-bar-label ">Hotspot Shield</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #5DA8D4;" data-target-width="23">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">23</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="TunnelBear - Accessibility score: 74 Percent">                <div class="fv-bar-label ">TunnelBear</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #F06EAF;" data-target-width="74">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">74</span></div>                    </div>                                    </div>            </div>        <table class="sr-only">            <caption>Accessibility score Data</caption>            <thead><tr><th>Product</th><th>Value (Percent)</th></tr></thead>            <tbody><tr>                <td>NordVPN</td>                <td>83</td>            </tr><tr>                <td>Surfshark</td>                <td>41</td>            </tr><tr>                <td>ExpressVPN</td>                <td>23</td>            </tr><tr>                <td>Proton VPN</td>                <td>35</td>            </tr><tr>                <td>PureVPN</td>                <td>35</td>            </tr><tr>                <td>Mullvad</td>                <td>89</td>            </tr><tr>                <td>IPVanish</td>                <td>71</td>            </tr><tr>                <td>CyberGhost</td>                <td>17</td>            </tr><tr>                <td>AdGuard VPN</td>                <td>17</td>            </tr><tr>                <td>PrivadoVPN</td>                <td>10</td>            </tr><tr>                <td>Hotspot Shield</td>                <td>23</td>            </tr><tr>                <td>TunnelBear</td>                <td>74</td>            </tr></tbody>        </table></div></div></div>                                          <div class="fv-bottom-bar" style="display: flex">                        <div class="fv-footer-content" style="display: block;">                    <div class="rv-chart-caption">NordVPN offers a very easy to navigate website for those with visual accessibility needs. The apps could have better keyboard-only support, though.</div>                </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" />      </div>            </div>    </div>            <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      function initialize() {        var chartWrapper = document.getElementById('fv-chart-1765993020521-aorml67bt');        if (!chartWrapper) {          console.error('Chart wrapper with ID fv-chart-1765993020521-aorml67bt not found.');          return;        }                function animateBars(chartElement) {          if (!chartElement) return;          var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');          bars.forEach(function(bar, index) {            var targetWidth = bar.dataset.targetWidth;            if (targetWidth === undefined) return;            // Bars start at width: 0% in HTML, so we just animate them            setTimeout(function() {              bar.style.width = targetWidth + '%';            }, index * 50 + 100);          });        }        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';                p.style.strokeDashoffset = '0';              }, 100);            }          });          var dots = lineSvg.querySelectorAll('.riv-dot');          dots.forEach(function(dot, i) {            dot.style.opacity = '0';            setTimeout(function() {                dot.style.transition = 'opacity 0.3s ease';                dot.style.opacity = '1';            }, 500 + i * 10);          });        }                        var charts = chartWrapper.querySelectorAll('.fv-chart-item');        // Animate initial view        if ("All Charts" === "All Charts") {          charts.forEach(function(chart) {            var chartType = chart.dataset.chartType;            if (chartType === 'Line') {              animateLineChart(chart);                          } else if (chartType !== 'Pie') {              animateBars(chart);            }          });        } else if (charts.length > 0) {          var firstChart = charts[0];          var firstChartType = firstChart.dataset.chartType;          if (firstChartType === 'Line') {            animateLineChart(firstChart);                      } else if (firstChartType !== 'Pie') {            animateBars(firstChart);          }        }                if (charts.length > 1 && "All Charts" !== "All Charts") {          var currentChartIndex = 0;          var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');          var captionEl = chartWrapper.querySelector('.rv-chart-caption');                    var placeholderSubhead = "Subhead to describe the test and what's being measured and why";          var placeholderCaption = "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized";          var globalSubheadJSON = "AccessibilityChecker audit of the home pages of each VPN website";          var globalCaptionJSON = "NordVPN offers a very easy to navigate website for those with visual accessibility needs. The apps could have better keyboard-only support, though.";          var globalSubhead = globalSubheadJSON === placeholderSubhead ? '' : globalSubheadJSON;          var globalCaption = globalCaptionJSON === placeholderCaption ? '' : globalCaptionJSON;          var subheadOverrides = {};          var captionOverrides = {};          var chartInfo = [{"id":"bar-Accessibility score","title":"Accessibility score"}];          var captionOverrideKeys = Object.keys(captionOverrides);          var singleCaptionOverrideValue = captionOverrideKeys.length === 1 ? captionOverrides[captionOverrideKeys[0]] : null;          if (singleCaptionOverrideValue === placeholderCaption) {            singleCaptionOverrideValue = '';          }          function showChart(index) {            if (index < 0 || index >= charts.length) return;            charts.forEach(function(chart, i) {              chart.style.display = i === index ? 'block' : 'none';            });            currentChartIndex = index;                        var activeChart = charts[index];            var chartType = activeChart.dataset.chartType;            if (chartType === 'Line') {                animateLineChart(activeChart);                            } else if (chartType !== 'Pie') {                animateBars(activeChart);            }                        var activeChartId = chartInfo[index].id;            if (subheadEl) {              var subheadContent = (subheadOverrides[activeChartId] !== undefined)                ? (subheadOverrides[activeChartId] === placeholderSubhead ? '' : subheadOverrides[activeChartId])                : globalSubhead;              subheadEl.innerHTML = subheadContent;            }            if (captionEl) {                var captionContent;                if (captionOverrides[activeChartId] !== undefined) {                    captionContent = captionOverrides[activeChartId] === placeholderCaption ? '' : captionOverrides[activeChartId];                } else if (singleCaptionOverrideValue !== null) {                    captionContent = singleCaptionOverrideValue;                } else {                    captionContent = globalCaption;                }                                captionEl.innerHTML = captionContent;                var captionContainer = captionEl.closest('.fv-footer-content');                if (captionContainer) {                    var hasContent = captionContent && captionContent.trim() !== '';                    var shouldShow = hasContent || (captionContainer.parentElement && captionContainer.parentElement.querySelector('.fv-logo'));                    if (captionContainer.parentElement) captionContainer.parentElement.style.display = shouldShow ? 'flex' : 'none';                    captionContainer.style.display = hasContent ? 'block' : 'none';                }            }                        var dropdown = chartWrapper.querySelector('.fv-dropdown');            if (dropdown) dropdown.value = index;            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            if (carouselTitle) carouselTitle.innerHTML = chartInfo[index].title;                        var counter = chartWrapper.querySelector('.fv-carousel-counter');            if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;          }          var dropdown = chartWrapper.querySelector('.fv-dropdown');          if (dropdown) dropdown.addEventListener('change', function(e) { showChart(parseInt(e.target.value)) });          var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');          if (prevBtn) prevBtn.addEventListener('click', function() { showChart((currentChartIndex - 1 + charts.length) % charts.length) });          var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');          if (nextBtn) nextBtn.addEventListener('click', function() { showChart((currentChartIndex + 1) % charts.length) });        }        chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {            var chartId = legend.dataset.chart;            var chart = document.getElementById(chartId); // Uses page-unique ID            if (!chart) return;            var lines = chart.querySelectorAll('.riv-line-path');            var dots = chart.querySelectorAll('.riv-dot');            legend.querySelectorAll('.riv-legend-item').forEach(function(item) {                var productName = item.dataset.product;                var line = chart.querySelector('.riv-line-path[data-product="' + productName + '"]');                var productDots = chart.querySelectorAll('.riv-dot[data-product="' + productName + '"]');                var highlight = function() {                    if (legend.querySelector('.isolated')) return;                    lines.forEach(function(l) { l.style.opacity = '0.3' });                    dots.forEach(function(d) { d.style.opacity = '0.3' });                    if (line) line.style.opacity = '1';                    productDots.forEach(function(d) { d.style.opacity = '1' });                };                var clearHighlight = function() {                    if (legend.querySelector('.isolated')) return;                    lines.forEach(function(l) { l.style.opacity = '1' });                    dots.forEach(function(d) { d.style.opacity = '1' });                };                                var toggleIsolate = function() {                    var isIsolated = item.classList.contains('isolated');                    legend.querySelectorAll('.riv-legend-item').forEach(function(i) { i.classList.remove('isolated') });                                        if (isIsolated) {                        lines.forEach(function(l) { l.style.opacity = '1' });                        dots.forEach(function(d) { d.style.opacity = '1' });                    } else {                        item.classList.add('isolated');                        lines.forEach(function(l) { l.style.opacity = '0.3' });                        dots.forEach(function(d) { d.style.opacity = '0.3' });                        if (line) line.style.opacity = '1';                        productDots.forEach(function(d) { d.style.opacity = '1' });                    }                };                item.addEventListener('mouseenter', highlight);                item.addEventListener('focus', highlight);                item.addEventListener('mouseleave', clearHighlight);                item.addEventListener('blur', clearHighlight);                item.addEventListener('click', toggleIsolate);                item.addEventListener('keydown', function(e) {                    if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggleIsolate(); }                });            });        });      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', initialize);      } else {        initialize();      }      function sendMessageToParentWindow(typeOfMessage, message = null) {          let url = (window.location.ancestorOrigins && window.location.ancestorOrigins.length > 0) ? window.location.ancestorOrigins[0] : '*';          window.parent.postMessage({ analytics: { ...message } }, url);      }      sendMessageToParentWindow('analytics', { type: "fv-loaded", timestamp: new Date().toISOString() });    })();      </script>  </div><p>The site passed all interaction and navigational checks. One element failed a screenreader test due to a prohibited ARIA attribute, and 36 elements failed visual and structural accessibility tests because of poor contrast between foreground and background.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-accessibility"><p>Read more about NordVPN's accessibility ▼</p></div><p>On investigating the contrast issue, it turned out it referred to text that became clearer when scrolled over.</p><p>Looking at NordVPN on desktop, we found it supports 13 languages, including options including English, French, German, Italian, Polish, Portuguese, Japanese, Korean and Chinese (Simplified and Traditional.)</p><p>However, much like Surfshark, it lacked others, including Arabic, Turkish, and Swedish. This seems a simple enough area both NordVPN and Surfshark can improve on, especially since providers such as <a href="https://www.techradar.com/reviews/norton-secure-vpn">Norton VPN</a> and Proton VPN have 26 and 28 languages supported, respectively.</p><p>Keyboard support on NordVPN is also not the best. Disconnecting our mouse for a second, it quickly became apparent that doing anything other than actually connecting to a VPN server wasn't easy enough.</p><p>Unless you’d happened to connect to where you wanted to recently – so it’d appear in your ‘Recent Connections’ list – it was nearly impossible to get a connection going. Using Meshnet, Threat Protection Pro, or anything else, however, was simple.</p><p>An easy comparison to make here is with PIA, whose app allows you to scroll its country list, highlight a country, and connect within a few taps of the keyboard – it really should be this simple.</p><p><strong>Score: 2/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-customer-support"><span>Customer support</span></h2><ul><li><strong>24/7 live chat and email support</strong> available alongside a support site</li><li><strong>Easy access to support</strong> via the apps</li><li><strong>Excellent</strong> online user guides.</li></ul><p>NordVPN offers several customer support options, including a support site, 24/7 live chat, and a 24/7 email ticketing system.</p><p>Usefully, the app gives you easy access to raising a ticket or accessing the support site if you need help.</p><p>We found running diagnostic testing from within the app when you encounter a problem helps speed up the support process, as it reduces the number of additional questions agents need to ask. You can even include a list of apps installed on the impacted device in case any of them may be a contributing factor that the support agent can identify.</p><p>Putting its Live Chat service to the test, we found it sufficiently responsive, with an agent responding typically after 2-3 minutes. Its email service wasn’t so hasty. We had to wait around 18 hours before receiving a response to our test question. </p><p>Despite its sluggishness, the email system was effective. Our agent solved our test issue by asking a selection of relevant questions at once, collecting our responses, and using them to diagnose the problems.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-customer-support"><p>Read more about NordVPN's customer support ▼</p></div><p>It was also refreshing to avoid the typical customer support responses of “have you reinstalled the app?” or “have you cleared your cookies?” since the questions we were asked required detailed enough responses that there was no need. This also reduced the amount of back-and-forth required to resolve our test issues. </p><p>NordVPN’s customer support page is also very helpful. It doesn't bombarded the reader with category options to click between straight away, as is expected nowadays. Instead, you’re greeted by five overarching categories, one of which is about exploring other Nord Security products. So, in reality, four categories, and a search bar.</p><p>There is a trade-off for usability, though. For example, entering any of the categories removes the search bar from your screen, forcing you instead to use the breadcrumb trail at the top of the page to return to the main screen and search from there. </p><p>This leaves you doing a lot of unnecessary navigation if you’re merely looking for a quick fix, especially if you’ve clicked through several options in the categories already to try and find your answers that way.</p><p>To NordVPN's credit, once you find the article you need, it's usually extremely helpful.</p><p>For example, Nord’s proxy setup guide for uTorrent not only gives you the super-clear steps you need, but it also tells you how to then check that what you’ve done is working.</p><p>This is great for any kind of VPN user and typically of how strong NordVPN is on customer support.</p><p><strong>Score: 4/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-user-reviews"><span>User reviews</span></h2><p>Although all review sites should be approached with a level of skepticism, they do offer a good enough gauge of how trustworthy a VPN is and how well it performs if you’re looking at a quick glance. </p><p>Across Google Play and the App Store, NordVPN has ratings equal to the very top VPNs. Its rating on TrustPilot is lower than most at only 4.2 out of 5, with 12% of the 44,000+ reviews being 1-star too.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Google Play</p></th><th  ><p>App Store</p></th><th  ><p>Trustpilot</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>NordVPN</p></td><td  ><p>4.6</p></td><td  ><p>4.7</p></td><td  ><p>4.2</p></td></tr><tr><td class="firstcol " ><p>Windscribe</p></td><td  ><p>4.6</p></td><td  ><p>4.6</p></td><td  ><p>4.7</p></td></tr><tr><td class="firstcol " ><p>Surfshark</p></td><td  ><p>4.5</p></td><td  ><p>4.7</p></td><td  ><p>4.5</p></td></tr><tr><td class="firstcol " ><p>PIA</p></td><td  ><p>4.6</p></td><td  ><p>4.7</p></td><td  ><p>4.3</p></td></tr><tr><td class="firstcol " ><p>ExpressVPN</p></td><td  ><p>4.4</p></td><td  ><p>4.7</p></td><td  ><p>4.2</p></td></tr></tbody></table></div><p>The majority of negative reviews on Trustpilot surround NordVPN’s auto-renewals, which, should you be worried about it, can be turned off in a matter of clicks. We recommend doing this early on in your subscription to ensure you’re not stung down the line.</p><h2 class="article-body__section" id="section-track-record-can-you-trust-nordvpn"><span>Track record: can you trust NordVPN?</span></h2><ul><li><strong>Reasonably spotless reputation </strong>throughout its history.</li><li><strong>2018 breach is only notable blot</strong> on its record.</li><li><strong>Currently facing some lawsuits</strong> around its auto-renewal practices.</li></ul><p>NordVPN’s history is, for the most part, positive, though 2018 proved to be a tricky year.</p><p>A breach in March 2018 saw NordVPN’s reputation tarnished, in part due to the obvious security concerns, but mainly since it didn’t admit to the breach for another 18 months, with the announcement coming only in October 2019.</p><p>The breach was only to one VPN server in Finland, and NordVPN explained in the belated announcement that none of NordVPN’s own servers were compromised, claiming the breach “was made possible by poor configuration on a third-party data center’s part”.</p><p>NordVPN was supposedly only made aware of the issue in April 2019, prompting a review and the consequent delay in announcing the breach to customers. </p><p>It’s not thought that any identifiable data was stolen in the breach, due to its small scale and the fact that it didn’t breach Nord’s central infrastructure, and all 5,000 servers NordVPN used at the time were audited on the breach’s discovery to remove further vulnerabilities.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-track-record"><p>Read more about NordVPN's track record ▼</p></div><p>NIST’s vulnerability database also has three weaknesses on record from that same year, though thankfully, none in the seven years since, suggesting that there’s little to worry about now. </p><p>In 2019, NordVPN would become one of the founding members of the <a href="https://www.techradar.com/news/expressvpn-nordvpn-back-vpn-alliances-new-vti-principles">VPN Trust Initiative (VTI)</a>, an industry-led consortium focused on “improving digital safety for consumers by building understanding, strengthening trust, and mitigating risk for VPN users”.</p><p>This consortium also consists of ExpressVPN, StrongVPN, Surfshark, and <a href="http://encrypt.me">encrypt.me</a>, and aims to improve public trust in VPNs and help users make informed decisions.</p><p>While this bears no direct impact on its reputation, it’s a clear sign of good intent from NordVPN that has shown little reason to be doubted since.</p><p>NordVPN would go on to experience around five years with its reputation out of the spotlight, but a lawsuit against its auto-renewal practices would abruptly end this.</p><p>Wittels McInturff Palikovic (WMP) filed a $100m lawsuit against the VPN provider, alleging that it "uses deceptive and illegal auto-renewal practices" in August 2024. In May 2025, a second action was filed on similar grounds.  </p><p>While this case remains ongoing, the topic of auto-renewals remains on the lips of almost all VPN users, with many of the <a href="https://www.techradar.com/vpn/best-vpn">best VPNs</a> adopting similar practices.</p><p>This has lead to similar instances across the industry of users facing unexpected payments for subscriptions and getting pretty upset about it.</p><p>If you’re concerned about getting stung, we recommend turning off auto-renewal once you’re logged into NordVPN. You can do that as soon as you've installed it in a matter of a few clicks.</p><p>NordVPN's latest headache came in January 2026, when <a href="https://www.techradar.com/vpn/vpn-services/nordvpn-denies-data-breach-after-hackers-claim-salesforce-leak-heres-everything-we-know-so-far">a hacker claimed to have breached a NordVPN development server</a>. No sensitive user information was compromised in the alleged breach, and NordVPN has continuously denied its success. </p><p><strong>Score: 4/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-final-verdict"><span>Final verdict</span></h2><figure class="van-image-figure pull-left inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1024px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="KUA6mAHyebQs5vgkbGjJ9V" name="review-score-90" alt="Review score 90" src="https://cdn.mos.cms.futurecdn.net/KUA6mAHyebQs5vgkbGjJ9V-1920-80.jpg" mos="" align="left" fullscreen="" width="1024" height="1024" attribution="" endorsement="" class="pull-leftinline" /></p></div></div><figcaption itemprop="caption description" class="pull-left inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Gemini)</span></figcaption></figure><p>NordVPN is the <a href="https://www.techradar.com/vpn/best-vpn">best VPN</a> for most people. While it’s more expensive than Surfshark, it has superior streaming performance, comparable speeds, and a suite of features, including the <a href="https://www.techradar.com/best/password-manager">best password manager</a> available, depending on the plan you choose. </p><p>We recommend a NordVPN Plus plan over its other alternatives. It provides tools, including premium password management and ad and tracker protection, as well as malware blocking and data breach alerts, all alongside its full VPN capabilities.</p><h2 id="who-should-use-nordvpn">Who should use NordVPN?</h2><p><strong>✅  Those looking for top streaming performance: </strong>NordVPN performed near-flawlessly across our streaming tests. It had no issue unblocking any provider we threw at it aside YouTube US and Prime Video Australia. It never struggles with buffering or unexpected dropouts. Plus, it has apps for almost any platform you might wish to stream on. </p><p><strong>✅ </strong> <strong>Those wanting a top password manager alongside the VPN: </strong>Included in Plus plans and above, <a href="https://www.techradar.com/reviews/nordpass">NordPass</a> ranks as our top password manager right now. It offers passkey support, features including secure password sharing and strength detection, and is compatible with almost any platform. </p><p><strong>✅  Those wanting effective ad and malware blocking:</strong> NordVPN Threat Protection Pro performed the best in our latest testing for protection against malware and blocking ads.</p><div class="product"><a data-dimension112="d9891db8-c1cb-11f1-907a-370cff521b83" data-action="Deal Block" data-label="Try NordVPN from $3.39 per month" data-dimension48="Try NordVPN from $3.39 per month" href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="x3Zrr6LPF4qKNzdXj4H4t6" name="NordVPN deal image.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/x3Zrr6LPF4qKNzdXj4H4t6-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow" data-dimension112="d9891db8-c1cb-11f1-907a-370cff521b83" data-action="Deal Block" data-label="Try NordVPN from $3.39 per month" data-dimension48="Try NordVPN from $3.39 per month" data-dimension25=""><strong>Try NordVPN from $3.39 per month</strong></a></p><p>If you’re looking for the best value NordVPN plan, you should pick up a Plus plan. Available in every region, you can find NordVPN, the Plus plan, which gives you a strong mix of security features in addition to the VPN. These include NordPass, Threat Protection Pro, and data breach alerts. All NordVPN plans come with a 30-day money-back guarantee in case you don't like it. We've tried the guarantee for ourselves and it works.<a class="view-deal button" href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow" data-dimension112="d9891db8-c1cb-11f1-907a-370cff521b83" data-action="Deal Block" data-label="Try NordVPN from $3.39 per month" data-dimension48="Try NordVPN from $3.39 per month" data-dimension25="">View Deal</a></p></div><h2 id="who-should-try-a-different-vpn-instead">Who should try a different VPN instead?</h2><p>❌<strong> Those wanting full antivirus protection included: </strong>While Threat Protection Pro offers solid security capabilities, it is by no means a fully-fledged antivirus. Providers such as Surfshark offer true antivirus protection in their more premium plans, alongside features included with NordVPN such as ad and malware protection. </p><div class="product"><a data-dimension112="d9891ed0-c1cb-11f1-8b7b-b3639a1fdc47" data-action="Deal Block" data-label="from $1.99 per month" data-dimension48="from $1.99 per month" href="http://get.surfshark.net/aff_c?offer_id=61&amp;aff_id=1691&amp;url_id=2409&amp;aff_sub2=free" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="pSwRio45uPDhdN5egHcYF" name="Surfshark deal image.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pSwRio45uPDhdN5egHcYF-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Surfshark</strong>: <a href="http://get.surfshark.net/aff_c?offer_id=61&amp;aff_id=1691&amp;url_id=2409&amp;aff_sub2=free" target="_blank" rel="nofollow" data-dimension112="d9891ed0-c1cb-11f1-8b7b-b3639a1fdc47" data-action="Deal Block" data-label="from $1.99 per month" data-dimension48="from $1.99 per month" data-dimension25="">from $1.99 per month</a><br /><strong>The best cheap VPN</strong><br />Surfshark is the second-best VPN we’ve tested overall, offers P2P optimization on all its servers, and even offers full antivirus protection on its One and One+ plans. What’s more, it’s over $1/month cheaper than NordVPN, and comes with unique features including Alternative ID, which enables you to spoof your name, address, and email – you can even spoof your phone number if you’re located in the US!<a class="view-deal button" href="http://get.surfshark.net/aff_c?offer_id=61&amp;aff_id=1691&amp;url_id=2409&amp;aff_sub2=free" target="_blank" rel="nofollow" data-dimension112="d9891ed0-c1cb-11f1-8b7b-b3639a1fdc47" data-action="Deal Block" data-label="from $1.99 per month" data-dimension48="from $1.99 per month" data-dimension25="">View Deal</a></p></div><h2 id="nordvpn-faqs">NordVPN FAQs</h2><section class="article__schema-question"><h3>Does NordVPN have a free trial?</h3><article class="article__schema-answer"><p>NordVPN does offer a free trial; however, it’s only available on its Android and iOS apps. Signing up to NordVPN from anywhere other than Apple’s App Store or the Google Play Store will only give you access to NordVPN’s 30-day money-back guarantee. </p></article></section><section class="article__schema-question"><h3>Does NordVPN work in China?</h3><article class="article__schema-answer"><p>Yes, our latest testing indicates that NordVPN not only works in China, but is also among the <a href="https://www.techradar.com/news/best-vpn-for-china-our-5-top-choices" target="_blank">best VPNs for China</a>. </p></article></section><section class="article__schema-question"><h3>Is NordVPN blocked by Netflix?</h3><article class="article__schema-answer"><p>No, our testing indicates that NordVPN works perfectly with Netflix. In fact, we rate it among the <a href="https://www.techradar.com/vpn/best-netflix-vpn">best VPNs for Netflix</a></p></article></section><h3 class="article-body__section" id="section-nordvpn-testing-methodology"><span>NordVPN testing methodology</span></h3><p>Throughout this review, I'll refer to things either 'I' or 'we' have seen. Whenever I say 'I' have seen something, this means it is something I, Rob Dunne, and I've seen it in hands-on testing of NordVPN.</p><p>When talking about things that 'we' have seen, this refers to anything uncovered during our technical lab testing. This is performed by <a href="https://www.techradar.com/author/mike-williams">VPN Technical Editor, Mike Williams</a>.</p><p>We test each VPN every six months. These tests cover speed, ad-blocking, anti-phishing and malware, streaming service unblocking, and local <a href="https://www.techradar.com/pro/what-is-an-ip-address">IP address</a> leaks. Plus,  the server networks are spot-checked to confirm that the <a href="https://www.techradar.com/pro/vpn/what-are-vpn-servers">VPN server</a> locations are accurate. We also check through each <a href="https://www.techradar.com/vpn/best-vpn">VPN</a> provider's security credentials, privacy policy, and executable files.</p><p>You can take a look at our <a href="https://www.techradar.com/vpn/latest-vpn-testing-and-results">VPN testing methodology</a> to see the full measures we put each VPN through.</p><p>The TechRadar VPN team fact-checks every VPN review we write, using our own research and knowledge alongside information provided by NordVPN. We update this review regularly to include any new features or information about the product, ensuring that what you’re reading is 100% up to date and as you would find the product if you downloaded and used it today.</p><p>If you notice anything while using NordVPN that doesn't match what you read on this page, please let us know in the comments or by emailing us. We will then do our best to offer product support information or include corrections and warnings to other users, depending on which is appropriate.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/reviews/nordvpn</link>
                                                                            <description>
                            <![CDATA[ Is this really the "world’s most advanced VPN?" We answer this question and many more in our NordVPN review. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CiUAgVWMqnW3QP2VLGUypj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JmRoEizww7795f5Whgk4Jh-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 16:36:03 +0000</pubDate>                                                                                                                                <updated>Wed, 04 Nov 2026 16:36:07 +0000</updated>
                                                                                                                                            <category><![CDATA[VPN Services]]></category>
                                                    <category><![CDATA[VPN]]></category>
                                                                                                                    <dc:creator><![CDATA[ Rob Dunne ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/SpemWktMnbiQ2SSmQ9RYtb-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Rob is VPN Editor for TechRadar. Coming from a background in phones and technology, Rob has long been putting himself, and his data, online. Finding out the easy, and hard, ways to stay secure online is something that has come along the way – not without being victim to a number of nasty data breaches that is.&lt;/p&gt;&lt;p&gt;Using his experiences and broader knowledge of the technology world, Rob strives to provide the latest ways to stay secure and private online. Whether that be simple steps such as two-factor authentication and password management, or more advanced options such as setting up VPNs, alternative online aliases and more.&lt;/p&gt;&lt;p&gt;In an ever-busy life outside of work, Rob is constantly engaging in tech across areas such as fitness and smart wearables to help him with his continuous work in the gym or on the tennis court, as well as keeping up to date on the latest in the gaming industry with the latest releases across PC and console a constant release from day to day life. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;To share a story or tip, email robert.dunne@futurenet.com&lt;/strong&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JmRoEizww7795f5Whgk4Jh-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[NordVPN apps running on various devices during TechRadar&#039;s testing]]></media:description>                                                            <media:text><![CDATA[NordVPN apps running on various devices during TechRadar&#039;s testing]]></media:text>
                                <media:title type="plain"><![CDATA[NordVPN apps running on various devices during TechRadar&#039;s testing]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JmRoEizww7795f5Whgk4Jh-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-how-we-tested-nordvpn"><span>How we tested NordVPN</span></h2><h2 class="article-body__section" id="section-nordvpn-review-scores"><span>NordVPN review scores</span></h2><div ><table><thead><tr><th class="firstcol " ><p>Category</p></th><th  ><p>Score</p></th><th  ><p>Comments</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Total</strong></p></td><td  ><p>90 / 100</p></td><td  ><p>Top notch features, watertight security, and the best streaming performance out there by a distance all solidify NordVPN as the best VPN available right now. <a href="#section-final-verdict"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Price plans &amp; value</p></td><td  ><p> 8 / 10</p></td><td  ><p>Despite its hefty price rises, NordVPN's array of plans and features give you more than enough value no matter your choice.  <a href="#section-nordvpn-price-plans"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Features</p></td><td  ><p>10 / 10</p></td><td  ><p>NordVPN is set apart by some of its unique features. Meshnet is something offered by no other VPN, Next Gen Antivirus  is the best of any similar product offered, and NordPass is the best password manager out there. Plus, there's a whole bunch more <a href="#section-features-what-can-nordvpn-do"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Server network</p></td><td  ><p>10 / 10</p></td><td  ><p>NordVPN's server network is unmatched. While some providers offer more locations in specific regions, no-one is as well spread as NordVPN is. <a href="#section-server-network-and-locations"><strong>Read more </strong>▼</a></p></td></tr><tr><td class="firstcol " ><p>Privacy</p></td><td  ><p>10 / 10</p></td><td  ><p>Based in Panama, with an airtight, audited no-logs policy, secure, proprietary protocols, and a host of privacy-focused settings, you can't dislike NordVPN in this regard. <a href="#section-privacy"><strong>Read more ▼</strong></a></p></td></tr></tbody></table></div><div class="collapsible-block-start"></div><div class="collapsible-block-title"strong-read-all-of-nordvpn-s-review-scores-strong"><p><strong>Read all of NordVPN's review scores ▼</strong></p></div><div ><table><tbody><tr><td class="firstcol " ><p>Security</p></td><td  ><p>10 / 10</p></td><td  ><p>NordVPN scores top marks here thanks to its commitments both now and in the future. Next Gen Antivirus is top notch, post-quantum encryption is already in place, and it has top-grade encryption for the current generation too. <a href="#section-security"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Speed</p></td><td  ><p>9 / 10</p></td><td  ><p>Good speeds, superb latency and jitter, a top performer all-around for whatever your needs are. <a href="#section-speed"><strong>Read more </strong>▼</a></p></td></tr><tr><td class="firstcol " ><p>Unblocking streams</p></td><td  ><p>10 / 10</p></td><td  ><p>NordVPN performed flawlessly in our unblocking tests. Zero issues, zero blocks, on every service, top marks! <a href="#section-unblocking-streaming-services"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>P2P &amp; Torrenting</p></td><td  ><p>4 / 5</p></td><td  ><p>Despite not offering port-forwarding, NordVPN offers near complete P2P optimization coverage on its servers and offers a suite of guides to help users get going if they need them, <a href="#section-p2p-and-torrenting"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Apps &amp; Compatibility</p></td><td  ><p>4 / 5</p></td><td  ><p>NordVPN has apps for every platform, which all look great and work flawlessly no matter your device. Its only limitation is its feature imparity across platforms which, while improved in recent years, still has room for improvement. <a href="#section-compatibility"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Usability</p></td><td  ><p>5 / 5</p></td><td  ><p>Dropping the interactive map and honing in on quick access to tools has made NordVPNs apps easy to use no matter your VPN experience, plus the experience is near identical everywhere. <a href="#section-usability"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Accessibility</p></td><td  ><p>2 / 5</p></td><td  ><p>NordVPN's accessibility is good enough but by no means perfect. It has an average spread of languages, some amount of keyboard support, and some contrast issues. But, for the most part it comfortably among the most accessible VPNs. <a href="#section-accessibility"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p>Customer support</p></td><td  ><p>4 / 5</p></td><td  ><p>NordVPN's customer support is among the best available.  Several options to find a solution, responsive live chat, and well considered conversations with email agents all help a user greatly. Its only area for improvement is usability in terms of its FAQ navigation. <a href="#section-customer-support"><strong>Read more ▼</strong></a></p></td></tr><tr><td class="firstcol " ><p> Track record</p></td><td  ><p>4 / 5</p></td><td  ><p>NordVPN for the most part has a shiny clean track record to be admired. However a breach in 2019 and its ongoing legal battles surround auto-renewals leaves a level of doubt available for some.  <a href="#section-track-record-can-you-trust-nordvpn"><strong>Read more ▼</strong></a></p></td></tr></tbody></table></div><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-nordvpn-price-plans"><span>NordVPN price plans </span></h2><ul><li>Prices start <strong>from $3.49/month</strong> with NordVPN Basic.</li><li><strong>Complete offers the best value</strong> balance of features and price.</li><li><strong>Auto-renewal fees are eye-watering – remember to opt out.</strong></li></ul><div ><table><caption>NordVPN per month price</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>NordVPN Basic</strong></p></td><td  ><p><strong>NordVPN Complete (US-only)</strong></p></td><td  ><p><strong>NordVPN Prime (US-only)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>1-month</strong></p></td><td  ><p>$14.99</p></td><td  ><p>$19.99</p></td><td  ><p>$29.99</p></td></tr><tr><td class="firstcol " ><p><strong>1-year </strong>(+3 extra months)</p></td><td  ><p>$4.99/month</p></td><td  ><p>$5.99/month</p></td><td  ><p>$8.99/month</p></td></tr><tr><td class="firstcol " ><p><strong>2-year </strong>(+3 extra months)</p></td><td  ><p>$3.49/month</p></td><td  ><p>$3.99/month</p></td><td  ><p>$6.99/month</p></td></tr></tbody></table></div><p>NordVPN has changed some of its plans and their respective prices in recent months. It’s removed the Plus tier and now offers three tiers instead of four: Basic, Complete, and Prime. </p><p>While all countries offer Basic and Complete plans, top-tier plans vary by country: in the US it's Prime, in Canada it’s Ultra, and in the UK it’s known as Ultimate Max. For this review, we're primarily focusing on the US plans. </p><p>Still, one constant is that you can secure up to 10 devices simultaneously – matching <a href="https://www.techradar.com/reviews/expressvpn">ExpressVPN</a> and <a href="https://www.techradar.com/reviews/protonvpn">Proton VPN</a>.</p><p><a href="https://www.techradar.com/vpn/nordvpn-price-deals-discounts-offers">NordVPN’s current pricing</a> puts it at the premium end. It’s particularly expensive when comparing its one-month subscription plans. While its entry-level Basic plan is $14.99/month – the same as ExpressVPN – the latter’s mid- and top-tier equivalents are significantly cheaper.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-price-plans"><p>Read more about NordVPN's price plans ▼</p></div><p>There’s little reason to choose NordVPN if you want the flexibility of a short-term plan. Only Surfshark’s base tier is more expensive at $18.95. </p><p>You’re better off considering Proton Plus at $9.99/month, or <a href="https://www.techradar.com/reviews/private-internet-access-vpn">PIA</a> for $11.99/month. Let’s not forget <a href="https://www.techradar.com/reviews/mullvad">Mullvad</a> either, which, at €5 a month (roughly $5.60 at the time of writing), is a steal - three months of Mullvad is almost the same price as one month of NordVPN Basic.</p><p>Where NordVPN gets more competitive is with its one- and two-year subscriptions. This is where the steep discounts kick in, though you’ll need to pay the full amount upfront. </p><p>One-year prices of $4.99, $5.99, and $8.99/month are on par with ExpressVPN and Proton VPN. However, <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a> has the edge, offering plans from just $2.99 a month.</p><p>Two-year plans deliver the biggest savings. NordVPN’s prices of $3.49, $3.99, and $6.99/month put it below those of ExpressVPN. Proton VPN is similarly priced, but Surfshark is cheaper, starting at $2.19/month.</p><div ><table><caption>NordVPN total price (pre-tax)</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>NordVPN Basic</strong></p></td><td  ><p><strong>NordVPN Complete (US-only)</strong></p></td><td  ><p><strong>NordVPN Prime (US-only)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>1-month</strong></p></td><td  ><p>$14.99</p></td><td  ><p>$19.99</p></td><td  ><p>$29.99</p></td></tr><tr><td class="firstcol " ><p><strong>1-year </strong>(+3 extra months)</p></td><td  ><p>$74.85</p></td><td  ><p>$89.85</p></td><td  ><p>$134.85</p></td></tr><tr><td class="firstcol " ><p><strong>2-year </strong>(+3 extra months)</p></td><td  ><p>$94.23</p></td><td  ><p>$107.73</p></td><td  ><p>$188.73</p></td></tr></tbody></table></div><p>When you total the yearly cost, the numbers won’t add up – that’s because you’re getting three extra months included too. Also note that the prices quoted are pre-tax, and the final bill will increase based on your country’s sales tax.</p><p>There isn’t too much of a gulf between the total price you pay for NordVPN’s Basic and Complete plans, at least not initially. Upgrading from Basic to Complete costs just $1.00/month more on the annual plan, or $0.50/month more over two years. </p><p>This represents solid value considering it adds Nord’s <a href="https://www.techradar.com/vpn/vpn-services/nordvpns-next-gen-antivirus-aces-independent-testing-with-a-96-percent-phishing-block-rate">next-gen antivirus</a>, call, email, and message protection, a password manager, and cloud storage.</p><p>The bigger price jump is between Complete and Prime – $45 upfront for the annual term, or $81 for the two-year plan, for advanced identity protection via Coveron. That’s an extra $3/month either way, though it won’t be worth it if you’re outside the US since Coveron’s identity protection is US-only.</p><div ><table><caption>NordVPN auto-renewal prices</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>NordVPN Basic</strong></p></td><td  ><p><strong>NordVPN Complete (US-only)</strong></p></td><td  ><p><strong>NordVPN Prime (US-only)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>1-year (pre-tax)</strong></p></td><td  ><p>$139.08</p></td><td  ><p>$219.48</p></td><td  ><p>$296.28</p></td></tr><tr><td class="firstcol " ><p><strong>2-year (pre-tax)</strong></p></td><td  ><p>$278.16</p></td><td  ><p>$438.86</p></td><td  ><p>$592.56</p></td></tr></tbody></table></div><p>We then have to consider <a href="https://www.techradar.com/vpn/vpn-services/nordvpn-hit-with-yet-another-lawsuit-over-difficult-to-cancel-auto-renewal-subscriptions">NordVPN’s auto-renewal prices</a> which are significant to say the least. Take NordVPN’s Complete plan over two years, for example. That’s just $107.73 for the initial two-year term, but it rises a staggering 358% on renewal to $438.86.</p><p>You’re not just paying more later, either – you’re also getting fewer months. The initial term throws in three extra months so your lump sum stretches over 27 months; the renewal charges full price for just 24.</p><p>If anything, this is a reminder to make sure you turn off auto-renewal upon signup to prevent any nasty surprises further down the line. And if you want the best NordVPN deal, you’ll likely find the deepest discounts during major sales events like <a href="https://www.techradar.com/black-friday/vpn-black-friday-deals">Black Friday</a>.</p><p><strong>Price and plans score: 8/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-features-what-can-nordvpn-do"><span>Features: What can NordVPN do?</span></h2><ul><li><strong>NordVPN Basic and Plus</strong> plans are the same across the world.</li><li>Full <strong>NordProtect cyber-insurance</strong> only available in the US.</li><li><strong>NordPass password manager</strong> included with all plans apart from Basic.</li></ul><h2 id="nordvpn-basic">NordVPN Basic</h2><p>The Basic plan from NordVPN does exactly what the name suggests. The main feature is the VPN product itself and not too much more. It's the same full VPN software as available on all NordVPN plans.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="LddzPGAzqxECKXqYxNnVf9" name="NordVPN running in dark mode on a laptop on desk" alt="NordVPN running in dark mode on a laptop on desk" src="https://cdn.mos.cms.futurecdn.net/LddzPGAzqxECKXqYxNnVf9-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">All of the best features available with NordVPN can be swiftly accessed via its redesigned home screen.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 id="nordvpn-plus">NordVPN Plus</h2><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-features"><p>Read more about NordVPN features ▼</p></div><p>The Plus plan is my favorite NordVPN plan. Available in any region, it strikes a good balance between value and power by incorporating what I think are NordVPN’s most essential tools and features.</p><p>Most notably, you’re given Next Gen Antivirus. This adds malware protection via file scanning, ad-blocking capabilities (including tracker blocking), and measures to protect against phishing and other malicious websites. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="UraaoMJmyEJfaD68iaANLH" name="NordVPN in dark mode running Threat Protection Pro" alt="NordVPN in dark mode running NExt Gen Antivirus" src="https://cdn.mos.cms.futurecdn.net/UraaoMJmyEJfaD68iaANLH-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Next Gen Antivirus is an effective protective solution, even if you can only access it on desktop at the time of writing.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unfortunately, these improvements can only be seen on NordVPN’s desktop apps, which is great if your home PC is the device you’re most concerned about, but leaves you short-changed across all of your mobile devices.</p><p>This is especially unfortunate since <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a>, for example, offers its complete protective toolkit for mobile too – including antivirus on Android, which NordVPN doesn’t have whatsoever. </p><p>Something included across almost any device, however, is <a href="https://www.techradar.com/reviews/nordpass" target="_blank">NordPass</a>. We rate NordPass as the <a href="https://www.techradar.com/best/password-manager">best password manager</a> available right now, so getting it thrown in alongside your VPN package is some serious value.</p><p>It’s compatible across all major desktop operating systems, as well as popular web browsers such as Chrome, Brave, Firefox, Edge, and Opera, and of course, iOS and Android mobile devices. </p><div ><table><caption>Compare NordVPN plan availability</caption><thead><tr><th class="firstcol empty" ></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow">Basic Plan</a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Plus Plan </strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Complete Plan</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Ultimate Plan</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Prime Plan</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Ultra Plan</strong></a></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>US</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td></tr><tr><td class="firstcol " ><p><strong>UK</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td></tr><tr><td class="firstcol " ><p><strong>Canada</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Australia </strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td></tr></tbody></table></div><p>NordPass encrypts your passwords using XChaCha20 but also secures password generation, passkey support, and easy synchronization of data between platforms, so you’re never stuck without the details you need.</p><p>What's more, you can use NordPass' data breach scanning – which is traditionally kept for premium NordPass plans. That said, we found it only worked through the NordVPN app, which could be confusing if you're using it alongside NordPass.</p><h2 id="nordvpn-complete">NordVPN Complete </h2><p>Entering the upper echelons of NordVPN is where things get complex since, as mentioned, no one country gets the same premium plans. For the moment, we’ll stick with what the US gets.</p><p>NordVPN Complete adds two features to the spread offered by a Plus Plan: firstly, 1 TB of <a href="https://www.techradar.com/pro/vpn/what-is-e2ee">end-to-end encrypted</a> storage. For an extra dollar a month, that may initially seem to be a great deal, but first, consider whether the added storage is actually going to be used. </p><p>If, like me, you’ve already pushed the limits of your free storage allowances on systems like Google and iCloud, then maybe it will, but will the added storage outweigh the convenience these services offer? The value for money for that 1 TB of storage is good, but, if you won’t use it, why pay more?</p><p>In terms of the value, it’s definitely worth mentioning that among the top VPN providers, only <a href="https://www.techradar.com/reviews/protonvpn">Proton VPN</a> currently offers encrypted storage with any of its packages.</p><p>Though to get 500 GB of storage with Proton, you pay $3 per month more than you’d pay for a NordVPN Complete plan. And that makes NordVPN Complete comparatively better value if storage with your VPN is a priority.</p><p>Next up is Scam Call Protection. This is NordVPN's latest feature addition, offering potential scam detection, caller identification, and caller categorization (such as telemarketers). For now, this is an Android-only feature, NordVPN has confirmed it's planning to bring the functionality to iPhone users soon. </p><h2 id="nordvpn-prime">NordVPN Prime</h2><p>Prime only brings one new thing to the party, though this time it’s a biggie – NordProtect.</p><p><a href="https://www.techradar.com/pro/security/nordprotect-made-me-rethink-how-i-protect-my-personal-information-online" target="_blank">NordProtect</a> is an all-in-one package aimed at protecting your identity at all costs. Firstly, <a href="https://www.techradar.com/pro/what-is-dark-web-monitoring">Dark Web Monitoring</a> searches for your social security number, phone number, and email on the dark web 24/7, with immediate notifications should anything be found.</p><p>Your credit card also gets similar protection. 1-Bureau credit monitoring notifies you about changes, including inquiries into your credit file, new accounts, and unauthorized use. You can also make use of VantageScore credit scoring, should you wish for insights into how to improve your credit.</p><p>TransUnion, the company behind VantageScore, also provides credit freeze assistance as part of NordProtect. This not only helps to prevent credit card fraud, but also ensures your credit score isn’t impacted if you fall victim to it.</p><p>If that wasn’t enough, you’re also provided with identity theft insurance up to $1M in coverage, and cyber extortion insurance up to $100K in coverage.</p><p>All this protection does come at a hefty cost, however, as Prime Plans start from $6.99 per month on the two-year plan.</p><p>That takes your total payment to $50 more than Complete, and your cost on renewal rises to around $340 before tax. So, make sure you really need NordProtect before signing up.</p><div ><table><caption>Compare NordVPN features</caption><thead><tr><th class="firstcol empty" ></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow">Basic Plan</a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Plus </strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Complete</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Ultimate</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Ultra</strong></a></p></th><th  ><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><strong>Prime</strong></a></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>VPN</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Next Gen Antivirus </strong></p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Ad and tracker blocker</strong></p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Password manager</strong></p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Data breach scanning</strong></p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>1TB encrypted cloud storage</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Cyber insurance (up to £5,000)</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td></tr><tr><td class="firstcol " ><p><strong>Identity theft insurance (up to $1M)</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Cyber extortion insurance (up to $100k)</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td></tr><tr><td class="firstcol " ><p><strong>Incogni personal data removal</strong></p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>✅</p></td><td  ><p>❌</p></td></tr></tbody></table></div><p>A surprising omission from almost all NordVPN plans worldwide is Incogni. Developed by Nord Security, NordVPN and Surfshark’s parent company,<a href="https://www.techradar.com/reviews/incogni" target="_blank"> Incogni</a> is a data removal tool that removes your personal information from company databases and people search sites, helping reduce the risk of scams, fraud, and identity theft.</p><p>Only Canada’s Ultra plan includes Incogni. Though, much like the US Prime plan, you’ll be forking out a fair sum for it, with prices starting from CA$8.19 per month.</p><p>If there’s one constant piece of advice we can give about picking a NordVPN plan, it’s this: know what you want. They all offer value, but only if you actually use the features you're buying.</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-server-network-and-locations"><span>Server network and locations</span></h2><ul><li><strong>Most countries covered</strong> of any tested VPN (150).</li><li><strong>Most locations overall</strong> with 225</li><li><strong>Approximately 8,000</strong>-strong network of RAM-only servers.</li></ul><p>NordVPN offers the largest selection of server locations of any VPN we test. Nobody beats NordVPN's 225 locations, while only Proton VPN's 149 countries come close to NordVPN's chart-topping 150</p><p>The spread of these locations also earns it top marks. 77 locations in North America is the most of any VPN, 54 locations in Europe are only usurped by NymVPN, ExpressVPN, and Proton VPN, and 30 locations in Africa are only topped by Proton’s 33. </p><p>NordVPN also remains top for locations in South America and Oceania, while its 43 Asian locations keep it second to Proton VPN's 51. </p><p>The provider offers around 79 virtual locations in regions where physical servers are not possible. This is perfect if you're travelling to regions with tight internet restrictions and require a stable, secure connection. However, you can't see in-app which locations are virtual when on Windows, which is unfortunate. </p><p>Much like other top VPNs, NordVPN’s network runs on RAM-only servers. This is now reasonably standard practice, since RAM-only servers not only ensure no user data is accidentally stored (since they wipe on reboot) but they are also more efficient in terms of speed, latency, and power consumption.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-server-network"><p>Read more about NordVPN's server network ▼</p></div><p>This ensures the servers are capable of handling NordVPN’s various server uses, be that <a href="https://www.techradar.com/vpn/what-is-p2p">P2P</a>, <a href="https://www.techradar.com/vpn/nordvpn-double-vpn">multi-hop</a>, or <a href="https://www.techradar.com/vpn/what-is-meshnet">Meshnet</a>, without noticeable drops in performance. </p><p>Handily, NordVPN also recently made all of its servers P2P compatible. That means you no longer need to select a dedicated P2P server from the dedicated 'Speciality Servers' list, instead, you can use whichever NordVPN server works best for your needs. </p><p>Earlier in 2025, <a href="https://www.techradar.com/vpn/vpn-services/vpn-server-count-doesnt-matter-nordvpn-throws-a-challenge-to-the-vpn-industry" target="_blank">NordVPN threw a challenge to the VPN industry</a>, claiming that the exact number of servers across its locations isn’t important. This means we no longer have a precise figure to use to compare NordVPN with its competitors. </p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>NordVPN</p></th><th  ><p>Surfshark</p></th><th  ><p>ExpressVPN</p></th><th  ><p>Proton VPN</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>North America</p></td><td  ><p><strong>77</strong></p></td><td  ><p>34</p></td><td  ><p>71</p></td><td  ><p>39</p></td></tr><tr><td class="firstcol " ><p>South America</p></td><td  ><p><strong>12</strong></p></td><td  ><p>10</p></td><td  ><p>9</p></td><td  ><p>10</p></td></tr><tr><td class="firstcol " ><p>Europe</p></td><td  ><p><strong>54</strong></p></td><td  ><p>54</p></td><td  ><p>58</p></td><td  ><p>53</p></td></tr><tr><td class="firstcol " ><p>Asia</p></td><td  ><p><strong>43</strong></p></td><td  ><p>32</p></td><td  ><p>36</p></td><td  ><p>48</p></td></tr><tr><td class="firstcol " ><p>Oceania</p></td><td  ><p><strong>9</strong></p></td><td  ><p>6</p></td><td  ><p>8</p></td><td  ><p>7</p></td></tr><tr><td class="firstcol " ><p>Africa</p></td><td  ><p><strong>30</strong></p></td><td  ><p>6</p></td><td  ><p>6</p></td><td  ><p>31</p></td></tr></tbody></table></div><p>Surfshark, a VPN also owned by Nord Security, uses around 4,500 servers currently, while Proton VPN uses over 15,000. Our latest research suggests NordVPN's figure is somewhere over 8,000 servers, which is above average, but by no means the most.</p><p>Realistically, however, we rarely see VPN servers reach absolute maximum load, and, frankly, with the spread of locations NordVPN has, you'll never be short of another place to connect to. There's really nothing we can complain about here, loads of locations, RAM-only servers, top marks!</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-privacy"><span>Privacy</span></h2><ul><li><strong>Strong, privacy-focused protocol choices</strong> – NordLynx and NordWhisper</li><li><strong>Double VPN and Onion over VPN</strong> boost privacy and anonymity</li><li><strong>Tapjacking protection is a handy bonus</strong> for Android users</li></ul><p>NordVPN’s privacy is founded on its <a href="https://www.techradar.com/pro/vpn/the-difference-between-no-logs-and-zero-logs-vpns-and-why-it-matters">no-logs policy</a>. Not only is the policy in depth, but it has been audited six times, <a href="https://www.techradar.com/vpn/vpn-services/independent-auditors-confirm-nordvpn-never-stores-your-data-for-the-6th-time" target="_blank">most recently by Deloitte at the end of 2025</a>.</p><p>That depth doesn't make for good casual reading but it does successfully cover every important topic, and in enough detail that we’re comfortable with saying that nothing is amiss.</p><p>The closest NordVPN comes to recording data is its enforcement of the 10 device limit. As it explains, username and timestamp information is “used to limit the amount of concurrent active user sessions and is automatically deleted within 15 minutes after a session is terminated”.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-privacy-measures"><p>Read more about NordVPN's privacy measures ▼</p></div><p>In-app, NordVPN’s primary privacy focal point is its <a href="https://www.techradar.com/vpn/vpn-services/nordvpn-launches-new-revolutionary-censorship-resistant-vpn-protocol">NordWhisper protocol</a>.</p><p><a href="https://www.techradar.com/vpn/vpn-services/nordvpn-launches-new-revolutionary-censorship-resistant-vpn-protocol" target="_blank">Introduced in January 2025</a>, the <a href="https://www.techradar.com/vpn/what-is-a-vpn-protocol">protocol</a> is based on the <a href="https://www.techradar.com/pro/security/tor-has-a-new-https-esque-feature-to-help-beat-censorship">Tor Project’s WebTunnel technology. </a>It wraps your encrypted VPN traffic in a standard HTTPS connection to hide it from detection. This disguises it as standard web traffic and makes NordWhisper especially effective in regions of high internet censorship and places where people found to be using VPNs can be punished. </p><p>For everyday connectivity, you’re not short of options either. <a href="https://www.techradar.com/vpn/what-is-openvpn">OpenVPN</a> is available in both its <a href="https://www.techradar.com/vpn/udp-vs-tcp">TCP and UDP</a> forms. The former provides a more stable, reliable connection for emailing, browsing, and the like. The latter is more focused towards speed for gaming, streaming, or similar.</p><p>Alongside this, you also get NordVPN’s other proprietary protocol, NordLynx. <a href="https://www.techradar.com/vpn/what-is-nordlynx" target="_blank">NordLynx</a> uses a ‘double NAT’ system to remove privacy vulnerabilities you’d be at risk of by using traditional <a href="https://www.techradar.com/vpn/what-is-wireguard">WireGuard</a>.</p><p>By combining double NAT technology and WireGuard, NordLynx allows you to experience the speed benefits of WireGuard, without any identifiable information being stored, even temporarily, in a server. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="dKGZBGKxSWcuYnqtyNYEm3" name="NordVPN website during Black Friday 2025 running on a laptop on a desk" alt="NordVPN website during Black Friday 2025 running on a laptop on a desk" src="https://cdn.mos.cms.futurecdn.net/dKGZBGKxSWcuYnqtyNYEm3-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">NordVPN's privacy and no-logs policies can be easily accessed via the NordVPN website. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>NordLynx is also <a href="https://www.techradar.com/pro/vpn/nordvpn-joins-the-post-quantum-revolution" target="_blank">NordVPN’s first post-quantum encrypted VPN protocol</a>. It ensures that your data remains secure even once quantum computing arrives with its enormous boost in code-cracking, number crunching power.</p><p>NordVPN has chosen to use <a href="https://www.techradar.com/pro/vpn/post-quantum-encryption-standards-are-here-a-new-era-for-vpn-security-begins" target="_blank">ML-KEM</a>, an approved quantum-resistant cryptographic standard, with NordLynx.</p><p>NordVPN’s use of RAM-only servers helps too. Since RAM-only servers don’t store any data permanently. That means you’re never at risk of being personally identifiable should Nord’s servers be seized, since there’s no data to be found.</p><p>Connecting to NordVPN offers several privacy-centric options. <a href="https://www.techradar.com/vpn/nordvpn-double-vpn" target="_blank">Double VPN</a> works as the name suggests, routing your connection through two VPN servers rather than one. In other words, your data is encrypted twice.</p><p>That makes your connection twice as difficult for cybercriminals to crack, your IP address is further protected (since the second server doesn’t have any information about it), and your ISP knows nothing about where you end up on the web.</p><p>This makes Double VPN perfect for those needing greater protection in regions where governments attempt to intercept messages or surveil online activities.</p><p>NordVPN currently offers 12 Double VPN locations, including 2 locations in the US and Canada. This is far fewer than the likes of <a href="https://www.techradar.com/reviews/protonvpn">Proton VPN</a> and <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a>.</p><p>Proton VPN offers 64 locations that utilize its <a href="https://www.techradar.com/vpn/proton-vpn-secure-core">Secure Core</a> technology, while <a href="https://www.techradar.com/news/surfshark-adds-new-cutting-technology-to-its-vpn-service">Surfshark’s Nexus network</a> allows you to make any two server connections you want from its entire server network.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="Vz5xAMvyBZfBzarRiDJQPa" name="NordVPN server types displaying on phone on desk" alt="NordVPN server types displaying on phone on desk" src="https://cdn.mos.cms.futurecdn.net/Vz5xAMvyBZfBzarRiDJQPa-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">NordVPN's selection of server types can be quickly accessed whether you're on mobile or desktop. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Another option for concealing your VPN connection is NordVPN’s obfuscated servers. These servers now use NordVPN's NordWhisper protocol in addition to extra protections to ensure your VPN connection isn't detected. The shift to using NordWhisper also means you can now connect to obfuscated servers in almost all of NordVPN's locations.</p><p>If you’re looking to access the darker corners of the web securely, NordVPN also offers <a href="https://www.techradar.com/vpn/vpn-privacy-security/what-is-onion-over-vpn" target="_blank">Onion Over VPN</a> connections. Available via its Amsterdam, Stockholm, and Zurich server locations. This connection routes your traffic through both a VPN server and <a href="https://www.techradar.com/reviews/tor-browser">the Tor Network</a>. </p><p>As a result, since the Tor Network’s servers are volunteer-operated, you are secured by a VPN before entering it in case a bad actor has planted servers intent on tracking your online activity and stealing your data. This added security when using Tor is something only offered by a few top VPNs, the most notable of which are NordVPN and Proton VPN.</p><p>Depending on the platform you’re using, NordVPN also offers several handy privacy settings you can use to further affirm your privacy. Android users get arguably the biggest spread. Notably, NordVPN’s ‘Tapjacking protection’ is something you won’t find on any other NordVPN platform, or offered by any other VPN for that matter.</p><p>The system aims to protect users against malicious overlays and is as simple to use as toggling on and forgetting about it. Having had the protection turned on for a matter of months now, I can comfortably say I've never found an instance where an overlay has slipped through the net, and I've never noticed it adding unwanted strain to my phone’s performance either.</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-security"><span>Security</span></h2><ul><li><strong>Strong encryption</strong> and post-quantum encryption standards already live.</li><li><strong>Next Gen Antivirus performs well</strong> against malware and phishing sites</li><li>Lots of options for <strong>granular security customization.</strong></li></ul><p>NordVPN’s security is top-notch.</p><p>We tested its claims of strong <a href="https://www.techradar.com/news/what-is-aes" target="_blank">AES-256-GCM encryption</a> on OpenVPN using a 4096-bit Diffie-Hellman key, and we saw exactly that. Our tests registered AES-256-GCM-SHA384 encryption with 4096-bit certification using TLS 1.3. This makes NordVPN’s OpenVPN protocol as secure as possible, ensuring you needn’t worry about your connection, no matter your location.</p><p>On NordLynx, you’re similarly protected. Since the protocol is based on WireGuard, it uses the same ChaCha20 encryption you’d expect to see, using Poly1305 for authentication. This means you’re using the latest and greatest encryption capabilities across both of NordVPN’s primary protocols.</p><p><a href="https://www.techradar.com/pro/vpn/post-quantum-encryption-standards-are-here-a-new-era-for-vpn-security-begins">Post-quantum encryption</a> has also already reached NordVPN. While providers such as Proton VPN and Surfshark are yet to implement it or are in the early stages, NordLynx is already post-quantum ready, with the future-proof encryption method available at the switch of a toggle.</p><p>While that might seem superfluous right now, it's a key differentiator given the existence of <a href="https://www.techradar.com/pro/security/quantum-race-how-are-cybercriminals-silently-stealing-the-trophy">harvest now, decrypt later attacks</a>.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-security-features"><p>Read more about NordVPN's security features ▼</p></div><p>OpenVPN and NordWhisper aren’t post-quantum-equipped quite yet. It's worth knowing that if you turn on post-quantum encryption, it'll turn itself off if your automatically selected protocol isn't NordLynx. This can be fixed in a matter of clicks by turning automatic protocol choosing off, instead selecting to always use NordLynx</p><p>You also won’t be post-quantum-protected when using Meshnet or NordVPN’s obfuscated server connection; the same goes if you add a dedicated IP to your plan.</p><p>If you’ve turned on post-quantum encryption before using Meshnet, beware that this automatically turns Meshnet off, making you choose between your secure local network and a super-secure VPN connection.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="h5ZkvznRGyWnjbHnk9ipiL" name="NordVPN Meshnet settings screen on  laptop at a desk" alt="NordVPN Meshnet settings screen on  laptop at a desk" src="https://cdn.mos.cms.futurecdn.net/h5ZkvznRGyWnjbHnk9ipiL-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Meshnet is a superb, unique NordVPN feature, though it doesn't benefit from post-quantum encryption as yet.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>NordVPN also, of course, a more standard suite or security options in place.</p><p>Auto-connect jumps straight to mind, since you can fully customize exactly when and how NordVPN auto-connects you to a server.</p><p>It covers both the server type, and the instances in which it connects. This includes options for <a href="https://www.techradar.com/vpn/nordvpn-double-vpn">Double VPN</a>, Obfuscated, Onion-Over, and P2P servers, and connecting when on Wi-Fi, Ethernet, or mobile networks. You can even create lists of trusted networks that are excluded from auto-connect parameters.</p><p>I use this kind of customization to make sure that I'm always protected and I particularly like it to my ensure my connection on-the-go.</p><p>If you want to continue the granular levels of security tailoring, you can also control the <a href="https://www.techradar.com/vpn/what-is-dns">DNS server address</a> you connect to, your visibility over LAN, and, on desktops, whether your computer can still be accessed remotely when connected. It’s worth noting, with LAN invisibility especially, toggling these settings can impact performance. </p><p>For example, with LAN invisibility turned on, iPhone, iPad, and Mac users won’t be able to use AirDrop. You may also experience significant performance impacts due to how Apple integrates the relevant API parameters in its hardware. If you want to know more, NordVPN released a complete breakdown you can read <a href="https://support.nordvpn.com/hc/en-us/articles/25202605194257-Invisibility-on-a-local-network-why-we-had-to-build-a-broken-feature" target="_blank">here</a>.</p><p>Something that continues to impress is NordVPN’s kill switch. It's often the downfall of less secure VPN providers. In our security testing, a <a href="https://www.techradar.com/vpn/vpn-kill-switch-explained" target="_blank">kill switch</a> is key to ensuring your connection is never inadvertently exposed to bad actors, governments and the like.</p><p>We tried to break NordVPN’s kill switch in various ways, including uninstalling NordVPN’s network adapter driver while connected. Not only did NordVPN disconnect us successfully without any IP leaks, but it recognized the issue, reinstalled and activated the driver, and reconnected us, all within seconds.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="uRhVxq3Xibufwxup3ZYAz9" name="NordVPN kill switch settings screen on laptop at desk with coffee" alt="NordVPN kill switch settings screen on laptop at desk with coffee" src="https://cdn.mos.cms.futurecdn.net/uRhVxq3Xibufwxup3ZYAz9-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">NordVPN has an array of effective security settings, which can all be found in one place whether you're on desktop or mobile. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If we could wish for one thing to improve NordVPN’s kill switch, it would be moving away from the native kill switch system on Android devices. </p><p>Across all platforms aside from Android, you can turn the kill switch on and off as you please. On Android, the native kill switch forces you to use the VPN at all times and disconnects you completely from the internet should the connection fail. </p><p>While this is super-secure, it’s frustrating should you only require a VPN connection in certain situations. </p><p>Something we’ll cover in more depth in the <a href="#section-compatibility">compatibility section</a> is NordVPN’s feature parity across platforms. <a href="https://www.techradar.com/vpn/split-tunneling">Split tunneling</a>, another of NordVPN’s security capabilities, is a notable victim of some of NordVPN’s variations by device.</p><p>Windows users can create either a list of apps that must use the VPN or a list of apps that must not. Android users can only choose which apps won't use the VPN, and Mac and iOS users don’t get split tunneling at all – though this is reasonably common among VPNs owing to the security systems in place on Apple devices.</p><p>Our testing showed no reason to doubt NordVPN’s split tunneling capabilities, though it would be great to see its Android apps gain the same capabilities as Windows. Lacking the choice in this way puts NordVPN behind the likes of <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a> and <a href="https://www.techradar.com/reviews/protonvpn">Proton VPN</a>, which offer both choices on their Android apps.</p><p>We’ve mentioned <a href="https://www.techradar.com/vpn/vpn-services/nordvpn-launches-new-revolutionary-censorship-resistant-vpn-protocol">NordWhisper</a> already, but NordVPN also offers traditional obfuscated servers too. This is helpful since, at the time of writing, NordWhisper isn’t quite available on all platforms as yet – though Windows, Android, Linux, Mac, and iOS all have it already.</p><p>These servers, however, have one big problem: accessibility. Not only does NordVPN only offer obfuscated servers in 16 of its 127 countries, but also, depending on the app and protocol you’re using, you may not even see the option. NordVPN’s obfuscated servers only work over OpenVPN, which is understandable given the added security it brings, even if at a huge speed deficit, but if you’ve not manually selected OpenVPN as your protocol choice, your app may not show them. </p><p>Our testing on Apple devices showed the option simply doesn’t exist in the app unless you go into your settings and change to OpenVPN. </p><p>Windows and Android users don’t face the same issue. The option appears in the ‘Specialty Server’ section, no matter the protocol chosen, which makes much more sense and begs the question of why it isn’t this simple across all devices. </p><p>What’s more, the lack of locations means those in regions distant from a server will face even greater performance drops than you’d expect anyway from obfuscated servers.</p><p>Another feature lacking in locations is NordVPN’s Onion-over VPN capabilities, though in this instance, this is less of a problem since many providers don’t offer this at all. Onion-over VPN allows you to connect to sites on the <a href="https://www.techradar.com/reviews/tor-browser">Tor Network</a> while secured by a VPN connection, something only offered by Proton VPN among other top VPN providers. In NordVPN’s case, it offers three countries to connect to: the Netherlands, Sweden, and Switzerland. </p><p>By comparison, Proton’s six locations include Sweden and Switzerland, but the additions of France, Germany, Hong Kong, and the US give the VPN provider not only wider EU coverage but broader coverage worldwide. </p><p>As with any VPN connection, reduced locations often mean worse speeds, either due to distance to the server or the load the server is under, and NordVPN’s Onion-over VPN servers prove no different. </p><p><a href="https://www.techradar.com/vpn/vpn-privacy-security/what-is-onion-over-vpn">Onion-over VPN</a> connections (otherwise called Tor-over VPN) always require greater processing. That makes a dent on performance straight away, no matter the location, but the 741 Kbps download speeds we saw in testing demonstrate just how limited you can be, yes, that was Kbps by the way!</p><p>Finally, <a href="https://www.techradar.com/vpn/nordvpn-double-vpn">Double VPN</a>. This is NordVPN’s version of a multi-hop connection, though its simpler than some competitor alternatives. This is because NordVPN doesn’t allow you to choose your entry and exit server, unlike <a href="https://www.techradar.com/reviews/surfshark">Surfshark</a>. </p><p>Even Proton, whose <a href="https://www.techradar.com/vpn/proton-vpn-secure-core" target="_blank">Secure Core Technology</a> limits the choices you have, gives users a few choices. We won’t directly compare NordVPN and Surfshark here, since Surfshark’s <a href="https://www.techradar.com/news/surfshark-adds-new-cutting-technology-to-its-vpn-service" target="_blank">Nexus technology</a> gives users complete freedom to multi-hop between every Surfshark server, something no other VPN provider offers. </p><p>Outside of the VPN itself, NordVPN also offers Next Gen Antivirus. This works at a deeper level, protecting your desktop devices from phishing and malicious URLs, as well as ads and trackers. It can even scan for and block malicious downloads. </p><p>While this is nice, there are several downsides. Firstly, Next Gen Antivirus, oddly,  isn’t actually an antivirus. It can’t scan files already on your computer for malware, nor can it remove them. Secondly, the full Next Gen Antivirus suite is only available on desktop devices, while mobile users only get Threat Protection.</p><p>That limitation puts NordVPN behind Surfshark here. Surfshark includes a full antivirus with its Surfshark One plan – and it works on mobile as well as desktop. </p><p>That said, you can hardly fault Next Gen Antivirus’s results.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Phishing Sites Blocked</strong></p></th><th  ><p><strong>Malware Sites Blocked</strong></p></th><th  ><p><strong>Ads blocked</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>NordVPN (Next Gen Antivirus)</strong></p></td><td  ><p>92%</p></td><td  ><p>80%</p></td><td  ><p>21%</p></td></tr><tr><td class="firstcol " ><p><strong>Proton VPN</strong></p></td><td  ><p>88%</p></td><td  ><p>0%</p></td><td  ><p>88%</p></td></tr><tr><td class="firstcol " ><p><strong>ExpressVPN</strong></p></td><td  ><p>76%</p></td><td  ><p>0%</p></td><td  ><p>86%</p></td></tr><tr><td class="firstcol " ><p><strong>Surfshark</strong></p></td><td  ><p>48%</p></td><td  ><p>28%</p></td><td  ><p>44%</p></td></tr></tbody></table></div><p>We tested Next Gen Antivirus against 50 brand-new malware-hosting and phishing pages, and it was the top-performing software of anything similar we tested among VPNs. It blocked 92% of phishing sites and 80% of malware sites. </p><p>By comparison, Surfshark Antivirus achieved only 48% and 28% in these same tests, putting a stretch ahead.</p><p>While these results do impress when compared to VPNs, a dedicated antivirus software performs far better than even Next Gen Antivirus.</p><p>The likes of<a href="https://www.techradar.com/reviews/avast-one"> Avast</a>, Norton, and ESET achieved equal or greater success in phishing protection tests carried out by AV-Comparatives in 2025. This is why we normally recommend picking up one of the <a href="https://www.techradar.com/best/best-antivirus">best antivirus software</a> in addition to your VPN of choice.</p><p>It's also worth mentioning that Next Gen Antivirus's remit is constantly expanding. In recent months, Email Protection, hijacked session and double extension alerts, search result safety indicators, and crypto wallet checks have all joined the mix. While many of these are niche solutions, they're a handy addition should they fit your everyday needs.</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-speed"><span>Speed</span></h2><ul><li>NordVPN is still <strong>among the fastest VPNs </strong>using WireGuard.</li><li>Minimal latency and jitter make the <strong>best VPN for gamers</strong>.</li><li><strong>Struggled over OpenVPN</strong> in latest speed tests.</li></ul><p>We recently completed our second round of testing using a 10 Gbps line with an increased number of data points. </p><p>This time around, NordVPN's NordLynx speeds saw a slight improvement, recording 1427 Mbps, having previously achieved 1249 Mbps. Despite this,  NordVPN remains slower than Proton VPN and Surfshark using WireGuard and <a href="https://www.techradar.com/vpn/expressvpn-lightway">ExpressVPN’s Lightway Turbo protocol</a>.</p><p>Take ExpressVPN’s results with a pinch of salt, though, since <a href="https://www.techradar.com/vpn/vpn-services/can-fast-be-faster-expressvpn-promises-its-possible" target="_blank">Lightway Turbo </a>is only available on its Windows app, and ExpressVPN has warned that it might cause issues with some websites and games.</p><p>None of that is true for NordLynx and, although Lightway Turbo’s 1479 Mbps speeds put it a margin ahead of NordLynx on paper, most users won’t see this difference in day-to-day usage.</p><p>Instead, you’ll likely benefit more from the added compatibility of NordLynx.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-performance"><p>Read more about NordVPN's performance ▼</p></div><p>NordLynx’s results do, however, put it among the best VPN protocols for gamers, since in our testing, it recorded only 7 ms latency and 2.2 ms jitter when connected to our nearest server.</p><p>High latency results in laggy gameplay, and high jitter can lead to unstable gameplay and stuttering, so recording latency and jitter at low result is key when choosing the <a href="https://www.techradar.com/vpn/best-gaming-vpn">best gaming VPN</a>.</p><p>Connecting to US NordVPN servers from the UK proved less effective, though still improved over last time around. NordLynx achieved 939 Mbps connecting over the pond this time, having only managed 688 Mbps last time. </p><p>This is still slower than many other VPNs over the same distance. That said, you'll rarely struggle with these results no matter what streaming or gaming you test it with. </p><p>NordVPN did still hold up well for latency and jitter over long distance, proving, again, that it's a great gaming VPN choice – perfect, in this instance for avoiding unwanted lag while connecting to servers abroad for gaming, streaming, or other high-intensity tasks.</p><p>Unfortunately, NordVPN's OpenVPN performance has yet again dropped off. Previously registering 688 Mbps, it now only achieved 633 Mbps, much lower than several other top VPNs. </p><p><strong>Score: 9/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-unblocking-streaming-services"><span>Unblocking streaming services</span></h2><ul><li><strong>Only struggled with two streaming services </strong>we tested.</li><li><strong>Never encountered unwanted CAPTCHAs</strong>, or dropouts.</li><li>All servers are <strong>streaming optimized.</strong></li></ul><p>NordVPN was the clear winner in our latest unblocking testing. It struggled with the fewest streaming services of every VPN we've tested.</p><p>We test Netflix, across the US, UK, Australia, Canada, and Japan, Prime Video, Disney+, and YouTube. We also tested NordVPN at unblocking local free streaming services, including BBC iPlayer, ITVX, C4, 9Now, and 10Play.</p><p>Only YouTube US and Prime Video Australia proved inaccessible. Aside from these, we never encountered VPN detection, unwanted CAPTCHAs during login, or any dreadful lag, buffering or connection dropouts to ruin our streaming experience. This was the same whether we were attempting to watch something live or catching up on demand.</p><p>So, while there are now some small blips on NordVPN's record, most won't be heavily impacted. </p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-unblocking-capabilities"><p>Read more about NordVPN's unblocking capabilities ▼</p></div><p>Proton VPN, ExpressVPN, and Surfshark all equally struggled with US YouTube. Proton also struggled with Disney+ USA alongside ITVX and Channel 4 in the UK. Surfshark suffered a spread of issues across platforms worldwide, a big change from a near-flawless performance last time out. </p><p>What was even more impressive was the lack of impact of NordVPN's Threat Protection Pro ad-blocker. Normally, we find that the ad-blockers of VPN services disrupted the streaming capabilities of local, ad-based services like Channel 4 and ITV, but we saw no such issues with NordVPN. The same cannot be said of Proton VPM and Surfshark. </p><p>NordVPN never found itself unable to load services due to their advert reel requirements, even when connecting to ad-based services abroad, such as Peacock. Top marks.</p><p>Something certainly playing into this success is that all of NordVPN’s servers are streaming-optimized. This move not only means you never have to scroll through to find those with the correct optimization, but it also means you’re never short of another server to connect to if one struggles to connect to the streaming service you’re trying to access.</p><p><strong>Score: 10/10</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-p2p-and-torrenting"><span>P2P and torrenting</span></h2><ul><li>Most<strong> servers are P2P optimized.</strong></li><li><strong>Lots of guides</strong> to help beginners get started.</li><li><strong>No port forwarding</strong> support.</li></ul><p>Nothing summarizes NordVPN’s torrenting capabilities more than the fact that all but four of its countries offer <a href="https://www.techradar.com/vpn/what-is-p2p" target="_blank">P2P-optimized servers</a> – sorry to those looking to torrent connected to Albania, Bosnia and Herzegovina, Moldova, and North Macedonia! </p><p>What’s more, finding the server you need is super simple. NordVPN’s P2P-optimized locations can be found in its Specialized Servers section on any app, and you even get the option to quickly connect to the fastest server if you’re not after somewhere specific and would rather sheer performance.</p><p>Thankfully, NordVPN’s speed capabilities mean your torrenting experience is likely to be more limited by your peers than your VPN. What’s more, its security measures meant we never found ourselves receiving warnings from our ISP when testing its capabilities with <a href="https://www.techradar.com/reviews/utorrent">uTorrent</a>, no matter if we were using NordLynx or OpenVPN.</p><p>As is standard among top VPNs, NordVPN doesn’t support <a href="https://www.techradar.com/how-to/how-to-port-forward">port forwarding</a> due to the security risks posed. A full blog article outlines their reasons for this, which you can read <a href="https://nordvpn.com/blog/port-forwarding/" target="_blank" rel="nofollow">here</a>.</p><p>If you’re new to torrenting, it’s also great to see NordVPN has a whole variety of guides for setting up proxies with popular torrenting services, including <a href="https://www.techradar.com/reviews/bittorrent">BitTorrent</a>, <a href="https://www.techradar.com/reviews/utorrent">uTorrent</a>, and <a href="https://www.techradar.com/reviews/qbittorrent">qBittorrent</a>. They’re easy to digest and come with all the information you need packed in, too.</p><p><strong>Score: 4/5</strong></p><h2 class="article-body__section" id="section-compatibility"><span>Compatibility</span></h2><ul><li><strong>Apps for every platform</strong> – including Linux GUI and routers.</li><li><strong>A similar look</strong> across almost every app.</li><li>No<strong> Threat Protection Pro</strong> on mobile.</li></ul><p>NordVPN has apps across every platform out there, including a GUI <a href="https://www.techradar.com/vpn/best-linux-vpn" target="_blank">Linux VPN</a> and <a href="https://www.techradar.com/news/best-vpn-routers">router VPN</a> capabilities, alongside the expected web extensions and smart TV apps.</p><p>The majority of NordVPN's apps share a similar feel and consequently enough regularity that the features you can access will be found where you’d expect them. Smart TVs are, as expected with most VPNs, the platform with the most differentiation in layout, but that change brings added simplicity and makes it easy to use.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Windows</p></th><th  ><p>Mac</p></th><th  ><p>iOS </p></th><th  ><p>Android</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Protocols</strong></p></td><td  ><p>NordLynx, NordWhisper, OpenVPN (TCP and UDP)</p></td><td  ><p>NordLynx, NordWhisper, OpenVPN (TCP and UDP)</p></td><td  ><p>NordLynx, NordWhisper, OpenVPN (TCP and UDP)</p></td><td  ><p>NordLynx, NordWhisper, OpenVPN (TCP and UDP)</p></td></tr><tr><td class="firstcol " ><p><strong>Kill switch</strong></p></td><td  ><p>3-mode kill switch including VPN and application specific settings</p></td><td  ><p>Application-level kill switch</p></td><td  ><p>VPN connection failure killswitch</p></td><td  ><p>Android-native kill switch only</p></td></tr><tr><td class="firstcol " ><p><strong>Split tunnelling</strong></p></td><td  ><p>Disable or Enable based split tunnelling</p></td><td  ><p>❌</p></td><td  ><p>❌</p></td><td  ><p>Disable only</p></td></tr><tr><td class="firstcol " ><p><strong>Auto-connect</strong></p></td><td  ><p>WiFi, ethernet, or mobile network settings. Plus custom or fastest location choice</p></td><td  ><p>Can be set to auto connect when using untrusted WiFi networks. Plus location choice</p></td><td  ><p>Can be set up for all networks, no networks, or WiFi only. Plus location choice</p></td><td  ><p>All networks, Wifi, or mobile networks settings. Plus location choice</p></td></tr><tr><td class="firstcol " ><p><strong>Threat Protection Pro</strong></p></td><td  ><p>✅</p></td><td  ><p>✅</p></td><td  ><p>Basic Threat Protection only</p></td><td  ><p>Basic Threat Protection only</p></td></tr></tbody></table></div><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-compatibility"><p>Read more about NordVPN's compatibility ▼</p></div><p>I mentioned already that NordVPN isn’t stellar in terms of its feature-parity across platforms, but for the most part, NordVPN’s compatibility is nothing to be concerned about.</p><p>As you can see, in the table below, like most VPNs, Windows gets everything, and iOS users get the least. In amongst this, though, are several key differentiators.</p><p>NordVPN users on iOS and Mac don't get to enjoy s<a href="https://www.techradar.com/vpn/split-tunneling" target="_blank">plit tunneling</a>. In the past, that proved difficult for all VPN providers on iOS and Mac due to Apple's security infrastructure, but now the likes of <a href="https://www.techradar.com/reviews/ipvanish-vpn" target="_blank">IPVanish</a> and <a href="https://www.techradar.com/reviews/surfshark" target="_blank">Surfshark</a> are beginning to roll the feature out. NordVPN users have no such luck.</p><p>It’s not often that we see Android users facing big feature shortfalls as well but, most frustrating, of the absentees is that there's no <a href="https://www.techradar.com/pro/nordvpn-threat-protection-pro-is-now-even-better-at-keeping-you-safe">Threat Protection Pro</a> on any mobile devices. That's a real loss.</p><p>Threat Protection Pro is the best-performing VPN security add-on we've tested, and is a notable step up from the results we saw basic <a href="https://www.techradar.com/vpn/nordvpn-threat-protection">Threat Protection</a>, which mobile users do get.</p><p>By comparison, <a href="https://www.techradar.com/news/surfshark-launches-antivirus-to-go-alongside-your-vpn">Surfshark's full antivirus</a> capabilities are available across any platform, including the regular file scanning feature – something not offered by NordVPN.</p><p><strong>Score: 4/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-usability"><span>Usability</span></h2><ul><li>Simple set up – but <strong>ensure you disable auto-renewals.</strong></li><li><strong>Similar user experience</strong> across most apps.</li><li>Reducing the use of the map has <strong>improved functionality hugely.</strong></li></ul><h2 id="set-up">Set up</h2><p>Setting up NordVPN is simple enough. Once you’re signed up, you can download the VPN directly from the website (unless you’ve signed up within the iOS or Android app, in which case you’ll have already installed it to do so). From there, you’re almost on your own.</p><p>Loading the installer gives you the option of also adding <a href="https://www.techradar.com/reviews/nordpass">NordPass</a> and the NordVPN browser extension to your device. Both are great tools and super handy to have – and then you’re straight into the NordVPN app.</p><p>Something we recommend doing as soon as you’re in is stopping your auto-renewals. This will stop you getting a nasty and very expensive surprise when your initial NordVPN agreement runs out.</p><p>Stop auto-renewal by heading to the Account section of your Settings menu. It takes almost no time at all.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-usability"><p>Read more about NordVPN's usability ▼</p></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1344px;"><p class="vanilla-image-block" style="padding-top:57.14%;"><img id="eRoMh94zDi2myDraB5BszN" name="NordVPN website download screen on laptop with a coffee" alt="NordVPN website download screen on laptop with a coffee" src="https://cdn.mos.cms.futurecdn.net/eRoMh94zDi2myDraB5BszN-1920-80.png" mos="" align="middle" fullscreen="" width="1344" height="768" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">You can find the quickest ways to download each of NordVPN's apps via its website, including web extensions.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 id="user-experience">User Experience</h2><p>NordVPN is as close to identical as it can be across the majority of its apps nowadays, which is only a good thing for sure.</p><p>The only times you’ll see anything especially different is on smart TVs, as is expected with most VPNs, and streaming devices such as Fire TV Sticks.</p><p>Older Fire TV Sticks, especially, will be in for a shock, as, depending on your device generation, you can be hit with a much older-appearing UI than anywhere else. </p><p>Even NordVPN's Chrome extension shares a similar feel. While you can't use it to access <a href="https://www.techradar.com/vpn/what-is-a-vpn-protocol">VPN protocols</a> or specialist servers, you're never left wondering where anything is.</p><p>What's more, you're still equipped with everything from the kill switch, auto-connect, and split tunneling, to otherwise hidden features such as location spoofing, which is only available via the web extension and sets your browser to the location and time zone of your VPN server. It's by no means perfect, but you have all the essential tools in a familiar package.</p><p>One of NordVPN’s quirky inclusions in its desktop and mobile apps used to be an interactive map interface you could use to select your server. While this did look rather pleasing, we’ve never found ourselves using it in all the years it’s been there, nor did it ever do anything to make the connection process quicker. So, we’re glad to see it getting phased out on desktop devices in favor of more screen space for features such as Threat Protection Pro.</p><p>This change makes it supremely quick and easy access to almost every tool, whether on mobile or desktop.</p><p>The home screen brings quick access to every VPN country available, each of NordVPN’s specialty server types, <a href="https://www.techradar.com/vpn/what-is-meshnet" target="_blank">Meshnet</a>, Dark Web Monitoring, and the three key aspects of Threat Protection Pro – anti-malware, advanced browser protection, and ad and tracker blocking.</p><p>Accessing these features in more detail is as simple as clicking the corresponding icon on the side-nav, and once you’re where you want to be, you’re greeted by explainer after explainer giving you everything you need to know to understand the tool and how it’ll benefit either your VPN connection or your online security. </p><p>I do have two gripes with the desktop version however:</p><p>Firstly, the search bar isn’t the most advanced. While some VPN providers will allow you to search for a location and choose between its specific capabilities, for example, P2P or obfuscated, Nord’s shows you the location as though you were connecting normally. </p><p>If you’re after, say, a P2P server, you’d have to search P2P, and then choose a server from the icon that appears – a method slower than simply choosing P2P in the specialty servers section you’re greeted with on the home screen. </p><p>Secondly, the desktop app no longer offers both choices of pausing your connection or disconnecting entirely. Instead, you now get a pause button which, once clicked, becomes a dropdown with a series of pause durations alongside a disconnect button. </p><p>While I understand adding steps to the disconnection process reduces the chance someone will, thus improving their security, for those of us who know when we do and don’t want to be connected, it’s an unnecessary added step. Still, it's a pretty minor beef.</p><p>Mobile users get a similarly efficient experience, which we love. While it retains the interactive map, you can access every country, Meshnet, and all of Nord’s Specialty Servers from your home screen – though, understandably given screen restraints, there’s no room for Threat Protection or Dark Web Monitoring this time round. </p><p>You still get the same detailed explanations of each feature and setting throughout the app, though you’re still stuck with the same limited search capabilities and pause button that the desktop app uses. </p><p>Oddly, something omitted from the main screen across desktop and mobile is any reference to key features, such as protocols or the kill switch. To set up or change these, you need to head into the settings instead. What’s more, while on desktop you can click one button to set the server you’re connected to as your auto-connect, you’re given no such convenience on mobile – though for many this won’t be so useful. </p><p>Aside from the minor gripes, NordVPN’s apps are the best they’ve been in years – efficient, clean to look at, and easy for beginners.</p><p>The few issues we’ve found, and their minor impact show just how much thought has gone into NordVPN's usability across the board.</p><p><strong>Score: 5/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-accessibility"><span>Accessibility</span></h2><ul><li>NordVPN's website is <strong>among the most accessible VPN websites.</strong></li><li><strong>Not a huge amount</strong> of language support.</li><li>Keyboard-only navigation <strong>could be better</strong>.</li></ul><p>We put <a href="http://nordvpn.com" target="_blank">NordVPN.com</a> through an AccessibilityChecker audit, and its score of 83% puts it among the most accessible VPN websites out there. It scores higher than Proton VPN (35%), Surfshark (41%), and ExpressVPN (21%) and PIA (10%). This makes it the most accessible VPN website of all our <a href="https://www.techradar.com/vpn/best-vpn">best VPNs</a>.</p><div id="crow-inpage-content"><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');        #fv-chart-1765993020521-aorml67bt *, #fv-chart-1765993020521-aorml67bt *:before, #fv-chart-1765993020521-aorml67bt *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1765993020521-aorml67bt { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1765993020521-aorml67bt {        position: relative !important; overflow: visible !important;        --riv-primary: #2E6E93;    }    #fv-chart-1765993020521-aorml67bt .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;    }        /* Typography */    #fv-chart-1765993020521-aorml67bt .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: #1F2937 !important; font-size: 1.25rem !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; }    #fv-chart-1765993020521-aorml67bt .fv-chart-subhead { font-size: 1rem !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #6B7280 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; }    #fv-chart-1765993020521-aorml67bt .rv-chart-caption { font-size: 15px !important; color: #6B7280 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }    #fv-chart-1765993020521-aorml67bt .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; }    /* Footer */    #fv-chart-1765993020521-aorml67bt .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1765993020521-aorml67bt .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1765993020521-aorml67bt .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; }    /* Display Mode Controls */    #fv-chart-1765993020521-aorml67bt .fv-dropdown-container { text-align: center !important; margin-bottom: 16px !important; }    #fv-chart-1765993020521-aorml67bt .fv-dropdown {        width: 100% !important; max-width: 350px !important; padding: 8px 12px !important; font-size: 14px !important; line-height: 1.2 !important;        border: 2px solid #d1d5db !important; border-radius: 8px !important; background-color: #ffffff !important; color: #374151 !important;        cursor: pointer !important; appearance: none !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 8 4 4 4-4'/%3e%3c/svg%3e") !important;        background-position: right 12px center !important; background-repeat: no-repeat !important; background-size: 14px !important; padding-right: 35px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1765993020521-aorml67bt .fv-dropdown:hover { border-color: var(--riv-primary) !important; }    #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .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: 13px !important; color: #6b7280 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1765993020521-aorml67bt .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1765993020521-aorml67bt .fv-carousel-counter { font-size: 14px !important; color: #6b7280 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #4B5563 !important; }    #fv-chart-1765993020521-aorml67bt .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1765993020521-aorml67bt .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1765993020521-aorml67bt .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;    }    #fv-chart-1765993020521-aorml67bt .fv-bar-row, #fv-chart-1765993020521-aorml67bt .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #4B5563 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }     #fv-chart-1765993020521-aorml67bt .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; }    #fv-chart-1765993020521-aorml67bt .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1765993020521-aorml67bt .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; color: white !important; font-size: 14px !important; font-weight: bold !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; overflow: hidden !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #4B5563 !important; white-space: nowrap !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Stacked Bar */    #fv-chart-1765993020521-aorml67bt .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1765993020521-aorml67bt .fv-segment-value { font-size: 14px !important; font-weight: bold !important; color: white !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; }    /* Grouped Bar */    #fv-chart-1765993020521-aorml67bt .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1765993020521-aorml67bt .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1765993020521-aorml67bt .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: #4B5563 !important; text-transform: none !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1765993020521-aorml67bt .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1765993020521-aorml67bt .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1765993020521-aorml67bt .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1765993020521-aorml67bt .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #6B7280 !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #6B7280 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1765993020521-aorml67bt .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #6B7280 !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-1765993020521-aorml67bt .fv-y-axis-title {        font-size: 15px !important;        color: #6B7280 !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;    }    /* Mobile / Forced Mobile View */    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-pie-container { flex-direction: column !important; gap: 1rem !important; }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-bar-row,    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-stacked-product,    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-grouped-bar-product {        flex-direction: column !important;        align-items: flex-start !important;        margin-bottom: 1.25rem !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-bar-label,    #fv-chart-1765993020521-aorml67bt.mobile-view .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-1765993020521-aorml67bt.mobile-view .fv-bar-container,    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-bar-cluster {        width: 100% !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-x-axis-wrapper {        margin-left: 0 !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-x-axis-label-space {        display: none !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-x-axis-chart-space {        padding-right: 0 !important;    }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-benchmark-title { font-size: 16px !important; }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-logo { width: 60px !important; max-width: 60px !important; }    #fv-chart-1765993020521-aorml67bt.mobile-view .fv-carousel-nav-btn { padding: 6px 8px !important; font-size: 11px !important; }    @media (max-width: 500px) {         #fv-chart-1765993020521-aorml67bt .fv-pie-container { flex-direction: column !important; gap: 1rem !important; }        #fv-chart-1765993020521-aorml67bt .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }        #fv-chart-1765993020521-aorml67bt .fv-bar-row,        #fv-chart-1765993020521-aorml67bt .fv-stacked-product {            flex-direction: column !important;            align-items: flex-start !important;            margin-bottom: 1.25rem !important;        }        #fv-chart-1765993020521-aorml67bt .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-1765993020521-aorml67bt .fv-bar-container {            width: 100% !important;        }        #fv-chart-1765993020521-aorml67bt .fv-x-axis-wrapper:not(.fv-grouped-x-axis) {            margin-left: 0 !important;        }        #fv-chart-1765993020521-aorml67bt .fv-x-axis-label-space:not(.fv-grouped-x-axis .fv-x-axis-label-space) {            display: none !important;        }        #fv-chart-1765993020521-aorml67bt .fv-x-axis-chart-space {            padding-right: 0 !important;        }        #fv-chart-1765993020521-aorml67bt .fv-benchmark-title { font-size: 16px !important; }        #fv-chart-1765993020521-aorml67bt .fv-logo { width: 60px !important; max-width: 60px !important; }        #fv-chart-1765993020521-aorml67bt .fv-carousel-nav-btn { padding: 6px 8px !important; font-size: 11px !important; }        #fv-chart-1765993020521-aorml67bt .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1765993020521-aorml67bt.fv-contains-line-chart .fv-footer-content {            margin-left: -1rem !important;            margin-right: -1rem !important;        }    }          </style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Website Accessibility Scores",  "description": "AccessibilityChecker audit of the home pages of each VPN website",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2025-12-17T17:37:00.522Z",  "citation": "NordVPN offers a very easy to navigate website for those with visual accessibility needs. The apps could have better keyboard-only support, though.",  "keywords": [    "NordVPN",    "Surfshark",    "ExpressVPN",    "Proton VPN",    "PureVPN",    "Mullvad",    "IPVanish",    "CyberGhost",    "AdGuard VPN",    "PrivadoVPN",    "Hotspot Shield",    "TunnelBear",    "Accessibility score",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "NordVPN – Accessibility score",      "value": 83,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "Surfshark – Accessibility score",      "value": 41,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "ExpressVPN – Accessibility score",      "value": 23,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "Proton VPN – Accessibility score",      "value": 35,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "PureVPN – Accessibility score",      "value": 35,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "Mullvad – Accessibility score",      "value": 89,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "IPVanish – Accessibility score",      "value": 71,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "CyberGhost – Accessibility score",      "value": 17,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "AdGuard VPN – Accessibility score",      "value": 17,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "PrivadoVPN – Accessibility score",      "value": 10,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "Hotspot Shield – Accessibility score",      "value": 23,      "unitText": "%"    },    {      "@type": "PropertyValue",      "name": "TunnelBear – Accessibility score",      "value": 74,      "unitText": "%"    }  ]}</script>        <div id="fv-chart-1765993020521-aorml67bt" class="fv-chart-wrapper ">        <div class="fv-inner-wrapper">            <h3 class="fv-chart-title">Website Accessibility Scores</h3>            <p class="fv-chart-subhead">AccessibilityChecker audit of the home pages of each VPN website</p>                        <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1765993020521-aorml67bt-bar-Accessibility score" data-chart-type="Bar" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">Accessibility score</h4><div class="fv-bar-row" title="NordVPN - Accessibility score: 83 Percent">                <div class="fv-bar-label fv-primary-product">NordVPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #0033A0;" data-target-width="83">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">83</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="Surfshark - Accessibility score: 41 Percent">                <div class="fv-bar-label ">Surfshark</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #1CA9C4;" data-target-width="41">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">41</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="ExpressVPN - Accessibility score: 23 Percent">                <div class="fv-bar-label ">ExpressVPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #E33235;" data-target-width="23">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">23</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="Proton VPN - Accessibility score: 35 Percent">                <div class="fv-bar-label ">Proton VPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #9333EA;" data-target-width="35">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">35</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="PureVPN - Accessibility score: 35 Percent">                <div class="fv-bar-label ">PureVPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #470ca4;" data-target-width="35">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">35</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="Mullvad - Accessibility score: 89 Percent">                <div class="fv-bar-label ">Mullvad</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #f5cd22;" data-target-width="89">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">89</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="IPVanish - Accessibility score: 71 Percent">                <div class="fv-bar-label ">IPVanish</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #6db642;" data-target-width="71">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">71</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="CyberGhost - Accessibility score: 17 Percent">                <div class="fv-bar-label ">CyberGhost</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #f7c603;" data-target-width="17">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">17</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="AdGuard VPN - Accessibility score: 17 Percent">                <div class="fv-bar-label ">AdGuard VPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #2E6E93;" data-target-width="17">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">17</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="PrivadoVPN - Accessibility score: 10 Percent">                <div class="fv-bar-label ">PrivadoVPN</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #E8238C;" data-target-width="10">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">10</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="Hotspot Shield - Accessibility score: 23 Percent">                <div class="fv-bar-label ">Hotspot Shield</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #5DA8D4;" data-target-width="23">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">23</span></div>                    </div>                                    </div>            </div><div class="fv-bar-row" title="TunnelBear - Accessibility score: 74 Percent">                <div class="fv-bar-label ">TunnelBear</div>                <div class="fv-bar-container">                    <div class="fv-bar" style="width: 0%; background-color: #F06EAF;" data-target-width="74">                        <div class="fv-bar-inner-content"><span></span><span class="fv-bar-inner-value">74</span></div>                    </div>                                    </div>            </div>        <table class="sr-only">            <caption>Accessibility score Data</caption>            <thead><tr><th>Product</th><th>Value (Percent)</th></tr></thead>            <tbody><tr>                <td>NordVPN</td>                <td>83</td>            </tr><tr>                <td>Surfshark</td>                <td>41</td>            </tr><tr>                <td>ExpressVPN</td>                <td>23</td>            </tr><tr>                <td>Proton VPN</td>                <td>35</td>            </tr><tr>                <td>PureVPN</td>                <td>35</td>            </tr><tr>                <td>Mullvad</td>                <td>89</td>            </tr><tr>                <td>IPVanish</td>                <td>71</td>            </tr><tr>                <td>CyberGhost</td>                <td>17</td>            </tr><tr>                <td>AdGuard VPN</td>                <td>17</td>            </tr><tr>                <td>PrivadoVPN</td>                <td>10</td>            </tr><tr>                <td>Hotspot Shield</td>                <td>23</td>            </tr><tr>                <td>TunnelBear</td>                <td>74</td>            </tr></tbody>        </table></div></div></div>                                          <div class="fv-bottom-bar" style="display: flex">                        <div class="fv-footer-content" style="display: block;">                    <div class="rv-chart-caption">NordVPN offers a very easy to navigate website for those with visual accessibility needs. The apps could have better keyboard-only support, though.</div>                </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" />      </div>            </div>    </div>            <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {      function initialize() {        var chartWrapper = document.getElementById('fv-chart-1765993020521-aorml67bt');        if (!chartWrapper) {          console.error('Chart wrapper with ID fv-chart-1765993020521-aorml67bt not found.');          return;        }                function animateBars(chartElement) {          if (!chartElement) return;          var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');          bars.forEach(function(bar, index) {            var targetWidth = bar.dataset.targetWidth;            if (targetWidth === undefined) return;            // Bars start at width: 0% in HTML, so we just animate them            setTimeout(function() {              bar.style.width = targetWidth + '%';            }, index * 50 + 100);          });        }        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';                p.style.strokeDashoffset = '0';              }, 100);            }          });          var dots = lineSvg.querySelectorAll('.riv-dot');          dots.forEach(function(dot, i) {            dot.style.opacity = '0';            setTimeout(function() {                dot.style.transition = 'opacity 0.3s ease';                dot.style.opacity = '1';            }, 500 + i * 10);          });        }                        var charts = chartWrapper.querySelectorAll('.fv-chart-item');        // Animate initial view        if ("All Charts" === "All Charts") {          charts.forEach(function(chart) {            var chartType = chart.dataset.chartType;            if (chartType === 'Line') {              animateLineChart(chart);                          } else if (chartType !== 'Pie') {              animateBars(chart);            }          });        } else if (charts.length > 0) {          var firstChart = charts[0];          var firstChartType = firstChart.dataset.chartType;          if (firstChartType === 'Line') {            animateLineChart(firstChart);                      } else if (firstChartType !== 'Pie') {            animateBars(firstChart);          }        }                if (charts.length > 1 && "All Charts" !== "All Charts") {          var currentChartIndex = 0;          var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');          var captionEl = chartWrapper.querySelector('.rv-chart-caption');                    var placeholderSubhead = "Subhead to describe the test and what's being measured and why";          var placeholderCaption = "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized";          var globalSubheadJSON = "AccessibilityChecker audit of the home pages of each VPN website";          var globalCaptionJSON = "NordVPN offers a very easy to navigate website for those with visual accessibility needs. The apps could have better keyboard-only support, though.";          var globalSubhead = globalSubheadJSON === placeholderSubhead ? '' : globalSubheadJSON;          var globalCaption = globalCaptionJSON === placeholderCaption ? '' : globalCaptionJSON;          var subheadOverrides = {};          var captionOverrides = {};          var chartInfo = [{"id":"bar-Accessibility score","title":"Accessibility score"}];          var captionOverrideKeys = Object.keys(captionOverrides);          var singleCaptionOverrideValue = captionOverrideKeys.length === 1 ? captionOverrides[captionOverrideKeys[0]] : null;          if (singleCaptionOverrideValue === placeholderCaption) {            singleCaptionOverrideValue = '';          }          function showChart(index) {            if (index < 0 || index >= charts.length) return;            charts.forEach(function(chart, i) {              chart.style.display = i === index ? 'block' : 'none';            });            currentChartIndex = index;                        var activeChart = charts[index];            var chartType = activeChart.dataset.chartType;            if (chartType === 'Line') {                animateLineChart(activeChart);                            } else if (chartType !== 'Pie') {                animateBars(activeChart);            }                        var activeChartId = chartInfo[index].id;            if (subheadEl) {              var subheadContent = (subheadOverrides[activeChartId] !== undefined)                ? (subheadOverrides[activeChartId] === placeholderSubhead ? '' : subheadOverrides[activeChartId])                : globalSubhead;              subheadEl.innerHTML = subheadContent;            }            if (captionEl) {                var captionContent;                if (captionOverrides[activeChartId] !== undefined) {                    captionContent = captionOverrides[activeChartId] === placeholderCaption ? '' : captionOverrides[activeChartId];                } else if (singleCaptionOverrideValue !== null) {                    captionContent = singleCaptionOverrideValue;                } else {                    captionContent = globalCaption;                }                                captionEl.innerHTML = captionContent;                var captionContainer = captionEl.closest('.fv-footer-content');                if (captionContainer) {                    var hasContent = captionContent && captionContent.trim() !== '';                    var shouldShow = hasContent || (captionContainer.parentElement && captionContainer.parentElement.querySelector('.fv-logo'));                    if (captionContainer.parentElement) captionContainer.parentElement.style.display = shouldShow ? 'flex' : 'none';                    captionContainer.style.display = hasContent ? 'block' : 'none';                }            }                        var dropdown = chartWrapper.querySelector('.fv-dropdown');            if (dropdown) dropdown.value = index;            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            if (carouselTitle) carouselTitle.innerHTML = chartInfo[index].title;                        var counter = chartWrapper.querySelector('.fv-carousel-counter');            if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;          }          var dropdown = chartWrapper.querySelector('.fv-dropdown');          if (dropdown) dropdown.addEventListener('change', function(e) { showChart(parseInt(e.target.value)) });          var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');          if (prevBtn) prevBtn.addEventListener('click', function() { showChart((currentChartIndex - 1 + charts.length) % charts.length) });          var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');          if (nextBtn) nextBtn.addEventListener('click', function() { showChart((currentChartIndex + 1) % charts.length) });        }        chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {            var chartId = legend.dataset.chart;            var chart = document.getElementById(chartId); // Uses page-unique ID            if (!chart) return;            var lines = chart.querySelectorAll('.riv-line-path');            var dots = chart.querySelectorAll('.riv-dot');            legend.querySelectorAll('.riv-legend-item').forEach(function(item) {                var productName = item.dataset.product;                var line = chart.querySelector('.riv-line-path[data-product="' + productName + '"]');                var productDots = chart.querySelectorAll('.riv-dot[data-product="' + productName + '"]');                var highlight = function() {                    if (legend.querySelector('.isolated')) return;                    lines.forEach(function(l) { l.style.opacity = '0.3' });                    dots.forEach(function(d) { d.style.opacity = '0.3' });                    if (line) line.style.opacity = '1';                    productDots.forEach(function(d) { d.style.opacity = '1' });                };                var clearHighlight = function() {                    if (legend.querySelector('.isolated')) return;                    lines.forEach(function(l) { l.style.opacity = '1' });                    dots.forEach(function(d) { d.style.opacity = '1' });                };                                var toggleIsolate = function() {                    var isIsolated = item.classList.contains('isolated');                    legend.querySelectorAll('.riv-legend-item').forEach(function(i) { i.classList.remove('isolated') });                                        if (isIsolated) {                        lines.forEach(function(l) { l.style.opacity = '1' });                        dots.forEach(function(d) { d.style.opacity = '1' });                    } else {                        item.classList.add('isolated');                        lines.forEach(function(l) { l.style.opacity = '0.3' });                        dots.forEach(function(d) { d.style.opacity = '0.3' });                        if (line) line.style.opacity = '1';                        productDots.forEach(function(d) { d.style.opacity = '1' });                    }                };                item.addEventListener('mouseenter', highlight);                item.addEventListener('focus', highlight);                item.addEventListener('mouseleave', clearHighlight);                item.addEventListener('blur', clearHighlight);                item.addEventListener('click', toggleIsolate);                item.addEventListener('keydown', function(e) {                    if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggleIsolate(); }                });            });        });      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', initialize);      } else {        initialize();      }      function sendMessageToParentWindow(typeOfMessage, message = null) {          let url = (window.location.ancestorOrigins && window.location.ancestorOrigins.length > 0) ? window.location.ancestorOrigins[0] : '*';          window.parent.postMessage({ analytics: { ...message } }, url);      }      sendMessageToParentWindow('analytics', { type: "fv-loaded", timestamp: new Date().toISOString() });    })();      </script>  </div><p>The site passed all interaction and navigational checks. One element failed a screenreader test due to a prohibited ARIA attribute, and 36 elements failed visual and structural accessibility tests because of poor contrast between foreground and background.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-accessibility"><p>Read more about NordVPN's accessibility ▼</p></div><p>On investigating the contrast issue, it turned out it referred to text that became clearer when scrolled over.</p><p>Looking at NordVPN on desktop, we found it supports 13 languages, including options including English, French, German, Italian, Polish, Portuguese, Japanese, Korean and Chinese (Simplified and Traditional.)</p><p>However, much like Surfshark, it lacked others, including Arabic, Turkish, and Swedish. This seems a simple enough area both NordVPN and Surfshark can improve on, especially since providers such as <a href="https://www.techradar.com/reviews/norton-secure-vpn">Norton VPN</a> and Proton VPN have 26 and 28 languages supported, respectively.</p><p>Keyboard support on NordVPN is also not the best. Disconnecting our mouse for a second, it quickly became apparent that doing anything other than actually connecting to a VPN server wasn't easy enough.</p><p>Unless you’d happened to connect to where you wanted to recently – so it’d appear in your ‘Recent Connections’ list – it was nearly impossible to get a connection going. Using Meshnet, Threat Protection Pro, or anything else, however, was simple.</p><p>An easy comparison to make here is with PIA, whose app allows you to scroll its country list, highlight a country, and connect within a few taps of the keyboard – it really should be this simple.</p><p><strong>Score: 2/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-customer-support"><span>Customer support</span></h2><ul><li><strong>24/7 live chat and email support</strong> available alongside a support site</li><li><strong>Easy access to support</strong> via the apps</li><li><strong>Excellent</strong> online user guides.</li></ul><p>NordVPN offers several customer support options, including a support site, 24/7 live chat, and a 24/7 email ticketing system.</p><p>Usefully, the app gives you easy access to raising a ticket or accessing the support site if you need help.</p><p>We found running diagnostic testing from within the app when you encounter a problem helps speed up the support process, as it reduces the number of additional questions agents need to ask. You can even include a list of apps installed on the impacted device in case any of them may be a contributing factor that the support agent can identify.</p><p>Putting its Live Chat service to the test, we found it sufficiently responsive, with an agent responding typically after 2-3 minutes. Its email service wasn’t so hasty. We had to wait around 18 hours before receiving a response to our test question. </p><p>Despite its sluggishness, the email system was effective. Our agent solved our test issue by asking a selection of relevant questions at once, collecting our responses, and using them to diagnose the problems.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-customer-support"><p>Read more about NordVPN's customer support ▼</p></div><p>It was also refreshing to avoid the typical customer support responses of “have you reinstalled the app?” or “have you cleared your cookies?” since the questions we were asked required detailed enough responses that there was no need. This also reduced the amount of back-and-forth required to resolve our test issues. </p><p>NordVPN’s customer support page is also very helpful. It doesn't bombarded the reader with category options to click between straight away, as is expected nowadays. Instead, you’re greeted by five overarching categories, one of which is about exploring other Nord Security products. So, in reality, four categories, and a search bar.</p><p>There is a trade-off for usability, though. For example, entering any of the categories removes the search bar from your screen, forcing you instead to use the breadcrumb trail at the top of the page to return to the main screen and search from there. </p><p>This leaves you doing a lot of unnecessary navigation if you’re merely looking for a quick fix, especially if you’ve clicked through several options in the categories already to try and find your answers that way.</p><p>To NordVPN's credit, once you find the article you need, it's usually extremely helpful.</p><p>For example, Nord’s proxy setup guide for uTorrent not only gives you the super-clear steps you need, but it also tells you how to then check that what you’ve done is working.</p><p>This is great for any kind of VPN user and typically of how strong NordVPN is on customer support.</p><p><strong>Score: 4/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-user-reviews"><span>User reviews</span></h2><p>Although all review sites should be approached with a level of skepticism, they do offer a good enough gauge of how trustworthy a VPN is and how well it performs if you’re looking at a quick glance. </p><p>Across Google Play and the App Store, NordVPN has ratings equal to the very top VPNs. Its rating on TrustPilot is lower than most at only 4.2 out of 5, with 12% of the 44,000+ reviews being 1-star too.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Google Play</p></th><th  ><p>App Store</p></th><th  ><p>Trustpilot</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>NordVPN</p></td><td  ><p>4.6</p></td><td  ><p>4.7</p></td><td  ><p>4.2</p></td></tr><tr><td class="firstcol " ><p>Windscribe</p></td><td  ><p>4.6</p></td><td  ><p>4.6</p></td><td  ><p>4.7</p></td></tr><tr><td class="firstcol " ><p>Surfshark</p></td><td  ><p>4.5</p></td><td  ><p>4.7</p></td><td  ><p>4.5</p></td></tr><tr><td class="firstcol " ><p>PIA</p></td><td  ><p>4.6</p></td><td  ><p>4.7</p></td><td  ><p>4.3</p></td></tr><tr><td class="firstcol " ><p>ExpressVPN</p></td><td  ><p>4.4</p></td><td  ><p>4.7</p></td><td  ><p>4.2</p></td></tr></tbody></table></div><p>The majority of negative reviews on Trustpilot surround NordVPN’s auto-renewals, which, should you be worried about it, can be turned off in a matter of clicks. We recommend doing this early on in your subscription to ensure you’re not stung down the line.</p><h2 class="article-body__section" id="section-track-record-can-you-trust-nordvpn"><span>Track record: can you trust NordVPN?</span></h2><ul><li><strong>Reasonably spotless reputation </strong>throughout its history.</li><li><strong>2018 breach is only notable blot</strong> on its record.</li><li><strong>Currently facing some lawsuits</strong> around its auto-renewal practices.</li></ul><p>NordVPN’s history is, for the most part, positive, though 2018 proved to be a tricky year.</p><p>A breach in March 2018 saw NordVPN’s reputation tarnished, in part due to the obvious security concerns, but mainly since it didn’t admit to the breach for another 18 months, with the announcement coming only in October 2019.</p><p>The breach was only to one VPN server in Finland, and NordVPN explained in the belated announcement that none of NordVPN’s own servers were compromised, claiming the breach “was made possible by poor configuration on a third-party data center’s part”.</p><p>NordVPN was supposedly only made aware of the issue in April 2019, prompting a review and the consequent delay in announcing the breach to customers. </p><p>It’s not thought that any identifiable data was stolen in the breach, due to its small scale and the fact that it didn’t breach Nord’s central infrastructure, and all 5,000 servers NordVPN used at the time were audited on the breach’s discovery to remove further vulnerabilities.</p><div class="collapsible-block-start"></div><div class="collapsible-block-title"read-more-about-nordvpn-s-track-record"><p>Read more about NordVPN's track record ▼</p></div><p>NIST’s vulnerability database also has three weaknesses on record from that same year, though thankfully, none in the seven years since, suggesting that there’s little to worry about now. </p><p>In 2019, NordVPN would become one of the founding members of the <a href="https://www.techradar.com/news/expressvpn-nordvpn-back-vpn-alliances-new-vti-principles">VPN Trust Initiative (VTI)</a>, an industry-led consortium focused on “improving digital safety for consumers by building understanding, strengthening trust, and mitigating risk for VPN users”.</p><p>This consortium also consists of ExpressVPN, StrongVPN, Surfshark, and <a href="http://encrypt.me">encrypt.me</a>, and aims to improve public trust in VPNs and help users make informed decisions.</p><p>While this bears no direct impact on its reputation, it’s a clear sign of good intent from NordVPN that has shown little reason to be doubted since.</p><p>NordVPN would go on to experience around five years with its reputation out of the spotlight, but a lawsuit against its auto-renewal practices would abruptly end this.</p><p>Wittels McInturff Palikovic (WMP) filed a $100m lawsuit against the VPN provider, alleging that it "uses deceptive and illegal auto-renewal practices" in August 2024. In May 2025, a second action was filed on similar grounds.  </p><p>While this case remains ongoing, the topic of auto-renewals remains on the lips of almost all VPN users, with many of the <a href="https://www.techradar.com/vpn/best-vpn">best VPNs</a> adopting similar practices.</p><p>This has lead to similar instances across the industry of users facing unexpected payments for subscriptions and getting pretty upset about it.</p><p>If you’re concerned about getting stung, we recommend turning off auto-renewal once you’re logged into NordVPN. You can do that as soon as you've installed it in a matter of a few clicks.</p><p>NordVPN's latest headache came in January 2026, when <a href="https://www.techradar.com/vpn/vpn-services/nordvpn-denies-data-breach-after-hackers-claim-salesforce-leak-heres-everything-we-know-so-far">a hacker claimed to have breached a NordVPN development server</a>. No sensitive user information was compromised in the alleged breach, and NordVPN has continuously denied its success. </p><p><strong>Score: 4/5</strong></p><div class="collapsible-block-end"></div><h2 class="article-body__section" id="section-final-verdict"><span>Final verdict</span></h2><figure class="van-image-figure pull-left inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1024px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="KUA6mAHyebQs5vgkbGjJ9V" name="review-score-90" alt="Review score 90" src="https://cdn.mos.cms.futurecdn.net/KUA6mAHyebQs5vgkbGjJ9V-1920-80.jpg" mos="" align="left" fullscreen="" width="1024" height="1024" attribution="" endorsement="" class="pull-leftinline" /></p></div></div><figcaption itemprop="caption description" class="pull-left inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Gemini)</span></figcaption></figure><p>NordVPN is the <a href="https://www.techradar.com/vpn/best-vpn">best VPN</a> for most people. While it’s more expensive than Surfshark, it has superior streaming performance, comparable speeds, and a suite of features, including the <a href="https://www.techradar.com/best/password-manager">best password manager</a> available, depending on the plan you choose. </p><p>We recommend a NordVPN Plus plan over its other alternatives. It provides tools, including premium password management and ad and tracker protection, as well as malware blocking and data breach alerts, all alongside its full VPN capabilities.</p><h2 id="who-should-use-nordvpn">Who should use NordVPN?</h2><p><strong>✅  Those looking for top streaming performance: </strong>NordVPN performed near-flawlessly across our streaming tests. It had no issue unblocking any provider we threw at it aside YouTube US and Prime Video Australia. It never struggles with buffering or unexpected dropouts. Plus, it has apps for almost any platform you might wish to stream on. </p><p><strong>✅ </strong> <strong>Those wanting a top password manager alongside the VPN: </strong>Included in Plus plans and above, <a href="https://www.techradar.com/reviews/nordpass">NordPass</a> ranks as our top password manager right now. It offers passkey support, features including secure password sharing and strength detection, and is compatible with almost any platform. </p><p><strong>✅  Those wanting effective ad and malware blocking:</strong> NordVPN Threat Protection Pro performed the best in our latest testing for protection against malware and blocking ads.</p><div class="product"><a data-dimension112="d9891db8-c1cb-11f1-907a-370cff521b83" data-action="Deal Block" data-label="Try NordVPN from $3.39 per month" data-dimension48="Try NordVPN from $3.39 per month" href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="x3Zrr6LPF4qKNzdXj4H4t6" name="NordVPN deal image.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/x3Zrr6LPF4qKNzdXj4H4t6-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><a href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow" data-dimension112="d9891db8-c1cb-11f1-907a-370cff521b83" data-action="Deal Block" data-label="Try NordVPN from $3.39 per month" data-dimension48="Try NordVPN from $3.39 per month" data-dimension25=""><strong>Try NordVPN from $3.39 per month</strong></a></p><p>If you’re looking for the best value NordVPN plan, you should pick up a Plus plan. Available in every region, you can find NordVPN, the Plus plan, which gives you a strong mix of security features in addition to the VPN. These include NordPass, Threat Protection Pro, and data breach alerts. All NordVPN plans come with a 30-day money-back guarantee in case you don't like it. We've tried the guarantee for ourselves and it works.<a class="view-deal button" href="http://go.nordvpn.net/aff_c?offer_id=564&amp;aff_id=3013&amp;url_id=31010&amp;aff_sub1=TR" target="_blank" rel="nofollow" data-dimension112="d9891db8-c1cb-11f1-907a-370cff521b83" data-action="Deal Block" data-label="Try NordVPN from $3.39 per month" data-dimension48="Try NordVPN from $3.39 per month" data-dimension25="">View Deal</a></p></div><h2 id="who-should-try-a-different-vpn-instead">Who should try a different VPN instead?</h2><p>❌<strong> Those wanting full antivirus protection included: </strong>While Threat Protection Pro offers solid security capabilities, it is by no means a fully-fledged antivirus. Providers such as Surfshark offer true antivirus protection in their more premium plans, alongside features included with NordVPN such as ad and malware protection. </p><div class="product"><a data-dimension112="d9891ed0-c1cb-11f1-8b7b-b3639a1fdc47" data-action="Deal Block" data-label="from $1.99 per month" data-dimension48="from $1.99 per month" href="http://get.surfshark.net/aff_c?offer_id=61&amp;aff_id=1691&amp;url_id=2409&amp;aff_sub2=free" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="pSwRio45uPDhdN5egHcYF" name="Surfshark deal image.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pSwRio45uPDhdN5egHcYF-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Surfshark</strong>: <a href="http://get.surfshark.net/aff_c?offer_id=61&amp;aff_id=1691&amp;url_id=2409&amp;aff_sub2=free" target="_blank" rel="nofollow" data-dimension112="d9891ed0-c1cb-11f1-8b7b-b3639a1fdc47" data-action="Deal Block" data-label="from $1.99 per month" data-dimension48="from $1.99 per month" data-dimension25="">from $1.99 per month</a><br /><strong>The best cheap VPN</strong><br />Surfshark is the second-best VPN we’ve tested overall, offers P2P optimization on all its servers, and even offers full antivirus protection on its One and One+ plans. What’s more, it’s over $1/month cheaper than NordVPN, and comes with unique features including Alternative ID, which enables you to spoof your name, address, and email – you can even spoof your phone number if you’re located in the US!<a class="view-deal button" href="http://get.surfshark.net/aff_c?offer_id=61&amp;aff_id=1691&amp;url_id=2409&amp;aff_sub2=free" target="_blank" rel="nofollow" data-dimension112="d9891ed0-c1cb-11f1-8b7b-b3639a1fdc47" data-action="Deal Block" data-label="from $1.99 per month" data-dimension48="from $1.99 per month" data-dimension25="">View Deal</a></p></div><h2 id="nordvpn-faqs">NordVPN FAQs</h2><section class="article__schema-question"><h3>Does NordVPN have a free trial?</h3><article class="article__schema-answer"><p>NordVPN does offer a free trial; however, it’s only available on its Android and iOS apps. Signing up to NordVPN from anywhere other than Apple’s App Store or the Google Play Store will only give you access to NordVPN’s 30-day money-back guarantee. </p></article></section><section class="article__schema-question"><h3>Does NordVPN work in China?</h3><article class="article__schema-answer"><p>Yes, our latest testing indicates that NordVPN not only works in China, but is also among the <a href="https://www.techradar.com/news/best-vpn-for-china-our-5-top-choices" target="_blank">best VPNs for China</a>. </p></article></section><section class="article__schema-question"><h3>Is NordVPN blocked by Netflix?</h3><article class="article__schema-answer"><p>No, our testing indicates that NordVPN works perfectly with Netflix. In fact, we rate it among the <a href="https://www.techradar.com/vpn/best-netflix-vpn">best VPNs for Netflix</a></p></article></section><h3 class="article-body__section" id="section-nordvpn-testing-methodology"><span>NordVPN testing methodology</span></h3><p>Throughout this review, I'll refer to things either 'I' or 'we' have seen. Whenever I say 'I' have seen something, this means it is something I, Rob Dunne, and I've seen it in hands-on testing of NordVPN.</p><p>When talking about things that 'we' have seen, this refers to anything uncovered during our technical lab testing. This is performed by <a href="https://www.techradar.com/author/mike-williams">VPN Technical Editor, Mike Williams</a>.</p><p>We test each VPN every six months. These tests cover speed, ad-blocking, anti-phishing and malware, streaming service unblocking, and local <a href="https://www.techradar.com/pro/what-is-an-ip-address">IP address</a> leaks. Plus,  the server networks are spot-checked to confirm that the <a href="https://www.techradar.com/pro/vpn/what-are-vpn-servers">VPN server</a> locations are accurate. We also check through each <a href="https://www.techradar.com/vpn/best-vpn">VPN</a> provider's security credentials, privacy policy, and executable files.</p><p>You can take a look at our <a href="https://www.techradar.com/vpn/latest-vpn-testing-and-results">VPN testing methodology</a> to see the full measures we put each VPN through.</p><p>The TechRadar VPN team fact-checks every VPN review we write, using our own research and knowledge alongside information provided by NordVPN. We update this review regularly to include any new features or information about the product, ensuring that what you’re reading is 100% up to date and as you would find the product if you downloaded and used it today.</p><p>If you notice anything while using NordVPN that doesn't match what you read on this page, please let us know in the comments or by emailing us. We will then do our best to offer product support information or include corrections and warnings to other users, depending on which is appropriate.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Dyson W1 PencilWash review: a terrific lightweight power mop with marathon runtime ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-dyson-w1-pencilwash-30-second-review"><span>Dyson W1 PencilWash: 30-second review</span></h2><p>Dyson has updated its lightweight wet floor cleaner with a redesigned floorhead and extra-long battery life, without increasing the price. The second-generation PencilWash takes the best features of the original — its lightweight build, ease of use, and effective wet cleaning — and adds thoughtful features that add up to make it an even better everyday cleaning tool.</p><p>The cleaning head’s plush-feeling roller is now sprinkled with stiffer bristles to tackle welded-on stains effectively without scuffing your floor. The upgraded clean water tank is larger and fully detachable, and emptying soiled water is less messy too. After mopping, your floors will be dry and ready to walk on almost immediately.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sQD2xRELmM9DDgbFfffoQc" name="pwash-2" alt="Dyson W1 PencilWash microfiber roller" src="https://cdn.mos.cms.futurecdn.net/sQD2xRELmM9DDgbFfffoQc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Look closely and you'll see rows of small red bristles embedded in the W1 PencilWash's upgraded microfiber roller </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s an excellent package, but before buying, note that Dyson has now cut the price of the <a href="https://www.techradar.com/home/vacuums/dyson-pencilwash-review">original PencilWash</a> to just $199.99 / £179 in the US and UK respectively. That’s great value, and it could be all you need if you want to spruce up a relatively small home.</p><p>For me, the only real drawback of the W1 PencilWash was that hair tended to get wrapped around one of the wheels underneath the floor head, rather than sticking to the roller and being scraped off by Dyson’s new metal comb.</p><p>Note that the PencilWash isn’t a vacuum cleaner, and has no suction. If you’re looking for a slim and lightweight vacuum, take a look at the <a href="https://www.techradar.com/home/vacuums/dyson-pencilvac-fluffycones-review">Dyson PencilVac</a> instead.</p><h2 class="article-body__section" id="section-dyson-w1-pencilwash-price-and-availability"><span>Dyson W1 PencilWash: price and availability</span></h2><ul><li><strong>Went on sale in October 2026</strong></li><li><strong>List price $349.99 / £299.99 in the US and UK</strong></li><li><strong>Not yet available in Australia, but likely to be AU$549</strong></li></ul><p>Dyson announced the W1 PencilWash at its Dyson Unveiled event in September 2026, and the product launched globally in October the same year — nine months after the original PencilWash.</p><p>It has a list price of $349.99 / £299.99, which is the same as the original PencilWash at launch, though you may also be able to find it cheaper (for example, Dyson is offering a $100 discount in its US store at the time of writing). The W1 PencilWash isn’t yet available in Australia, but I would expect it to be AU$549 when it arrives. </p><p>That's relatively expensive for a wet-only floor cleaner, and there are several excellent wet-and-dry vacuums available for about the same price. For comparison, the <a href="https://www.techradar.com/home/vacuums/bissell-crosswave-hydroscrub-review">Bissell Crosswave HydroScrub</a> wet/dry floor cleaner is $369.99 (about £280 / AU$540), while the <a href="https://www.techradar.com/home/vacuums/shark-hydrovac-cordless-review">Shark HydroVac Cordless WD201 / WD210 </a>is $359.99 / £329.99 / AU$399.99.</p><p>What you're paying for here is the light weight and compact design, which will be better suited to apartments and other small homes than a bulky wet-dry cleaner.</p><ul><li><strong>Value score: 4/5</strong></li></ul><h2 class="article-body__section" id="section-dyson-w1-pencilwash-design"><span>Dyson W1 PencilWash: design</span></h2><ul><li><strong>New stiffer bristles in microfiber roller</strong></li><li><strong>Clean water tank is larger and fully removable</strong></li><li><strong>Emptying waste water is less messy</strong></li></ul><p>At first glance, the W1 PencilWash looks very similar to its predecessor, with a slender handle (this time colored indigo rather than copper), and one of Dyson’s Submarine floor heads. A tank at the back of the floorhead dispenses water onto a microfiber roller, and a squeegee-like blade squeezes dirty water out, and dispenses it into a separate tank inside. </p><p>On closer inspection, however, there are a few significant differences. The most obvious change is the floorhead’s microfiber roller, which is now scattered with stiffer fibers to more effectively scrub away stubborn dirt. There is also a new metal comb designed to detangle and scrape hair off the roller. (Both of these features are borrowed from the bulkier <a href="https://www.techradar.com/home/vacuums/dyson-clean-wash-hygiene-review">Dyson Clean+Wash Hygiene</a> wet cleaner, which launched at the start of 2026.)</p><p>The head disassembles into more parts, as you can see below. Most significantly, the clean water tank is now fully removable, making it easier to fill at the sink, and has a significantly larger capacity so you can keep cleaning for longer. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793794971260-etb6hjh9x *, #fv-chart-1793794971260-etb6hjh9x *:before, #fv-chart-1793794971260-etb6hjh9x *:after, #fv-chart-1793794971260-etb6hjh9x-slideshow *, #fv-chart-1793794971260-etb6hjh9x-slideshow *:before, #fv-chart-1793794971260-etb6hjh9x-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793794971260-etb6hjh9x, #fv-chart-1793794971260-etb6hjh9x-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794971260-etb6hjh9x { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793794971260-etb6hjh9x.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-1793794971260-etb6hjh9x .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793794971260-etb6hjh9x-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-1793794971260-etb6hjh9x-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-1793794971260-etb6hjh9x-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn.disabled, #fv-chart-1793794971260-etb6hjh9x-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-1793794971260-etb6hjh9x-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793794971260-etb6hjh9x-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-1793794971260-etb6hjh9x-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793794971260-etb6hjh9x .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-expand-btn, #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-expand-btn:hover, #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-pie-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-bar-product, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793794971260-etb6hjh9x.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-1793794971260-etb6hjh9x.mobile-view .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-product-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x.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-1793794971260-etb6hjh9x.mobile-view .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-cluster, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-label-space, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-chart-space, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-benchmark-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dropdown-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-carousel-nav-btn, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-chart-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-chart-subhead, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-header, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-vs, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793794971260-etb6hjh9x.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-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dials-grid, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dial-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793794971260-etb6hjh9x .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794971260-etb6hjh9x.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Dyson PencilWash floorhead comparison",  "description": "Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:22:51.260Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:22:51.260Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Dyson PencilWash floorhead comparison","subhead":"Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg","label1":"Dyson W1 PencilWash","label2":"Original Dyson PencilWash","showTitle":true,"image1Alt":"Dyson W1 PencilWash floorhead disassembled","image2Alt":"Original Dyson PencilWash floorhead disassembled","showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793794971260-etb6hjh9x" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Dyson PencilWash floorhead comparison</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793794971260-etb6hjh9x-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg" alt="Original Dyson PencilWash floorhead disassembled" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg" alt="Dyson W1 PencilWash floorhead disassembled" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Dyson W1 PencilWash</div><div class="fv-image-compare-label fv-image-compare-label-right">Original Dyson PencilWash</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793794971260-etb6hjh9x', false); });      } else {        initialize('fv-chart-1793794971260-etb6hjh9x', false);      }    })();      </script></div><p>The dirty water collection tank has also been reworked, and is now much less prone to spills during emptying. It’s still wise to hold the whole floorhead over the sink when removing the cassette, but I found the process much less messy than the original PencilWash. </p><p>Note that the W1 PencilWash has different docks in the US and UK. The UK model, which I tested here, has a charging stand that holds the PencilWash’s handle, and a separate holder for the floorhead.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vgAneprjqtkQzQgiH4uGid" name="pwash-5" alt="Dyson W1 PencilWash handle in charging stand, head in drying stand, and bottle of floor cleaner in kitchen" src="https://cdn.mos.cms.futurecdn.net/vgAneprjqtkQzQgiH4uGid-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The UK version of the W1 PencilWash has a charging stand for the handle, and a separate holder for the floorhead. The US model has a magnetic charging stand called the Dok that holds both together. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The US model has a magnetic charging stand called the Dok, which holds the whole PencilWash with its floorhead attached. This seems slightly more convenient, and will save a few seconds during cleaning.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h2 class="article-body__section" id="section-dyson-w1-pencilwash-performance"><span>Dyson W1 PencilWash: performance</span></h2><ul><li><strong>Excellent cleaning on dried-on spills</strong></li><li><strong>Much easier to fill and empty than previous model</strong></li><li><strong>Battery lasted over two hours in testing</strong></li><li><strong>Hair wrapped around wheel underneath floorhead</strong></li></ul><p>In use, the W1 PencilWash feels very much like its predecessor. The handle is light in the hand, and its plush microfiber roller propels it forward so you barely need to apply any force when cleaning. </p><p>I tested it with a variety of stains and spills, including dried-on juice, ketchup, dried toothpaste (to simulate spills in a bathroom), flour, and hair.</p><p>You can use the PencilWash with plain water, or a cleaning fluid. I tested it with Dyson 02 Probiotic Hard Floor Cleaning Solution (which is specifically recommended for the company’s wet floor cleaners) diluted according to the instructions on the bottle.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Hjor9q5RkL5tu94BBdqTnd-1920-80.jpg" alt="Dyson W1 PencilWash head with bottle of Dyson probiotic floor cleaner" /><figcaption>Dyson's probiotic floor cleaning solution is specifically designed for use with its wet floor cleaners, but you can use a different brand, or just plain water instead<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d9GVNK7pcXhJepAJqA3Sid-1920-80.jpg" alt="Dyson W1 PencilWash navigating under chair" /><figcaption>The handle of the W1 PencilWash can lie almost flat, making it easy to maneuver under low furniture<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/B9FvfmVjwf3cReiiveFy6c-1920-80.jpg" alt="Person removing cassette from Dyson W1 PencilWash" /><figcaption>The reworked floorhead has an easily removable cassette for simple cleanup<small role="credit">Future</small></figcaption></figure></figure><p>The W1 PencilWash fared well in all my cleaning tests, clearing up flour, dried juice, and ketchup on a single pass. Congealed toothpaste proved the toughest challenge, taking about four passes to completely remove, but I was impressed that the roller system removed all the mess and deposited it in the waste tank, leaving no streaks when I continued cleaning the rest of the floor. The new stiffer bristles work well to scrub away dirt that would normally require you to get down on your hands and knees to remove, and I was pleased to note their tougher fibers aren’t rigid enough to damage your flooring.</p><p>The floorhead is fully articulated for easy maneuvering, and the handle can be laid almost flat to clean under low items of furniture. I was able to clean right between the legs of my dining chairs, which have a crossbar just a few inches above the ground. The roller cleans very close to furniture and baseboards as well, leaving a gap only half an inch wide.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793794941594-ok0pc5o30 *, #fv-chart-1793794941594-ok0pc5o30 *:before, #fv-chart-1793794941594-ok0pc5o30 *:after, #fv-chart-1793794941594-ok0pc5o30-slideshow *, #fv-chart-1793794941594-ok0pc5o30-slideshow *:before, #fv-chart-1793794941594-ok0pc5o30-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793794941594-ok0pc5o30, #fv-chart-1793794941594-ok0pc5o30-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794941594-ok0pc5o30 { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793794941594-ok0pc5o30.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-1793794941594-ok0pc5o30 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793794941594-ok0pc5o30-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-1793794941594-ok0pc5o30-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-1793794941594-ok0pc5o30-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn.disabled, #fv-chart-1793794941594-ok0pc5o30-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-1793794941594-ok0pc5o30-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793794941594-ok0pc5o30-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-1793794941594-ok0pc5o30-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793794941594-ok0pc5o30 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-expand-btn, #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-expand-btn:hover, #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-pie-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-bar-product, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793794941594-ok0pc5o30.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-1793794941594-ok0pc5o30.mobile-view .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-product-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30.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-1793794941594-ok0pc5o30.mobile-view .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-cluster, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-label-space, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-chart-space, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-benchmark-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dropdown-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-carousel-nav-btn, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-chart-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-chart-subhead, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-header, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-vs, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793794941594-ok0pc5o30.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-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dials-grid, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dial-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793794941594-ok0pc5o30 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794941594-ok0pc5o30.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Ketchup cleaning test",  "description": "Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:22:21.594Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:22:21.594Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Ketchup cleaning test","subhead":"Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg","label1":"Before cleaning ketchup","label2":"After cleaning ketchup","image1Alt":"Ketchup on floor before cleaning with Dyson W1 PencilWash","image2Alt":"Clean floor with all ketchup removed by Dyson W1 PencilWash","showTitle":true,"showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793794941594-ok0pc5o30" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Ketchup cleaning test</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793794941594-ok0pc5o30-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg" alt="Clean floor with all ketchup removed by Dyson W1 PencilWash" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg" alt="Ketchup on floor before cleaning with Dyson W1 PencilWash" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before cleaning ketchup</div><div class="fv-image-compare-label fv-image-compare-label-right">After cleaning ketchup</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793794941594-ok0pc5o30', false); });      } else {        initialize('fv-chart-1793794941594-ok0pc5o30', false);      }    })();      </script></div><p>Your floors will dry exceptionally quickly as well; after a pass on the regular cleaning mode, my laminate flooring was dry within 10 seconds.</p><p>The new metal comb wasn’t quite such a success. It does catch hair, and the roller needs less hand-cleaning after use, but quite a lot of hair became caught in one of the small wheels on the bottom of the floorhead during my tests. This didn’t seem to affect performance, and I didn’t even realize while maneuvering the cleaner, but it was wrapped tightly around the tiny axel and had to be cut free with scissors. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793795199133-m1bqm59zo *, #fv-chart-1793795199133-m1bqm59zo *:before, #fv-chart-1793795199133-m1bqm59zo *:after, #fv-chart-1793795199133-m1bqm59zo-slideshow *, #fv-chart-1793795199133-m1bqm59zo-slideshow *:before, #fv-chart-1793795199133-m1bqm59zo-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793795199133-m1bqm59zo, #fv-chart-1793795199133-m1bqm59zo-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793795199133-m1bqm59zo { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793795199133-m1bqm59zo.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-1793795199133-m1bqm59zo .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793795199133-m1bqm59zo-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-1793795199133-m1bqm59zo-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-1793795199133-m1bqm59zo-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn.disabled, #fv-chart-1793795199133-m1bqm59zo-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-1793795199133-m1bqm59zo-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793795199133-m1bqm59zo-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-1793795199133-m1bqm59zo-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793795199133-m1bqm59zo .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-expand-btn, #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-expand-btn:hover, #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-pie-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-bar-product, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793795199133-m1bqm59zo.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-1793795199133-m1bqm59zo.mobile-view .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-product-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo.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-1793795199133-m1bqm59zo.mobile-view .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-cluster, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-label-space, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-chart-space, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-benchmark-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dropdown-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-carousel-nav-btn, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-chart-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-chart-subhead, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-header, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-vs, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793795199133-m1bqm59zo.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-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dials-grid, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dial-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793795199133-m1bqm59zo .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster { width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-label-space { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793795199133-m1bqm59zo.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Toothpaste cleaning test",  "description": "Before and after cleaning toothpaste off floor with Dyson W1 PencilWash",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:26:39.133Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:26:39.133Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Toothpaste cleaning test","subhead":"Before and after cleaning toothpaste off floor with Dyson W1 PencilWash","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg","label1":"Before cleaning toothpaste","label2":"During cleaning toothpaste","showTitle":true,"showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793795199133-m1bqm59zo" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Toothpaste cleaning test</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793795199133-m1bqm59zo-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Before and after cleaning toothpaste off floor with Dyson W1 PencilWash" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before cleaning toothpaste</div><div class="fv-image-compare-label fv-image-compare-label-right">During cleaning toothpaste</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793795199133-m1bqm59zo', false); });      } else {        initialize('fv-chart-1793795199133-m1bqm59zo', false);      }    })();      </script></div><p>It’s worth noting that the microfiber roller takes quite a long time to air-dry. I placed it near a dehumidifier to speed up the process, but it still took two days before it was dry enough for me to feel comfortable storing it. </p><p>The big surprise was the battery life. Dyson’s specifications claim that the W1 PencilWash can run for 45 minutes on a single charge (up from 30 minutes for the original PencilWash), but during my tests it ran for an astonishing two hours and 13 minutes — and that was during active mopping, not just running the roller without resistance. I have contacted Dyson’s press office to ask whether that’s expected performance, but it’s safe to say that you shouldn’t have any problems cleaning even large homes.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/cp2xidV3sN6Dfu3ndqiN2b-1920-80.jpg" alt="Hair caught in wheel under Dyson W1 PencilWash" /><figcaption>Hair became caught in one of the wheels on the bottom of the floorhead<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7xYVZMquCn6wFC2TC2mLid-1920-80.jpg" alt="Dyson W1 PencilWash with bottle of cleaner and bowl of dirty waste water" /><figcaption>The dirty water container is now easier to empty, with less potential for spillage<small role="credit">Future</small></figcaption></figure></figure><p>Overall, I’m impressed with the W1 PencilWash. Dyson has clearly taken on board feedback from the first model (the detachable clean water tank and scrubbing bristles are highlights) while keeping the fundamentals the same. If you have a large home with lots of hard flooring, or live with pets or children, then this new model would be a great choice. If, on the other hand, your home is relatively small and you want something for everyday maintenance, the original PencilWash might be the smarter choice at its newly reduced price.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-dyson-w1-pencilwash"><span>Should you buy the Dyson W1 PencilWash?</span></h2><div ><table><caption>Dyson W1 PencilWash score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Same price as the original PencilWash at launch. Relatively pricey for a wet floor cleaner; you're paying for light weight and compact design.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Redesigned floor head is a huge improvement — especially new water tanks.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Great cleaning performance on stubborn stains and remarkable battery life, but hair can get caught in wheels.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h3 id="buy-it-if-6">Buy it if</h3><div class="product"><p><strong>You have lots of hard floors</strong></p><p>With its incredible battery life, the W1 PencilWash can mop your entire home on a single charge.</p></div><div class="product"><p><strong>You want to clean little and often</strong></p><p>The W1 PencilWash is quick to use and floors dry rapidly after cleaning, so it's very convenient for daily mopping.</p></div><h3 id="don-39-t-buy-it-if-4">Don't buy it if</h3><div class="product"><p><strong>You have long hair</strong></p><p>Although the metal comb is designed to catch hair, I found it tended to get caught on one of the wheels under the floorhead.</p></div><div class="product"><p><strong>You have unsealed floors</strong></p><p>Neither version of the PencilWash is suitable for unsealed flooring.</p></div><h2 class="article-body__section" id="section-dyson-w1-pencilwash-also-consider"><span>Dyson W1 PencilWash: also consider</span></h2><p>If the Dyson W1 PencilWash isn't the right wet floor cleaner for you, here are two other options to think about.</p><div class="product"><a data-dimension112="7403bc38-d84f-11f1-a9bb-ab1d18b02220" data-action="Deal Block" data-label="Read our full Dyson PencilWash review" data-dimension48="Read our full Dyson PencilWash review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1152px;"><p class="vanilla-image-block" style="padding-top:150.00%;"><img id="BdvAcWUWhAQjvyf6ScYryG" name="Pencilwash" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/BdvAcWUWhAQjvyf6ScYryG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1152" height="1728" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Dyson PencilWash</strong></p><p>The original PencilWash is still a great option, and has received a serious price cut since the launch of the W1. Well worth investigating if you have a small home.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/vacuums/dyson-pencilwash-review" data-dimension112="7403bc38-d84f-11f1-a9bb-ab1d18b02220" data-action="Deal Block" data-label="Read our full Dyson PencilWash review" data-dimension48="Read our full Dyson PencilWash review" data-dimension25=""><strong>Dyson PencilWash review</strong></a></p></div><div class="product"><a data-dimension112="7403bc9c-d84f-11f1-a5bb-07341bc72238" data-action="Deal Block" data-label="Read our full Bissell CrossWave HydroScrub review" data-dimension48="Read our full Bissell CrossWave HydroScrub review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="CLGDzsfyNfUeHKcYwBXt3c" name="image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/CLGDzsfyNfUeHKcYwBXt3c-1920-80.png" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Bissell CrossWave HydroScrub</strong></p><p>If you want a full wet and dry cleaner, check out Bissell. The CrossWave HydroScrub isn't small, but it's a great all-rounder and about the same price as the W1 PencilWash.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/vacuums/bissell-crosswave-hydroscrub-review" data-dimension112="7403bc9c-d84f-11f1-a5bb-07341bc72238" data-action="Deal Block" data-label="Read our full Bissell CrossWave HydroScrub review" data-dimension48="Read our full Bissell CrossWave HydroScrub review" data-dimension25=""><strong>Bissell CrossWave HydroScrub review</strong></a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-dyson-w1-pencilwash"><span>How I tested the Dyson W1 PencilWash</span></h2><p>I tested the Dyson W1 PencilWash on sealed laminate flooring, using Dyson 02 Probiotic Hard Floor Cleaning Solution and tap water. I used it on common household stains including dried juice, dried toothpaste, ketchup, flour, and human hair.</p><p>I emptied the floor head cassette, and cleaned the tank, comb, and microfiber roller using plain water.</p><p>I fully charged the W1, then used it to clean the floors, moving it backwards and forwards as in normal use, and timed how long it took for the battery to run flat.</p><p><em>First reviewed November 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/vacuums/dyson-w1-pencilwash-review</link>
                                                                            <description>
                            <![CDATA[ Dyson has upgraded its super-slender wet floor cleaner with extra scrubbing power, easier emptying, a bigger water tank, and incredible battery life. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">AmDoLsFAuKpra2wqrjyomk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6MSRQzJdBDFt43buEr45jd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 16:03:03 +0000</pubDate>                                                                                                                                <updated>Wed, 04 Nov 2026 22:16:22 +0000</updated>
                                                                                                                                            <category><![CDATA[Vacuums]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                <author><![CDATA[ catherine.ellis@futurenet.com (Cat Ellis) ]]></author>                    <dc:creator><![CDATA[ Cat Ellis ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/gxZz6rCoNR6sXhqL34MvML-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Cat is TechRadar&amp;#39;s Homes Editor, covering smart home tech, kitchen appliances, vacuums, haircare and more. She&amp;#39;s been a tech journalist for 15 years, having worked on print magazines including PC Plus and PC Format, and is a&lt;a href=&quot;https://sca.coffee/&quot;&gt; &lt;u&gt;Speciality Coffee Association&lt;/u&gt;&lt;/a&gt; (SCA) certified barista, and holds a professional certificate in security awareness for smart homes.. Whether you want to invest in some smart lights, find your ideal hair styler, or pick the espresso machine of your dreams, she&amp;#39;s the right person to help.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6MSRQzJdBDFt43buEr45jd-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Dyson W1 PencilWash floor head]]></media:description>                                                            <media:text><![CDATA[Dyson W1 PencilWash floor head]]></media:text>
                                <media:title type="plain"><![CDATA[Dyson W1 PencilWash floor head]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6MSRQzJdBDFt43buEr45jd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-dyson-w1-pencilwash-30-second-review"><span>Dyson W1 PencilWash: 30-second review</span></h2><p>Dyson has updated its lightweight wet floor cleaner with a redesigned floorhead and extra-long battery life, without increasing the price. The second-generation PencilWash takes the best features of the original — its lightweight build, ease of use, and effective wet cleaning — and adds thoughtful features that add up to make it an even better everyday cleaning tool.</p><p>The cleaning head’s plush-feeling roller is now sprinkled with stiffer bristles to tackle welded-on stains effectively without scuffing your floor. The upgraded clean water tank is larger and fully detachable, and emptying soiled water is less messy too. After mopping, your floors will be dry and ready to walk on almost immediately.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sQD2xRELmM9DDgbFfffoQc" name="pwash-2" alt="Dyson W1 PencilWash microfiber roller" src="https://cdn.mos.cms.futurecdn.net/sQD2xRELmM9DDgbFfffoQc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Look closely and you'll see rows of small red bristles embedded in the W1 PencilWash's upgraded microfiber roller </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s an excellent package, but before buying, note that Dyson has now cut the price of the <a href="https://www.techradar.com/home/vacuums/dyson-pencilwash-review">original PencilWash</a> to just $199.99 / £179 in the US and UK respectively. That’s great value, and it could be all you need if you want to spruce up a relatively small home.</p><p>For me, the only real drawback of the W1 PencilWash was that hair tended to get wrapped around one of the wheels underneath the floor head, rather than sticking to the roller and being scraped off by Dyson’s new metal comb.</p><p>Note that the PencilWash isn’t a vacuum cleaner, and has no suction. If you’re looking for a slim and lightweight vacuum, take a look at the <a href="https://www.techradar.com/home/vacuums/dyson-pencilvac-fluffycones-review">Dyson PencilVac</a> instead.</p><h2 class="article-body__section" id="section-dyson-w1-pencilwash-price-and-availability"><span>Dyson W1 PencilWash: price and availability</span></h2><ul><li><strong>Went on sale in October 2026</strong></li><li><strong>List price $349.99 / £299.99 in the US and UK</strong></li><li><strong>Not yet available in Australia, but likely to be AU$549</strong></li></ul><p>Dyson announced the W1 PencilWash at its Dyson Unveiled event in September 2026, and the product launched globally in October the same year — nine months after the original PencilWash.</p><p>It has a list price of $349.99 / £299.99, which is the same as the original PencilWash at launch, though you may also be able to find it cheaper (for example, Dyson is offering a $100 discount in its US store at the time of writing). The W1 PencilWash isn’t yet available in Australia, but I would expect it to be AU$549 when it arrives. </p><p>That's relatively expensive for a wet-only floor cleaner, and there are several excellent wet-and-dry vacuums available for about the same price. For comparison, the <a href="https://www.techradar.com/home/vacuums/bissell-crosswave-hydroscrub-review">Bissell Crosswave HydroScrub</a> wet/dry floor cleaner is $369.99 (about £280 / AU$540), while the <a href="https://www.techradar.com/home/vacuums/shark-hydrovac-cordless-review">Shark HydroVac Cordless WD201 / WD210 </a>is $359.99 / £329.99 / AU$399.99.</p><p>What you're paying for here is the light weight and compact design, which will be better suited to apartments and other small homes than a bulky wet-dry cleaner.</p><ul><li><strong>Value score: 4/5</strong></li></ul><h2 class="article-body__section" id="section-dyson-w1-pencilwash-design"><span>Dyson W1 PencilWash: design</span></h2><ul><li><strong>New stiffer bristles in microfiber roller</strong></li><li><strong>Clean water tank is larger and fully removable</strong></li><li><strong>Emptying waste water is less messy</strong></li></ul><p>At first glance, the W1 PencilWash looks very similar to its predecessor, with a slender handle (this time colored indigo rather than copper), and one of Dyson’s Submarine floor heads. A tank at the back of the floorhead dispenses water onto a microfiber roller, and a squeegee-like blade squeezes dirty water out, and dispenses it into a separate tank inside. </p><p>On closer inspection, however, there are a few significant differences. The most obvious change is the floorhead’s microfiber roller, which is now scattered with stiffer fibers to more effectively scrub away stubborn dirt. There is also a new metal comb designed to detangle and scrape hair off the roller. (Both of these features are borrowed from the bulkier <a href="https://www.techradar.com/home/vacuums/dyson-clean-wash-hygiene-review">Dyson Clean+Wash Hygiene</a> wet cleaner, which launched at the start of 2026.)</p><p>The head disassembles into more parts, as you can see below. Most significantly, the clean water tank is now fully removable, making it easier to fill at the sink, and has a significantly larger capacity so you can keep cleaning for longer. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793794971260-etb6hjh9x *, #fv-chart-1793794971260-etb6hjh9x *:before, #fv-chart-1793794971260-etb6hjh9x *:after, #fv-chart-1793794971260-etb6hjh9x-slideshow *, #fv-chart-1793794971260-etb6hjh9x-slideshow *:before, #fv-chart-1793794971260-etb6hjh9x-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793794971260-etb6hjh9x, #fv-chart-1793794971260-etb6hjh9x-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794971260-etb6hjh9x { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793794971260-etb6hjh9x.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-1793794971260-etb6hjh9x .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793794971260-etb6hjh9x-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-1793794971260-etb6hjh9x-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-1793794971260-etb6hjh9x-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn.disabled, #fv-chart-1793794971260-etb6hjh9x-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-1793794971260-etb6hjh9x-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793794971260-etb6hjh9x-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-1793794971260-etb6hjh9x-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793794971260-etb6hjh9x .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-expand-btn, #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-expand-btn:hover, #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-pie-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-bar-product, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793794971260-etb6hjh9x.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-1793794971260-etb6hjh9x.mobile-view .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-product-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x.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-1793794971260-etb6hjh9x.mobile-view .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-cluster, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-label-space, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-chart-space, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-benchmark-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dropdown-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-carousel-nav-btn, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-chart-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-chart-subhead, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-header, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-vs, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793794971260-etb6hjh9x.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-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dials-grid, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dial-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793794971260-etb6hjh9x .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .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-1793794971260-etb6hjh9x .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794971260-etb6hjh9x.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Dyson PencilWash floorhead comparison",  "description": "Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:22:51.260Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:22:51.260Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Dyson PencilWash floorhead comparison","subhead":"Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg","label1":"Dyson W1 PencilWash","label2":"Original Dyson PencilWash","showTitle":true,"image1Alt":"Dyson W1 PencilWash floorhead disassembled","image2Alt":"Original Dyson PencilWash floorhead disassembled","showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793794971260-etb6hjh9x" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Dyson PencilWash floorhead comparison</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793794971260-etb6hjh9x-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg" alt="Original Dyson PencilWash floorhead disassembled" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg" alt="Dyson W1 PencilWash floorhead disassembled" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Dyson W1 PencilWash</div><div class="fv-image-compare-label fv-image-compare-label-right">Original Dyson PencilWash</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793794971260-etb6hjh9x', false); });      } else {        initialize('fv-chart-1793794971260-etb6hjh9x', false);      }    })();      </script></div><p>The dirty water collection tank has also been reworked, and is now much less prone to spills during emptying. It’s still wise to hold the whole floorhead over the sink when removing the cassette, but I found the process much less messy than the original PencilWash. </p><p>Note that the W1 PencilWash has different docks in the US and UK. The UK model, which I tested here, has a charging stand that holds the PencilWash’s handle, and a separate holder for the floorhead.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vgAneprjqtkQzQgiH4uGid" name="pwash-5" alt="Dyson W1 PencilWash handle in charging stand, head in drying stand, and bottle of floor cleaner in kitchen" src="https://cdn.mos.cms.futurecdn.net/vgAneprjqtkQzQgiH4uGid-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The UK version of the W1 PencilWash has a charging stand for the handle, and a separate holder for the floorhead. The US model has a magnetic charging stand called the Dok that holds both together. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The US model has a magnetic charging stand called the Dok, which holds the whole PencilWash with its floorhead attached. This seems slightly more convenient, and will save a few seconds during cleaning.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h2 class="article-body__section" id="section-dyson-w1-pencilwash-performance"><span>Dyson W1 PencilWash: performance</span></h2><ul><li><strong>Excellent cleaning on dried-on spills</strong></li><li><strong>Much easier to fill and empty than previous model</strong></li><li><strong>Battery lasted over two hours in testing</strong></li><li><strong>Hair wrapped around wheel underneath floorhead</strong></li></ul><p>In use, the W1 PencilWash feels very much like its predecessor. The handle is light in the hand, and its plush microfiber roller propels it forward so you barely need to apply any force when cleaning. </p><p>I tested it with a variety of stains and spills, including dried-on juice, ketchup, dried toothpaste (to simulate spills in a bathroom), flour, and hair.</p><p>You can use the PencilWash with plain water, or a cleaning fluid. I tested it with Dyson 02 Probiotic Hard Floor Cleaning Solution (which is specifically recommended for the company’s wet floor cleaners) diluted according to the instructions on the bottle.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Hjor9q5RkL5tu94BBdqTnd-1920-80.jpg" alt="Dyson W1 PencilWash head with bottle of Dyson probiotic floor cleaner" /><figcaption>Dyson's probiotic floor cleaning solution is specifically designed for use with its wet floor cleaners, but you can use a different brand, or just plain water instead<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d9GVNK7pcXhJepAJqA3Sid-1920-80.jpg" alt="Dyson W1 PencilWash navigating under chair" /><figcaption>The handle of the W1 PencilWash can lie almost flat, making it easy to maneuver under low furniture<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/B9FvfmVjwf3cReiiveFy6c-1920-80.jpg" alt="Person removing cassette from Dyson W1 PencilWash" /><figcaption>The reworked floorhead has an easily removable cassette for simple cleanup<small role="credit">Future</small></figcaption></figure></figure><p>The W1 PencilWash fared well in all my cleaning tests, clearing up flour, dried juice, and ketchup on a single pass. Congealed toothpaste proved the toughest challenge, taking about four passes to completely remove, but I was impressed that the roller system removed all the mess and deposited it in the waste tank, leaving no streaks when I continued cleaning the rest of the floor. The new stiffer bristles work well to scrub away dirt that would normally require you to get down on your hands and knees to remove, and I was pleased to note their tougher fibers aren’t rigid enough to damage your flooring.</p><p>The floorhead is fully articulated for easy maneuvering, and the handle can be laid almost flat to clean under low items of furniture. I was able to clean right between the legs of my dining chairs, which have a crossbar just a few inches above the ground. The roller cleans very close to furniture and baseboards as well, leaving a gap only half an inch wide.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793794941594-ok0pc5o30 *, #fv-chart-1793794941594-ok0pc5o30 *:before, #fv-chart-1793794941594-ok0pc5o30 *:after, #fv-chart-1793794941594-ok0pc5o30-slideshow *, #fv-chart-1793794941594-ok0pc5o30-slideshow *:before, #fv-chart-1793794941594-ok0pc5o30-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793794941594-ok0pc5o30, #fv-chart-1793794941594-ok0pc5o30-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794941594-ok0pc5o30 { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793794941594-ok0pc5o30.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-1793794941594-ok0pc5o30 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793794941594-ok0pc5o30-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-1793794941594-ok0pc5o30-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-1793794941594-ok0pc5o30-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn.disabled, #fv-chart-1793794941594-ok0pc5o30-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-1793794941594-ok0pc5o30-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793794941594-ok0pc5o30-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-1793794941594-ok0pc5o30-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793794941594-ok0pc5o30 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-expand-btn, #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-expand-btn:hover, #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-pie-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-bar-product, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793794941594-ok0pc5o30.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-1793794941594-ok0pc5o30.mobile-view .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-product-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30.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-1793794941594-ok0pc5o30.mobile-view .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-cluster, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-label-space, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-chart-space, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-benchmark-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dropdown-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-carousel-nav-btn, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-chart-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-chart-subhead, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-header, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-vs, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793794941594-ok0pc5o30.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-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dials-grid, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dial-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793794941594-ok0pc5o30 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .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-1793794941594-ok0pc5o30 .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794941594-ok0pc5o30.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Ketchup cleaning test",  "description": "Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:22:21.594Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:22:21.594Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Ketchup cleaning test","subhead":"Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg","label1":"Before cleaning ketchup","label2":"After cleaning ketchup","image1Alt":"Ketchup on floor before cleaning with Dyson W1 PencilWash","image2Alt":"Clean floor with all ketchup removed by Dyson W1 PencilWash","showTitle":true,"showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793794941594-ok0pc5o30" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Ketchup cleaning test</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793794941594-ok0pc5o30-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg" alt="Clean floor with all ketchup removed by Dyson W1 PencilWash" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg" alt="Ketchup on floor before cleaning with Dyson W1 PencilWash" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before cleaning ketchup</div><div class="fv-image-compare-label fv-image-compare-label-right">After cleaning ketchup</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793794941594-ok0pc5o30', false); });      } else {        initialize('fv-chart-1793794941594-ok0pc5o30', false);      }    })();      </script></div><p>Your floors will dry exceptionally quickly as well; after a pass on the regular cleaning mode, my laminate flooring was dry within 10 seconds.</p><p>The new metal comb wasn’t quite such a success. It does catch hair, and the roller needs less hand-cleaning after use, but quite a lot of hair became caught in one of the small wheels on the bottom of the floorhead during my tests. This didn’t seem to affect performance, and I didn’t even realize while maneuvering the cleaner, but it was wrapped tightly around the tiny axel and had to be cut free with scissors. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793795199133-m1bqm59zo *, #fv-chart-1793795199133-m1bqm59zo *:before, #fv-chart-1793795199133-m1bqm59zo *:after, #fv-chart-1793795199133-m1bqm59zo-slideshow *, #fv-chart-1793795199133-m1bqm59zo-slideshow *:before, #fv-chart-1793795199133-m1bqm59zo-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793795199133-m1bqm59zo, #fv-chart-1793795199133-m1bqm59zo-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793795199133-m1bqm59zo { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793795199133-m1bqm59zo.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-1793795199133-m1bqm59zo .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793795199133-m1bqm59zo-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-1793795199133-m1bqm59zo-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-1793795199133-m1bqm59zo-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn.disabled, #fv-chart-1793795199133-m1bqm59zo-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-1793795199133-m1bqm59zo-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793795199133-m1bqm59zo-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-1793795199133-m1bqm59zo-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793795199133-m1bqm59zo .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-expand-btn, #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-expand-btn:hover, #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-pie-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-bar-product, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793795199133-m1bqm59zo.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-1793795199133-m1bqm59zo.mobile-view .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-product-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo.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-1793795199133-m1bqm59zo.mobile-view .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-cluster, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-label-space, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-chart-space, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-benchmark-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dropdown-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-carousel-nav-btn, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-chart-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-chart-subhead, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-header, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-vs, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793795199133-m1bqm59zo.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-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dials-grid, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dial-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793795199133-m1bqm59zo .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster { width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-label-space { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .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-1793795199133-m1bqm59zo .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793795199133-m1bqm59zo.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Toothpaste cleaning test",  "description": "Before and after cleaning toothpaste off floor with Dyson W1 PencilWash",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:26:39.133Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:26:39.133Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Toothpaste cleaning test","subhead":"Before and after cleaning toothpaste off floor with Dyson W1 PencilWash","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg","label1":"Before cleaning toothpaste","label2":"During cleaning toothpaste","showTitle":true,"showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793795199133-m1bqm59zo" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Toothpaste cleaning test</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793795199133-m1bqm59zo-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Before and after cleaning toothpaste off floor with Dyson W1 PencilWash" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before cleaning toothpaste</div><div class="fv-image-compare-label fv-image-compare-label-right">During cleaning toothpaste</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793795199133-m1bqm59zo', false); });      } else {        initialize('fv-chart-1793795199133-m1bqm59zo', false);      }    })();      </script></div><p>It’s worth noting that the microfiber roller takes quite a long time to air-dry. I placed it near a dehumidifier to speed up the process, but it still took two days before it was dry enough for me to feel comfortable storing it. </p><p>The big surprise was the battery life. Dyson’s specifications claim that the W1 PencilWash can run for 45 minutes on a single charge (up from 30 minutes for the original PencilWash), but during my tests it ran for an astonishing two hours and 13 minutes — and that was during active mopping, not just running the roller without resistance. I have contacted Dyson’s press office to ask whether that’s expected performance, but it’s safe to say that you shouldn’t have any problems cleaning even large homes.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/cp2xidV3sN6Dfu3ndqiN2b-1920-80.jpg" alt="Hair caught in wheel under Dyson W1 PencilWash" /><figcaption>Hair became caught in one of the wheels on the bottom of the floorhead<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7xYVZMquCn6wFC2TC2mLid-1920-80.jpg" alt="Dyson W1 PencilWash with bottle of cleaner and bowl of dirty waste water" /><figcaption>The dirty water container is now easier to empty, with less potential for spillage<small role="credit">Future</small></figcaption></figure></figure><p>Overall, I’m impressed with the W1 PencilWash. Dyson has clearly taken on board feedback from the first model (the detachable clean water tank and scrubbing bristles are highlights) while keeping the fundamentals the same. If you have a large home with lots of hard flooring, or live with pets or children, then this new model would be a great choice. If, on the other hand, your home is relatively small and you want something for everyday maintenance, the original PencilWash might be the smarter choice at its newly reduced price.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-dyson-w1-pencilwash"><span>Should you buy the Dyson W1 PencilWash?</span></h2><div ><table><caption>Dyson W1 PencilWash score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Same price as the original PencilWash at launch. Relatively pricey for a wet floor cleaner; you're paying for light weight and compact design.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Redesigned floor head is a huge improvement — especially new water tanks.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Great cleaning performance on stubborn stains and remarkable battery life, but hair can get caught in wheels.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h3 id="buy-it-if-6">Buy it if</h3><div class="product"><p><strong>You have lots of hard floors</strong></p><p>With its incredible battery life, the W1 PencilWash can mop your entire home on a single charge.</p></div><div class="product"><p><strong>You want to clean little and often</strong></p><p>The W1 PencilWash is quick to use and floors dry rapidly after cleaning, so it's very convenient for daily mopping.</p></div><h3 id="don-39-t-buy-it-if-4">Don't buy it if</h3><div class="product"><p><strong>You have long hair</strong></p><p>Although the metal comb is designed to catch hair, I found it tended to get caught on one of the wheels under the floorhead.</p></div><div class="product"><p><strong>You have unsealed floors</strong></p><p>Neither version of the PencilWash is suitable for unsealed flooring.</p></div><h2 class="article-body__section" id="section-dyson-w1-pencilwash-also-consider"><span>Dyson W1 PencilWash: also consider</span></h2><p>If the Dyson W1 PencilWash isn't the right wet floor cleaner for you, here are two other options to think about.</p><div class="product"><a data-dimension112="7403bc38-d84f-11f1-a9bb-ab1d18b02220" data-action="Deal Block" data-label="Read our full Dyson PencilWash review" data-dimension48="Read our full Dyson PencilWash review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1152px;"><p class="vanilla-image-block" style="padding-top:150.00%;"><img id="BdvAcWUWhAQjvyf6ScYryG" name="Pencilwash" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/BdvAcWUWhAQjvyf6ScYryG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1152" height="1728" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Dyson PencilWash</strong></p><p>The original PencilWash is still a great option, and has received a serious price cut since the launch of the W1. Well worth investigating if you have a small home.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/vacuums/dyson-pencilwash-review" data-dimension112="7403bc38-d84f-11f1-a9bb-ab1d18b02220" data-action="Deal Block" data-label="Read our full Dyson PencilWash review" data-dimension48="Read our full Dyson PencilWash review" data-dimension25=""><strong>Dyson PencilWash review</strong></a></p></div><div class="product"><a data-dimension112="7403bc9c-d84f-11f1-a5bb-07341bc72238" data-action="Deal Block" data-label="Read our full Bissell CrossWave HydroScrub review" data-dimension48="Read our full Bissell CrossWave HydroScrub review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="CLGDzsfyNfUeHKcYwBXt3c" name="image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/CLGDzsfyNfUeHKcYwBXt3c-1920-80.png" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Bissell CrossWave HydroScrub</strong></p><p>If you want a full wet and dry cleaner, check out Bissell. The CrossWave HydroScrub isn't small, but it's a great all-rounder and about the same price as the W1 PencilWash.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/vacuums/bissell-crosswave-hydroscrub-review" data-dimension112="7403bc9c-d84f-11f1-a5bb-07341bc72238" data-action="Deal Block" data-label="Read our full Bissell CrossWave HydroScrub review" data-dimension48="Read our full Bissell CrossWave HydroScrub review" data-dimension25=""><strong>Bissell CrossWave HydroScrub review</strong></a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-dyson-w1-pencilwash"><span>How I tested the Dyson W1 PencilWash</span></h2><p>I tested the Dyson W1 PencilWash on sealed laminate flooring, using Dyson 02 Probiotic Hard Floor Cleaning Solution and tap water. I used it on common household stains including dried juice, dried toothpaste, ketchup, flour, and human hair.</p><p>I emptied the floor head cassette, and cleaned the tank, comb, and microfiber roller using plain water.</p><p>I fully charged the W1, then used it to clean the floors, moving it backwards and forwards as in normal use, and timed how long it took for the battery to run flat.</p><p><em>First reviewed November 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Legend of Zelda: Ocarina of Time Switch 2 review: the Hero of Time gets a new lease of life ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nintendo’s decision to remake <em>The Legend of Zelda: Ocarina of Time </em>for the Switch 2 in celebration of the franchise's 40th anniversary was hotly anticipated, if not a little anxiety-inducing. Like legions of fans, I share fond memories of inventive puzzles that turned hardware limitations into creative opportunities, revolutionary mechanics that defined 3D action-adventure for years to come, and, of course, one of the most beautiful and well-written storylines in the video game hall of fame. </p><div  class="fancy-box"><div class="fancy_box-title">Review info</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Platform reviewed: </strong>Nintendo Switch 2<br /><strong>Available on: </strong>Nintendo Switch 2 <br /><strong>Release date: </strong>November 5, 2026</p></div></div><p>28 years on from the release of the original <em>Ocarina of Time</em>, a lot has changed in the world of gaming. Hardware limitations, even on the Switch 2, are far fewer than ever before, and there’s a game for everyone.</p><p>So in a world that now includes everything from niche interests in <em>PowerWash Simulator</em> to AAA giants like <em>GTA 6</em> to Fortnite’s bizarre multiverse of pop stars and anime icons, can a remake of a decades-old game that now feels relatively simplistic find its footing, or even be one of the <a href="https://www.techradar.com/gaming/nintendo/best-nintendo-switch-2-games">best Nintendo Switch 2 games</a> going?</p><h2 id="do-you-see-that-man-with-the-evil-eyes">Do you see that man with the evil eyes?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qs9BD49oSTYEDZvgvVvcjN" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/Qs9BD49oSTYEDZvgvVvcjN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>It’s natural that the phrase ‘don’t mess with perfection’ springs to mind when thinking about Metacritic’s best-ever-scoring video game, but a remake without meaningful changes is always going to feel like a nostalgia-baiting cash grab. </p><p>Flying in the face of that narrative, <em>Ocarina of Time</em>’s remake proves classic Zelda still has a place in current gaming, bringing meaningful additions and alterations across the board from level design to voice acting and even some juicy new lore while still staying faithful to the source material.</p><p>All areas of Hyrule have been revisited and retouched, with few drastic changes but plenty of improvements. A rich tapestry of flora and fauna, thick fog swirling at Link’s feet, organic terrain, and detailed furnishings bring every location to life. </p><p>The storybook visual direction of the remake comes together beautifully with this new detailed world, making its own mark on the Zelda franchise. Its vivid style might not be to everyone’s taste, but it’s certainly immersive, as is the rich, re-orchestrated soundtrack. </p><div  class="fancy-box"><div class="fancy_box-title">Best bit</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6ppBLNFpZkEhsGNcZ2VXwN" name="The Legend of Zelda: Ocarina of Time remake" caption="" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/6ppBLNFpZkEhsGNcZ2VXwN-1920-80.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Walking into Zora’s Domain post-Water Temple and seeing it restored to its original glory felt like such a full-circle moment, but my favorite interaction I don’t remember from the original game was approaching King Zora from the side repeatedly and being granted special ‘standing close to the King’ privileges. </strong></p></div></div><p>It runs beautifully too, with its buttery-smooth locked 60fps and no visible lag in my experience. While loading screens are still in place these barely create any friction, controls are snappy and it’s bug-free barring one occasion where I noticed a texture glitch in a waterfall. </p><p>The world is more alive in more ways than one. I do miss the mad panic of racing to Hyrule Castle gates before night falls in the original, but thanks to the constant day-night cycles within towns, you now see a lot more of the lives of non-player characters (NPCs).</p><p>While still fairly two-dimensional, the supporting cast are full of character, especially so thanks to a new feature of the Mask of Truth you earn through the Happy Mask Salesman quest line. Now, when wearing the mask, you can find the hidden truths behind folks around Hyrule; the Dancing Couple dropped a bombshell I won’t spoil for you, but it adds whole new dimensions to some of the people Link encounters on his quest. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5d2VJG5GW7g89kH6dUSTAQ-1920-80.jpg" alt="The Legend of Zelda: Ocarina of Time remake" /><figcaption><small role="credit">Nintendo</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WqumNYiYTGqQfDeyeMUf9Q-1920-80.jpg" alt="The Legend of Zelda: Ocarina of Time remake" /><figcaption><small role="credit">Nintendo</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Da53KHHnKARKeydbUEGZAQ-1920-80.jpg" alt="The Legend of Zelda: Ocarina of Time remake" /><figcaption><small role="credit">Nintendo</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/i6se467bTjBSEJZCUkEAAQ-1920-80.jpg" alt="The Legend of Zelda: Ocarina of Time remake" /><figcaption><small role="credit">Nintendo</small></figcaption></figure></figure><p>You’re encouraged to explore the world and its secrets with new mechanics like Fairy Messages (which replace some of Navi’s hints and reward you with Rupees, Mana, or Hearts, generally) as well as old favorites like Golden Skulltulas and Fairy Fountains, but most of all I found myself frequently looking for viewpoints from which to take in the world just for the sake of it. Quite a lot of the collectibles, grottos, and boulders are in the same or very similar places, but if you don’t have a photographic memory from the original, there’s plenty of fun to be had in rediscovering Hyrule. </p><p>As I expected from my preview, some of the vocal performances did win me over by the end of the game, and Matt Mercer reprising his role as Ganondorf absolutely nailed it (of course). Others, unfortunately, missed the mark; Navi’s original sound bites were so iconic and plucky, but it’s a fairly flat performance here, by comparison. </p><p>Even then, every cutscene was a delight. I loved some of the extended dialogue and how it adds depth and personality to the world, with more beautiful cinematography than ever. I laughed, I cried, I paused and googled if some small line was a reference to a deep lore video I watched the other weekend; the narrative is richer than ever, and it celebrates the original game in all the right ways. </p><h2 id="can-hyrule-39-s-destiny-really-depend-on-such-a-lazy-boy">Can Hyrule's destiny really depend on such a lazy boy?!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s847VMmA8RZtwVtykmzeAQ" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/s847VMmA8RZtwVtykmzeAQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>Especially if you’ve played the original any time recently, there’s an immediate sense of liberation when you load into Kokiri Forest for the first time; even having played the same area at a preview event several weeks before receiving my review code, I couldn’t resist the urge to jump, dash, and swing around the camera like a lunatic in celebration of unhindered freedom to move. </p><p>Combat also feels more fluid and fun. While there’s still a fair amount of waiting around for an opening, gone are Link’s sluggish movements, painstaking in-menu item swapping, and cumbersome crowd control. I love small details like how the camera focus shifts to blur the background when you target enemies, which also means other baddies politely waiting their turn to attack you don’t stick out as much. </p><p>Overall, it’s great; jumping and dodging around, quickly switching between weapons with the right trigger, and aiming projectiles with the gyroscope improve pacing massively.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="foY7HDFATkVinQXv3YFydN" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/foY7HDFATkVinQXv3YFydN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>That pacing improvement carries over to Temple design too, none more so than the dreaded Water Temple now that you can quick-equip Iron Boots with the D-pad. Some temples see more significant overhauls than others, but overall rooms and puzzles have been shrewdly redesigned, with a few new additions or expanded segments like in Hyrule Castle’s garden maze, which now also leads Link through the castle kitchens.</p><p>It’s often in the smallest adjustments that <em>Ocarina of Time’s</em> remake is at its best; for instance, changes to the environment around you in combat that make more narrative or gameplay sense. Some are subtle; I noticed one room in the Fire Temple especially with more dynamic platform design for Lizalfos to hop around, and in locations like the Forest Temple where new obstacles like acid pits replace empty pits in the floor. </p><p>I didn’t clock any fundamental changes to enemies, but the scale and range have been adapted for enemies like Iron Knuckles as well as some bosses like Volvagia. This, paired with tweaks to the attack strings, a few new moves, and some with higher stakes, ensures Link’s lighter feet are still challenged in combat. </p><h2 id="when-you-fight-the-real-me-it-won-39-t-be-so-easy">When you fight the real me, it won't be so easy!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JUxoSBSMQrExN9xyGLtCnN" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/JUxoSBSMQrExN9xyGLtCnN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>That being said, I wouldn’t say difficulty is the <em>Ocarina of Time</em> remake’s strength. I’ll caveat heavily with the reminder that this game is as much for kids as it is for us aging nostalgia-chasers, but given I only ran out of health a handful of times, mostly by making silly mistakes or getting distracted, it does feel like <em>Ocarina of Time</em> has moved one step closer to being nerfed. </p><p>It’s a similar story with items — I didn’t have to refill any supplies more than three, maybe four times in my entire save. A new item in the game, the Business Deku Seed, summons a shopkeeper with his stock of supplies, including potions. It’s one of the only new features I find to be a bit of a headscratcher, making the game easier still.</p><p>Add to that the golden webs that hint at the location of overworld Golden Skulltulas, more obvious traps and visual cues for important locations, doors, and boulders, and there were few times I was particularly mentally challenged, either.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SgvMhnYijtoTCYCHR6QGAQ" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/SgvMhnYijtoTCYCHR6QGAQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Golden spiderwebs now indicate the locations of Golden Skulltulas, which removes some of the challenge in finding them. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>Having rolled credits, I was therefore doubly disappointed to learn Master Quest isn’t offered to up the ante a little. I’m hoping this comes at a later date, and I’m <em>really</em> hoping it’s not DLC, because with a little more challenge, my only real complaint about the game would be quickly remedied.</p><p>It’s not enough to score the game down; it’s ticking all of the obligatory boxes for a good remake, and I loved every second of it. Still, I can’t help but feel just a tinge of disappointment that most changes to the game are limited to optimisations and err on the side of “safe”. The original <em>Ocarina of Time </em>was great, in part, for how it took the limitations of contemporary game design and created some of its best mechanics to work around them in a creative way; without that challenge, the remake at times feels just a little unremarkable. </p><p>Still, this one niggle didn’t impact my personal enjoyment of the game nor negate the many, many strengths it brings to the table, and <em>The Legend of Zelda: Ocarina of Time</em> remake feels like exactly the game that the developers would have made in the late 90s were it possible on contemporary hardware. </p><p>From the first time I played the game at my dad’s knee, I fell in love with the world of Hyrule, and it was just as impactful for me in its third iteration as it was in its first. Whether you’re an adult or a child, when you boot up the remake, it’s not a game you’ll forget in a hurry. </p><h2 id="should-you-play-the-legend-of-zelda-ocarina-of-time-remake">Should you play The Legend of Zelda: Ocarina of Time remake?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="V5LbZuaLtMQ4ooxzZ8zECQ" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/V5LbZuaLtMQ4ooxzZ8zECQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><h2 id="play-it-if-2">Play it if...</h2><div class="product"><p><strong>You’re a big fan of the original</strong></p><p>At its core, this is a faithful and loving remake of the original <em>Ocarina of Time</em>, and as such, a vast majority of Zelda fans will appreciate the efforts to reinvigorate the game for Zelda’s 40th Anniversary. </p></div><div class="product"><p><strong>You’ve never played a classic Zelda game</strong></p><p>A lot of newer fans to the series may have only played the more recent open-world titles or dabbled in ports of older games; this remake offers new fans the chance to experience a huge part of <em>The Legend of Zelda</em>’s history without sacrificing the comforts of modern gaming.</p></div><div class="product"><p><strong>You love games with a story</strong></p><p>One of <em>Ocarina of Time</em>’s strengths has always been in the beautiful story it weaves, and it’s never stronger than in the remake. With tighter translations, expanded dialogue and new cutscenes, it keeps the heart of what made the original great but adds plenty. </p></div><div class="product"><p><strong>You love puzzle games</strong></p><p><em>Ocarina of Time </em>has some great head scratchers and inventive mechanics, and keeps adding new solutions into the mix right up until the endgame. </p></div><h2 id="don-39-t-play-it-if">Don't play it if...</h2><div class="product"><p><strong>You want a challenge</strong></p><p>Zelda games are never incredibly difficult beyond some of the puzzle mechanics, but <em>Ocarina of Time</em>’s remake feels fun-for-all-ages. That’s no bad thing; I first enjoyed the game as a pre-schooler, but you might want to manage expectations as an adult. </p></div><h2 id="accessibility-features-2">Accessibility features</h2><p>Within the game’s settings, you can change the camera controls, speed, toggle motion-control aiming, and choose between one-click or press-and-hold targeting. </p><p>You can swap the jump controls, use one-handed ocarina-playing controls, toggle subtitles, and add speaker-name display. Accessibility is, as I’ve come to expect from Nintendo, a weak point, but there are a few more customization options here than I’ve seen in other titles.</p><h2 id="how-i-reviewed-the-legend-of-zelda-ocarina-of-time-remake">How I reviewed The Legend of Zelda: Ocarina of Time remake</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sciJ8xaDPFgzpm2KJpiRUQ" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/sciJ8xaDPFgzpm2KJpiRUQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>I’ve completed the main storyline in my 25-hour save, as well as a vast majority of side quests and secret content. I played mostly docked to enjoy the sprawling scenery, but I did try handheld too, comparing my overall experience with the original as well as more modern action-adventure games, including Zelda titles like the original <em>Ocarina of Time</em> and modern entries like <a href="https://www.techradar.com/reviews/the-legend-of-zelda-tears-of-the-kingdom-review"><em>Tears of the Kingdom</em></a><em>,</em> as well as titles like <em>Outer Wilds, Tunic,</em> and more.</p><p>I played on the standard <a href="https://www.techradar.com/gaming/nintendo/nintendo-switch-2-review">Nintendo Switch 2</a>, listening to the gorgeously re-orchestrated soundtrack through my <a href="https://www.techradar.com/gaming/corsair-void-v2-max-wireless-headset-review">Corsair Void Max Wireless v2</a> headset and through the Switch 2’s speakers.</p><p>More generally, I’ve covered a huge array of games here at TechRadar, where I serve as Head of Video and previously as Managing Editor. I’ve reviewed a number of action-adventure and Switch 2 titles.</p><p><em>First reviewed November 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/gaming/the-legend-of-zelda-ocarina-of-time-review</link>
                                                                            <description>
                            <![CDATA[ The Legend of Zelda: Ocarina of Time remake is the ultimate celebration of Nintendo’s 40-year franchise milestone, and ticks almost every box as a remake. It’s light-touch, but some of these subtle changes beautifully render Link’s adventure anew. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QKikrEjR2LTWyHoAiJtw2A</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/aGNVZAGqBLZbo6gtLUdBAQ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 11:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 04 Nov 2026 22:16:22 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming]]></category>
                                                                                                <author><![CDATA[ josephine.watson@futurenet.com (Josephine Watson) ]]></author>                    <dc:creator><![CDATA[ Josephine Watson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HvpGKcNNvrNZunUL6mqd8c-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Josephine Watson is TechRadar&amp;#39;s Head of Video, and an award-winning (PPA 30 under 30 2024), NCTJ-trained journalist. Having previously written on a variety of topics, from lifestyle to pop culture to gaming and even the energy industry, she joined TechRadar in 2021 to support general site management. Now, she leads the video and social team. She is based in London.&lt;/p&gt;&lt;p&gt;Growing up living and breathing technology, Josephine was part of the first wave of internet-literate young people and developed a love of all things online content, especially when it comes to gaming, pop culture, or science. She is a huge advocate for internet safety and education, appearing on Channel 4 News in her teenage years to challenge reports of rampant online dangers and encourage wider education on internet safety and protocols. Throughout her career, she has also made a point of using her position to fight for progression in the treatment of diversity and inclusion, mental health, and neurodiversity in corporate settings. Josephine is responsible for TechRadar&amp;#39;s recent push into sustainability-related content, as well as starring in the &lt;a href=&quot;https://www.youtube.com/@techradar&quot;&gt;TechRadar podcast&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Josephine received her Bachelor of Arts in English Literature from Queen Mary, University of London, having spent a year abroad studying at Hunter College in New York. She has also completed a L3 People Leadership qualification as well as a L7 Senior Journalism apprenticeship through the University of Sunderland. &lt;/p&gt;&lt;p&gt;In her spare time, you&amp;#39;ll find Josephine fiddling with smart home devices, playing whichever Nintendo game she&amp;#39;s recently acquired, developing an obsession over some new creative hobby she&amp;#39;ll drop in a few months or watching Disney movies. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/aGNVZAGqBLZbo6gtLUdBAQ-1920-80.jpg">
                                                            <media:credit><![CDATA[Nintendo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Legend of Zelda: Ocarina of Time remake]]></media:description>                                                            <media:text><![CDATA[The Legend of Zelda: Ocarina of Time remake]]></media:text>
                                <media:title type="plain"><![CDATA[The Legend of Zelda: Ocarina of Time remake]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/aGNVZAGqBLZbo6gtLUdBAQ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nintendo’s decision to remake <em>The Legend of Zelda: Ocarina of Time </em>for the Switch 2 in celebration of the franchise's 40th anniversary was hotly anticipated, if not a little anxiety-inducing. Like legions of fans, I share fond memories of inventive puzzles that turned hardware limitations into creative opportunities, revolutionary mechanics that defined 3D action-adventure for years to come, and, of course, one of the most beautiful and well-written storylines in the video game hall of fame. </p><div  class="fancy-box"><div class="fancy_box-title">Review info</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Platform reviewed: </strong>Nintendo Switch 2<br /><strong>Available on: </strong>Nintendo Switch 2 <br /><strong>Release date: </strong>November 5, 2026</p></div></div><p>28 years on from the release of the original <em>Ocarina of Time</em>, a lot has changed in the world of gaming. Hardware limitations, even on the Switch 2, are far fewer than ever before, and there’s a game for everyone.</p><p>So in a world that now includes everything from niche interests in <em>PowerWash Simulator</em> to AAA giants like <em>GTA 6</em> to Fortnite’s bizarre multiverse of pop stars and anime icons, can a remake of a decades-old game that now feels relatively simplistic find its footing, or even be one of the <a href="https://www.techradar.com/gaming/nintendo/best-nintendo-switch-2-games">best Nintendo Switch 2 games</a> going?</p><h2 id="do-you-see-that-man-with-the-evil-eyes">Do you see that man with the evil eyes?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qs9BD49oSTYEDZvgvVvcjN" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/Qs9BD49oSTYEDZvgvVvcjN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>It’s natural that the phrase ‘don’t mess with perfection’ springs to mind when thinking about Metacritic’s best-ever-scoring video game, but a remake without meaningful changes is always going to feel like a nostalgia-baiting cash grab. </p><p>Flying in the face of that narrative, <em>Ocarina of Time</em>’s remake proves classic Zelda still has a place in current gaming, bringing meaningful additions and alterations across the board from level design to voice acting and even some juicy new lore while still staying faithful to the source material.</p><p>All areas of Hyrule have been revisited and retouched, with few drastic changes but plenty of improvements. A rich tapestry of flora and fauna, thick fog swirling at Link’s feet, organic terrain, and detailed furnishings bring every location to life. </p><p>The storybook visual direction of the remake comes together beautifully with this new detailed world, making its own mark on the Zelda franchise. Its vivid style might not be to everyone’s taste, but it’s certainly immersive, as is the rich, re-orchestrated soundtrack. </p><div  class="fancy-box"><div class="fancy_box-title">Best bit</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6ppBLNFpZkEhsGNcZ2VXwN" name="The Legend of Zelda: Ocarina of Time remake" caption="" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/6ppBLNFpZkEhsGNcZ2VXwN-1920-80.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Walking into Zora’s Domain post-Water Temple and seeing it restored to its original glory felt like such a full-circle moment, but my favorite interaction I don’t remember from the original game was approaching King Zora from the side repeatedly and being granted special ‘standing close to the King’ privileges. </strong></p></div></div><p>It runs beautifully too, with its buttery-smooth locked 60fps and no visible lag in my experience. While loading screens are still in place these barely create any friction, controls are snappy and it’s bug-free barring one occasion where I noticed a texture glitch in a waterfall. </p><p>The world is more alive in more ways than one. I do miss the mad panic of racing to Hyrule Castle gates before night falls in the original, but thanks to the constant day-night cycles within towns, you now see a lot more of the lives of non-player characters (NPCs).</p><p>While still fairly two-dimensional, the supporting cast are full of character, especially so thanks to a new feature of the Mask of Truth you earn through the Happy Mask Salesman quest line. Now, when wearing the mask, you can find the hidden truths behind folks around Hyrule; the Dancing Couple dropped a bombshell I won’t spoil for you, but it adds whole new dimensions to some of the people Link encounters on his quest. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5d2VJG5GW7g89kH6dUSTAQ-1920-80.jpg" alt="The Legend of Zelda: Ocarina of Time remake" /><figcaption><small role="credit">Nintendo</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WqumNYiYTGqQfDeyeMUf9Q-1920-80.jpg" alt="The Legend of Zelda: Ocarina of Time remake" /><figcaption><small role="credit">Nintendo</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Da53KHHnKARKeydbUEGZAQ-1920-80.jpg" alt="The Legend of Zelda: Ocarina of Time remake" /><figcaption><small role="credit">Nintendo</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/i6se467bTjBSEJZCUkEAAQ-1920-80.jpg" alt="The Legend of Zelda: Ocarina of Time remake" /><figcaption><small role="credit">Nintendo</small></figcaption></figure></figure><p>You’re encouraged to explore the world and its secrets with new mechanics like Fairy Messages (which replace some of Navi’s hints and reward you with Rupees, Mana, or Hearts, generally) as well as old favorites like Golden Skulltulas and Fairy Fountains, but most of all I found myself frequently looking for viewpoints from which to take in the world just for the sake of it. Quite a lot of the collectibles, grottos, and boulders are in the same or very similar places, but if you don’t have a photographic memory from the original, there’s plenty of fun to be had in rediscovering Hyrule. </p><p>As I expected from my preview, some of the vocal performances did win me over by the end of the game, and Matt Mercer reprising his role as Ganondorf absolutely nailed it (of course). Others, unfortunately, missed the mark; Navi’s original sound bites were so iconic and plucky, but it’s a fairly flat performance here, by comparison. </p><p>Even then, every cutscene was a delight. I loved some of the extended dialogue and how it adds depth and personality to the world, with more beautiful cinematography than ever. I laughed, I cried, I paused and googled if some small line was a reference to a deep lore video I watched the other weekend; the narrative is richer than ever, and it celebrates the original game in all the right ways. </p><h2 id="can-hyrule-39-s-destiny-really-depend-on-such-a-lazy-boy">Can Hyrule's destiny really depend on such a lazy boy?!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s847VMmA8RZtwVtykmzeAQ" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/s847VMmA8RZtwVtykmzeAQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>Especially if you’ve played the original any time recently, there’s an immediate sense of liberation when you load into Kokiri Forest for the first time; even having played the same area at a preview event several weeks before receiving my review code, I couldn’t resist the urge to jump, dash, and swing around the camera like a lunatic in celebration of unhindered freedom to move. </p><p>Combat also feels more fluid and fun. While there’s still a fair amount of waiting around for an opening, gone are Link’s sluggish movements, painstaking in-menu item swapping, and cumbersome crowd control. I love small details like how the camera focus shifts to blur the background when you target enemies, which also means other baddies politely waiting their turn to attack you don’t stick out as much. </p><p>Overall, it’s great; jumping and dodging around, quickly switching between weapons with the right trigger, and aiming projectiles with the gyroscope improve pacing massively.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="foY7HDFATkVinQXv3YFydN" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/foY7HDFATkVinQXv3YFydN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>That pacing improvement carries over to Temple design too, none more so than the dreaded Water Temple now that you can quick-equip Iron Boots with the D-pad. Some temples see more significant overhauls than others, but overall rooms and puzzles have been shrewdly redesigned, with a few new additions or expanded segments like in Hyrule Castle’s garden maze, which now also leads Link through the castle kitchens.</p><p>It’s often in the smallest adjustments that <em>Ocarina of Time’s</em> remake is at its best; for instance, changes to the environment around you in combat that make more narrative or gameplay sense. Some are subtle; I noticed one room in the Fire Temple especially with more dynamic platform design for Lizalfos to hop around, and in locations like the Forest Temple where new obstacles like acid pits replace empty pits in the floor. </p><p>I didn’t clock any fundamental changes to enemies, but the scale and range have been adapted for enemies like Iron Knuckles as well as some bosses like Volvagia. This, paired with tweaks to the attack strings, a few new moves, and some with higher stakes, ensures Link’s lighter feet are still challenged in combat. </p><h2 id="when-you-fight-the-real-me-it-won-39-t-be-so-easy">When you fight the real me, it won't be so easy!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JUxoSBSMQrExN9xyGLtCnN" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/JUxoSBSMQrExN9xyGLtCnN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>That being said, I wouldn’t say difficulty is the <em>Ocarina of Time</em> remake’s strength. I’ll caveat heavily with the reminder that this game is as much for kids as it is for us aging nostalgia-chasers, but given I only ran out of health a handful of times, mostly by making silly mistakes or getting distracted, it does feel like <em>Ocarina of Time</em> has moved one step closer to being nerfed. </p><p>It’s a similar story with items — I didn’t have to refill any supplies more than three, maybe four times in my entire save. A new item in the game, the Business Deku Seed, summons a shopkeeper with his stock of supplies, including potions. It’s one of the only new features I find to be a bit of a headscratcher, making the game easier still.</p><p>Add to that the golden webs that hint at the location of overworld Golden Skulltulas, more obvious traps and visual cues for important locations, doors, and boulders, and there were few times I was particularly mentally challenged, either.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SgvMhnYijtoTCYCHR6QGAQ" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/SgvMhnYijtoTCYCHR6QGAQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Golden spiderwebs now indicate the locations of Golden Skulltulas, which removes some of the challenge in finding them. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>Having rolled credits, I was therefore doubly disappointed to learn Master Quest isn’t offered to up the ante a little. I’m hoping this comes at a later date, and I’m <em>really</em> hoping it’s not DLC, because with a little more challenge, my only real complaint about the game would be quickly remedied.</p><p>It’s not enough to score the game down; it’s ticking all of the obligatory boxes for a good remake, and I loved every second of it. Still, I can’t help but feel just a tinge of disappointment that most changes to the game are limited to optimisations and err on the side of “safe”. The original <em>Ocarina of Time </em>was great, in part, for how it took the limitations of contemporary game design and created some of its best mechanics to work around them in a creative way; without that challenge, the remake at times feels just a little unremarkable. </p><p>Still, this one niggle didn’t impact my personal enjoyment of the game nor negate the many, many strengths it brings to the table, and <em>The Legend of Zelda: Ocarina of Time</em> remake feels like exactly the game that the developers would have made in the late 90s were it possible on contemporary hardware. </p><p>From the first time I played the game at my dad’s knee, I fell in love with the world of Hyrule, and it was just as impactful for me in its third iteration as it was in its first. Whether you’re an adult or a child, when you boot up the remake, it’s not a game you’ll forget in a hurry. </p><h2 id="should-you-play-the-legend-of-zelda-ocarina-of-time-remake">Should you play The Legend of Zelda: Ocarina of Time remake?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="V5LbZuaLtMQ4ooxzZ8zECQ" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/V5LbZuaLtMQ4ooxzZ8zECQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><h2 id="play-it-if-2">Play it if...</h2><div class="product"><p><strong>You’re a big fan of the original</strong></p><p>At its core, this is a faithful and loving remake of the original <em>Ocarina of Time</em>, and as such, a vast majority of Zelda fans will appreciate the efforts to reinvigorate the game for Zelda’s 40th Anniversary. </p></div><div class="product"><p><strong>You’ve never played a classic Zelda game</strong></p><p>A lot of newer fans to the series may have only played the more recent open-world titles or dabbled in ports of older games; this remake offers new fans the chance to experience a huge part of <em>The Legend of Zelda</em>’s history without sacrificing the comforts of modern gaming.</p></div><div class="product"><p><strong>You love games with a story</strong></p><p>One of <em>Ocarina of Time</em>’s strengths has always been in the beautiful story it weaves, and it’s never stronger than in the remake. With tighter translations, expanded dialogue and new cutscenes, it keeps the heart of what made the original great but adds plenty. </p></div><div class="product"><p><strong>You love puzzle games</strong></p><p><em>Ocarina of Time </em>has some great head scratchers and inventive mechanics, and keeps adding new solutions into the mix right up until the endgame. </p></div><h2 id="don-39-t-play-it-if">Don't play it if...</h2><div class="product"><p><strong>You want a challenge</strong></p><p>Zelda games are never incredibly difficult beyond some of the puzzle mechanics, but <em>Ocarina of Time</em>’s remake feels fun-for-all-ages. That’s no bad thing; I first enjoyed the game as a pre-schooler, but you might want to manage expectations as an adult. </p></div><h2 id="accessibility-features-2">Accessibility features</h2><p>Within the game’s settings, you can change the camera controls, speed, toggle motion-control aiming, and choose between one-click or press-and-hold targeting. </p><p>You can swap the jump controls, use one-handed ocarina-playing controls, toggle subtitles, and add speaker-name display. Accessibility is, as I’ve come to expect from Nintendo, a weak point, but there are a few more customization options here than I’ve seen in other titles.</p><h2 id="how-i-reviewed-the-legend-of-zelda-ocarina-of-time-remake">How I reviewed The Legend of Zelda: Ocarina of Time remake</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sciJ8xaDPFgzpm2KJpiRUQ" name="The Legend of Zelda: Ocarina of Time remake" alt="The Legend of Zelda: Ocarina of Time remake" src="https://cdn.mos.cms.futurecdn.net/sciJ8xaDPFgzpm2KJpiRUQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nintendo)</span></figcaption></figure><p>I’ve completed the main storyline in my 25-hour save, as well as a vast majority of side quests and secret content. I played mostly docked to enjoy the sprawling scenery, but I did try handheld too, comparing my overall experience with the original as well as more modern action-adventure games, including Zelda titles like the original <em>Ocarina of Time</em> and modern entries like <a href="https://www.techradar.com/reviews/the-legend-of-zelda-tears-of-the-kingdom-review"><em>Tears of the Kingdom</em></a><em>,</em> as well as titles like <em>Outer Wilds, Tunic,</em> and more.</p><p>I played on the standard <a href="https://www.techradar.com/gaming/nintendo/nintendo-switch-2-review">Nintendo Switch 2</a>, listening to the gorgeously re-orchestrated soundtrack through my <a href="https://www.techradar.com/gaming/corsair-void-v2-max-wireless-headset-review">Corsair Void Max Wireless v2</a> headset and through the Switch 2’s speakers.</p><p>More generally, I’ve covered a huge array of games here at TechRadar, where I serve as Head of Video and previously as Managing Editor. I’ve reviewed a number of action-adventure and Switch 2 titles.</p><p><em>First reviewed November 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ GMKtec EVO-X5 Pro mini PC review: I tested large LLMs on this machine and the results and speed were impressive ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-gmktec-evo-x5-pro-30-second-review"><span>GMKtec EVO-X5 Pro: 30-second review</span></h2><p>The EVO-X5 packs in the latest Strix Halo CPU, and while the updates to the specifications of the Ryzen AI Max+ PRO 495 processor over the Ryzen AI Max+ 395 may look modest, when you give it the additional boost of 196GB of unified memory and the internal space for up to 24TB of storage, you suddenly have a machine whose abilities far exceed the superb EVO-X3 I reviewed recently.</p><p>Like so many of these small machines, it’s hard to believe the power it contains when it arrives. The box is small and relatively discreet, a departure from the large, powerful gaming and AI workstations I usually associate with its computing power. Part of the reason for that size reduction is that this is the processing hub, and while the AMD Radeon 8065S graphics will see you through a decent bit of gaming, if you want that full GPU power alongside what’s on offer with the CPU, you’ll need to break out to an external GPU option.</p><p>This distinction makes the machine's intended use clear. You can use it on its own as a powerful workstation, handling everything from office day tasks to video and image editing, and even 3D work. You can also rack it alongside additional EVO-X5 Pros to build an almighty AI personal data centre, with features such as the OOB, which lets you access and control the machine even if it’s mid-blue-screen or terminal crash. However, professional IT skills will inevitably also be needed.</p><p>On a smaller scale, and in the way that I’ve checked this machine out in this review, is to check the day-to-day function first. Is this $5000 machine good enough to run Microsoft Windows, Office, Adobe Creative Suite, edit images, video, and audio, and all the base functions a powerful machine in the office or studio needs to do, especially at that price?</p><p>But to go deeper: if this machine is going to cost almost double today’s pretty decent workstations, why should I pay all that extra money for a machine like this? Am I just paying for the latest AI-enhanced CPUs, or is there more to it? Can the machine's capabilities offset that cost?</p><p>To put it to the test, I’ve run through all the usual benchmarks and real-world tests, but after testing a good volume of AI headline-leading mini PCs, I want to see if it can take on a little more. </p><p>For instance, can it not only code a straight site, but also build a site from designs? What is the image-generation capability, and can it really run a 300B LLM without stalling? What I’ve noticed with some smaller mini PCs recently is that while they meet the specs and perform impressively, most hit their limits pretty quickly. However, with far more unified RAM than most, this machine has plenty of headroom.</p><p>The main test for me here is: can it effectively edit video in DaVinci Resolve? While my workstation can do this, it takes time, and a couple of the machines I’ve looked at recently have hit their limits with that kind of processing.</p><p>This looks to be a formidable machine among the <a href="https://www.techradar.com/best/mini-pcs" target="_blank">best mini PCs</a> I've reviewed, and one that will suit many looking into the use of AI in their day-to-day workflows. But all this power comes at a huge cost, and in balance, is this machine worth that price?</p><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-price-and-availability"><span>GMKtec EVO-X5 Pro: Price and availability</span></h2><ul><li><strong>How much does it cost?  </strong>From £5,299 / $6,799</li><li><strong>When is it out? </strong>Available now</li><li><strong>Where can you get it? </strong>Directly from <a href="https://www.gmktec.com/products/gmktec-evo-x5-pro-amd-ryzen-ai-max-pro-495-ai-mini-pc" target="_blank">GMKtec</a> or <a href="" target="_blank">Amazon</a></li></ul><p>At present, the machine has just gone on sale and is <a href="https://www.gmktec.com/products/gmktec-evo-x5-pro-amd-ryzen-ai-max-pro-495-ai-mini-pc" target="_blank">available for $6799 from GMKtec in the US</a>, and <a href="https://www.gmktec.uk/products/gmktec-evo-x5-pro-ai-max-pro-495-mini-pc" target="_blank">£5,299 from the UK website</a>.</p><p>The machine is available in either a 2TB or 4TB version, with a $400 /  £300 increase for the extra storage.</p><ul><li><strong>Value:</strong> 4 / 5</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="t79NxP2W4A8xamqUK5PMUN" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/t79NxP2W4A8xamqUK5PMUN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-specs"><span>GMKtec EVO-X5 Pro: Specs</span></h2><p><strong>CPU:</strong> AMD Ryzen AI Max+ PRO 495, 16 cores/32 threads</p><p><strong>GPU:</strong> AMD Radeon 8065S, 40 RDNA 3.5 compute units</p><p><strong>NPU:</strong> AMD XDNA 2, 55 TOPS</p><p><strong>RAM:</strong> 192GB LPDDR5X-8533 unified memory, non-upgradeable</p><p><strong>Storage:</strong> 2TB or 4TB PCIe 4.0 M.2 2280 SSD, three slots, up to 24TB total</p><p><strong>Front Ports:</strong> 2 x USB 3.2 Gen 2, 2 x USB4, 3.5mm audio, P-Mode button, CMOS reset</p><p><strong>Rear Ports:</strong> HDMI 2.1, 2 x USB4 v2 80Gbps, 2 x USB 2.0, 2 x 10GbE RJ-45 DASH, 3.5mm audio</p><p><strong>Wireless:</strong> Wi-Fi 7</p><p><strong>VESA Mount:</strong> No</p><p><strong>Dimensions:</strong> 221 x 80 x 195mm</p><p><strong>Weight:</strong> 2.5kg</p><p><strong>Power:</strong> 54W–120W selectable power modes, external power adapter</p><p><strong>Operating System:</strong> Windows 11 Pro</p><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-design"><span>GMKtec EVO-X5 Pro: Design</span></h2><p>The mini PC is getting bigger; although still compact, it sits somewhere between a small tower desktop and the more traditional mini PC size. The styling is also spot on, with the ability to lay the machine flat or upright depending on your desk space. It’s also nicely designed with an understated all-metal black finish, though GMKtec has included its usual feature: a green power button. This button features fingerprint recognition.</p><p>The size, while not large, comes in at 221 × 80 × 195 mm, and in this review it sat neatly beside the monitor in a vertical position, taking up little desktop space. The weight at 2.5kg is substantial for a mini PC, but still far less than most workstations, so in a studio space or if you do need to take a machine out on site, this is a great option.</p><p>The build quality is what you would expect at this price, with the all-metal black finish giving it a high-quality look and feel. Aesthetically, this is one of the best-looking mini PCs I’ve seen, while remaining quite understated. Another design point: while this machine can be used on its own, it's also designed to work alongside others, so its size and weight make it easy to connect to additional EVO-X5s if that’s what you or your business needs.</p><p>The front layout is minimalistic, with a few essentials across the front. These include the P-Mode button, CMOS reset, two USB 3.2 Gen 2 ports, two USB4 ports, a 3.5mm headphone jack, and the power button. The P-Mode button is a physical button for switching between the power modes, which include silent, balanced and performance, with each adjusting the amount of power that the machine draws from 54W up to 120W, and as I went through the benchmark tests, I realised just how much difference this P-Mode button can make.</p><p>That power draw helps explain the power brick that comes with the mini PC, which isn't much smaller than those of many standard mini PCs, but, as ever, can be tucked out of sight behind the machine.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wu7LXYaPT75LQGYdx8d8KN" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/wu7LXYaPT75LQGYdx8d8KN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>On the rear of the machine, there are plenty of ports, although again, as I’ve seen with these premium machines, the volume of connections is well balanced, with plenty of space given. Options include a 3.5mm audio out, HDMI 2.1, two USB4 v2, two USB 2.0, two 10GbE RJ45 DASH ports, power in and a Kensington lock slot. What interests me is that both RJ45 ports are 10GbE, enabling ultra-fast network speeds if your network can support them.</p><p>One of the major issues with these smaller machines is keeping everything cool, and inside there is a network of cooling technologies and systems, with the vent structure visible across the back and top of the machine. As the workload increases, this machine does make some noise, but compared with workstations and servers, that noise is well controlled.</p><p>Opening the box, the insides are neatly packed and much more complex in design than I would usually expect in a mini PC. However, the slots for the two additional M.2 sticks are relatively easy to access, with one being a standard M.2 2280 Key-M PCIe 4.0 x4 and the other being M.2 Key-M PCIe 4.0 x1. The RAM is unified, soldered to the motherboard, and not upgradable.</p><ul><li><strong>Design:</strong> 4.5 / 5</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3yLLY8zHJsgV2AiUU5QUKN" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/3yLLY8zHJsgV2AiUU5QUKN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-features"><span>GMKtec EVO-X5 Pro: Features</span></h2><p>The big news on the feature front for the EVO-X5 is the new Ryzen AI Max+ PRO 495. While this only offers a slight uplift when it comes to the clock speed, the AI processing is where the real changes have been introduced, with the two headline points being the boost in the power of the integrated GPU and support for up to 196GB of RAM.</p><p>There are, of course, other updates and speed boosts, but for AI processing, the 196GB is the headline, letting the machine hold larger language models in memory. GMKtec claims the 55 TOPS NPU, backed by the RAM boost, should let you run 320B LLMs locally.</p><p>The integrated GPU also gets an upgrade to the Radeon 8065S, which retains the 40 RDNA 3.5 compute units but should boost gaming performance slightly. Likewise, the 196GB of RAM is a significant upgrade, especially since both the CPU and GPU share the memory. Again, as with the EVO-X3, the onboard memory is LPDDR5X but increases from 8000MT/s to 8533MT/s, boosting the bandwidth slightly for all that AI processing.</p><p>In the creative field, connectivity is always important, and two features that instantly piqued my interest were the dual USB4 v2 80Gbps ports and 10GbE network ports. USB4 v2 is also 80Gbps, but it differs from Thunderbolt 5, which is stricter on some parameters. However, the documentation says you can connect an eGPU if needed.</p><p>USB4 v2 also offers broad compatibility with external hard drives and SSDs, which are essential for storage, and it can even add two additional M.2 SSDs, boosting internal storage to 24TB. There are three M.2 2280 slots: two PCIe 4.0 x4 and one PCIe 4.0 x1.</p><p>The 10GbE networking meant that, during the test, I could simply link the machine into the wired 10GbE network to access the <a href="https://www.techradar.com/computing/ugreen-nasync-idx6011-pro-nas-review" target="_blank">UGreen INX6100</a>. The transfer rates over the 10GbE network are fast enough for network video editing, and you can access and download all files stored on the NAS locally. The other point here is that while one system is AMD and the other is Intel, with the right LLM commands and setup, you can get the two working together, making it an ideal workflow option for sorting and tagging images, for instance.</p><p>Alongside the impressive array of connection ports, there’s also Wi-Fi 7 to ensure fast internet connections. In testing, this also meant that when transferring files to the 3D printers, transfer rates for some of the larger files were exceptionally fast. When this speed was combined with the slicing speed within applications such as Bambu Studio, you can really start to see the machine’s potential.</p><p>Two features that are interesting but are beyond the scope of this review are AMD DASH and TPM. AMD DASH stands for Desktop and Mobile Architecture for System Hardware and enables remote access and management. TPM stands for Trusted Platform Module and handles security. These are both aimed at enterprise users.</p><p>GMKtec Claw and Herdsman come pre-installed and are both pretty decent. Herdsman is essentially along the same lines as LM Studio or Ollama, while GMKtec Claw features chat and the ability to set up automation tasks. They’re actually a great starting point, and both are evolving quickly, becoming more stable and making greater use of the full power of the machine, something that I noted with the EVO-X3 and the lack of connectivity to the NPU.</p><p>Many applications, including those from Adobe, still use the GPU heavily for AI processing, although other applications are starting to use the dedicated AI processor.</p><ul><li><strong>Features:</strong> 4.5 / 5</li></ul><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-performance"><span>GMKtec EVO-X5 Pro: Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="onNrJ2rkeFoWZebzU9qErM" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/onNrJ2rkeFoWZebzU9qErM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Benchmark scores</div><div class="fancy_box_body"><p class="fancy-box__body-text">Crystal Disk Mark Read: 6961.34<br />Crystal Disk Mark Write: 6275.46<br />Geekbench 6 CPU Multi: 20011<br />Geekbench 6 CPU Single: 2919<br />Geekbench 6 GPU: 96397<br />Geekbench 7 CPU Multi: 25091<br />Geekbench 7 CPU Single: 2700<br />Geekbench 7 GPU: 96751<br />PC Mark Overall: 10773<br />Cinebench R23 CPU Multi (Threads): 37055<br />Cinebench R23 CPU Single (Threads): 2082<br />Cinebench 2026 CPU Multi (Threads): 7666<br />Cinebench 2026 CPU Single (Threads): 465<br />Fire Strike Overall: 27434<br />Fire Strike Graphics: 31522<br />Fire Strike Physics: 34151<br />Fire Strike Combined: 12099<br />Time Spy Overall: 10605<br />Time Spy Graphics: 10703<br />Time Spy CPU: 10087<br />Wild Life Overall: 72304<br />Steel Nomad Overall: 2109<br />Sky Diver:<br />Windows Experience Overall: 9.5<br />Procyon: 1204</p></div></div><p>The EVO-X5 comes with Windows 11 Pro installed, and as ever, the final steps of the installation were needed before I could get started with installing the benchmark and real-world software applications. What was interesting here, and in common with the EVO-X3, was that GMKClaw and Herdsman were both pre-installed.</p><p>Herdsman is essentially the local AI model management and inference platform. Essentially, it’s GMKtec’s option over LM Studio or Ollama, and offers plenty of options to download and manage LLMs locally. For most of the tests, I started with this option. Still, I switched to Lemonade, since I’m more familiar with the server and its ability to monitor token generation and use it for the local AI tests I wanted to run.</p><p>Starting the tests, I ran through the usual array of Windows applications, including Microsoft Office, with a focus as ever on Word, to write this review, Excel, to store and query the results from the benchmark tests, and PowerPoint, to put together a series of photography lectures that I have running in the next week. Testing these applications on a machine at this level produced the real-world results I expected. All applications ran at speed with no lag, and switching quickly between them and online formatting tools was fast, keeping up with my editing speed without me ever having to wait for the applications to speed up.</p><p>These real-world tests reflected the WEI score of 9.5, and again, that’s backed up by the PCMark score of 10,773, the highest score I’ve seen with any mini PC.</p><p>Lightroom and Photoshop, like the Microsoft Office apps, just ran without issue. They were fast and responsive, and with well over 100 images, batch processing in Lightroom ran surprisingly through without issue or pause. Likewise, opening a selection of RAW files from Bridge into ACR, making amendments, and saving was equally quick.</p><p>As I pushed the system with 4K video editing, it was clear that even without discrete graphics, performance was excellent. With the 2TB SSD, there was plenty of room to store and edit the footage locally, with the option to offload to the NAS once the edit was complete. </p><p>What impressed me here was not only the ability to edit 4K footage from the Canon EOS R5C without slowdown, but also the ability to store that footage on the IDX6011 NAS and utilise the 10GbE network for editing. This meant that there was no need for a desktop SSD, as the speed over the network and with a local cache file was more than fast enough for all the work that I do.</p><p>As the complexity of the edits increased, I noticed notable slowdowns when scrolling through the timeline and waiting for colour grade changes to render. However, it was still as fast as my workstation with discrete graphics. However, with the option to link in an eGPU, this would further boost video-editing potential, especially as you start to look at AI integrations with programs such as DaVinci Resolve.</p><p>I started using Herdsman and located the largest model I could download and test. This was the DeepSeek-V4-Flash-0731 at 155.7GB. This left little actual headroom for the machine. However, the model worked, though progress was slow; when results came through chat questions, the answers were impressive. Still, even on this machine, the speed was too slow to be truly useful. Switching to Qwen3 30B-A3B at 17.2GB, the difference was instantly noticeable, with swift answers and useful abilities.</p><p>However, I wanted to run a series of tests; first, I returned to Lemonade and the SDXL-Turbo model to create a 512 x 512 image of a dog on a beach. The image appeared almost instantly in just 2.5 seconds and was pretty decent. After experimenting a little more, I found the image generation speed and capability were the fastest I have seen so far. Although some images had slightly strange dog eyes, I switched models again and went with Z-Iage-Turbo. This larger 20GB model produced notably better results, though it took longer to render.</p><p>The next test, and one that produces all sorts of results, was the website creation task. Here, Qwen3-Coder-Next-GGUF produced the site in 92 seconds, generating 4063 tokens at 45 tokens per second. This was just to generate the code, not to save and organise the files. Still, this was far faster than the EVO-X3 running the same task with the same source files. What was markedly different here was the quality of the site generated. This actually looked like a site, albeit slightly simple, that you could actually use as a point to develop or rework with AI.</p><p>Looking through the results, the EVO-X5 clearly outperforms the EVO-X3. It’s not as large a step as I would have thought, but having that additional RAM does mean that larger and more complex models can be loaded, and their abilities are that much greater. However, many language models are designed to adapt to the hardware they’re running on. Still, running those same models on the EVO-X3 and EVO-X5 side by side shows that while everything but the RAM sees a small uplift, the EVO-X5 easily takes the edge in processing and result quality.</p><p>Once again, model selection and the LLM Manager are all-important, as is the default token limit your machine can produce. Once you’ve found the model and increased the tokens through the command prompt for that model, things become more impressive. As ever, you also need to look for models that make full use of the NPU, rather than just falling back on the CPU and GPU.</p><p>However, across the board, running local LLMs is more than possible, and while many of the speed differences between this and the older EVO-X3 seem small on paper, the real-world realisation of those speeds is marked in use. I found response times were generally faster, with slightly better responses, most notably in website creation. However, as ever, this partly comes down to the AI model's response at the time, and you will always get a different response from the same model on different systems.</p><p>That said, the extra RAM does seem to make a difference, letting you run more models in memory and reducing loading and unloading. It also means that you can comfortably run other applications and AI models together, such as Visual Studio or DaVinci Resolve, with some impressive results. This use of running an AI Model alongside Visual Studio or DaVinci Resolve is where the real power comes into play, and from this angle the step up from the EVO-X3 to the EVO-X5 is greater. </p><p>While this machine has AI potential, you can still use AI Managers and models to balance what you want the system to do.</p><p>The final part of the test was to run a few games, and here again, the power of that CPU and integrated GPU was impressive, with <em>Indiana Jones and the Great Circle</em> running at 1080p extremely well. Likewise, <em>Cyberpunk 2077</em>. If you do want to increase the resolution and effects, then a dedicated eGPU would be a good idea, but out of the box, the performance is still impressive.</p><p>At the end of this test, the machine more than proved its abilities and also enabled me to push testing and experimenting with local AI to a greater degree than I have been able to before. The main point for me that helps to balance the cost is the creative and admin potential. This machine rips through video, transcoding quickly when needed, and the auto video editing in DaVinci Resolve is incredibly impressive; however, as ever, there is a learning curve, as these features take time to set up. </p><ul><li><strong>Performance:</strong> 4.5 / 5</li></ul><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-final-verdict"><span>GMKtec EVO-X5 Pro: Final verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cERYNYn3xTp22bH7f64ZiM" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/cERYNYn3xTp22bH7f64ZiM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>The EVO-X5 is an interesting machine and, without doubt, the most powerful AI-enhanced mini PC I have looked at so far. What surprises me is that the performance, while better in many respects than the EVO-X3, doesn’t feel much better to justify the current price difference. However, once you look at the current cost of RAM, that increase becomes apparent.</p><p>If you are running the EVO-X3, it's a powerful AI machine and will do pretty much everything the EVO-X5 will do, though the process will be slightly different because it doesn’t have as much headroom in RAM capacity.</p><p>I have also noted that newer local language models allocate resources better, so while many models thrive in this machine with that extra RAM, plenty of new-generation models are better adapted to memory allocation and seem to run as well on the EVO-X3 with its 128GB of RAM.</p><p>However, in use, there’s no doubting this compact machine's speed and abilities. For standard office work, it’s exceptional, and for creative work, it’s surprisingly agile; with a dedicated eGPU to boost graphics processing, it will be a formidable option for video and photo editing.</p><p>While this machine is decent for gaming, it’s not designed for it, so a quick dip into the gaming world after work is possible, and the gameplay quality is exceptional. However, if that is what you want the machine for, a dedicated gaming machine will be cheaper.</p><p>The new CPU and enhanced RAM deliver the headline performance upgrades, and you can run larger models, making it what it is supposed to be; at present, most of that cost comes from the RAM. So if you want to run larger language models, you will need to stretch to this latest model. However, the EVO-X3 is still an excellent, cheaper option, and at present is equally impressive if slightly less powerful.</p><h3 class="article-body__section" id="section-should-i-buy-the-gmktec-evo-x5-pro"><span>Should I buy the GMKtec EVO-X5 Pro?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3MYeKMJqXSKDATFigCmWvM" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/3MYeKMJqXSKDATFigCmWvM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><div ><table><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Excellent performance, but the high price limits its appeal.</p></td><td  ><p>3.5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Compact, well-built and understated, with excellent connectivity.</p></td><td  ><p>4.5</p></td></tr><tr><td class="firstcol " ><p>Features</p></td><td  ><p>Extensive connectivity, huge memory capacity and impressive expandability.</p></td><td  ><p>5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Exceptional AI processing and strong creative workstation performance.</p></td><td  ><p>4.5</p></td></tr><tr><td class="firstcol " ><p>Overall</p></td><td  ><p>A powerful, versatile mini PC with a premium price.</p></td><td  ><p>4.5</p></td></tr></tbody></table></div><h2 id="buy-it-if-7">Buy it if...</h2><div class="product"><p><strong>You want to run large AI models locally.</strong></p><p>With its huge unified memory capacity and powerful processor, the EVO-X5 Pro can handle large language models locally that would push most conventional mini PCs beyond their limits.</p><p><strong>You need a powerful compact creative workstation.</strong></p><p>For large image libraries, 4K video editing, and AI-enhanced creative applications, the EVO-X5 Pro delivers excellent performance, fast networking, and extensive storage options in a compact design.</p></div><h2 id="don-39-t-buy-it-if-5">Don't buy it if...</h2><div class="product"><p><strong>You only need a mini PC for everyday work.</strong></p><p>For office applications, web browsing, and general creative work, the EVO-X5 Pro offers far more power than you need. Cheaper mini PCs, including the EVO-X3, provide better value.</p><p><strong>You need a workstation with powerful dedicated graphics.</strong></p><p>While the integrated graphics perform well, demanding 3D work and complex video editing benefit from a dedicated GPU. A conventional desktop workstation may offer better value.</p></div><p><em>For more professional-grade desktops, we've tested the </em><a href="https://www.techradar.com/news/best-business-desktop-pcs" target="_blank"><em>best business computers</em></a><em>.</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/pro/gmktec-evo-x5-pro-mini-pc-review</link>
                                                                            <description>
                            <![CDATA[ The GMKtec EVO-X5 Pro is a mini PC ideal for pro workloads and running 300B LLMs locally with a Ryzen AI Max+ PRO 495, Radeon 8065S graphics and 192GB memory. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UHbrqnXWJuHWJ9TTsvUGHG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/n4ZQhhQEfXnRauzjEwYYKN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 10:08:16 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Pro]]></category>
                                                                                                                    <dc:creator><![CDATA[ Alastair Jennings ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ &lt;p&gt;Alastair is a photographer, filmmaker and tech writer who has been working in the publishing industry since the late 1990s. For more than 25 years he has covered photography, video and technology across Future&#039;s photography, technology and gaming brands, and worked on many of the company&#039;s launch titles. Based in the south of England, Alastair now runs a photography and video production company and lectures in TV and film. When not on set or in the classroom, Alastair can usually be found prototyping and prop building with the aid of 3D printing as well as advising companies on social video strategy and creative workflows which gives him the tech insight behind the reviews.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/n4ZQhhQEfXnRauzjEwYYKN-1920-80.jpg">
                                                            <media:credit><![CDATA[Alastair Jennings]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[GMKtec EVO-X5 Pro]]></media:description>                                                            <media:text><![CDATA[GMKtec EVO-X5 Pro]]></media:text>
                                <media:title type="plain"><![CDATA[GMKtec EVO-X5 Pro]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/n4ZQhhQEfXnRauzjEwYYKN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-gmktec-evo-x5-pro-30-second-review"><span>GMKtec EVO-X5 Pro: 30-second review</span></h2><p>The EVO-X5 packs in the latest Strix Halo CPU, and while the updates to the specifications of the Ryzen AI Max+ PRO 495 processor over the Ryzen AI Max+ 395 may look modest, when you give it the additional boost of 196GB of unified memory and the internal space for up to 24TB of storage, you suddenly have a machine whose abilities far exceed the superb EVO-X3 I reviewed recently.</p><p>Like so many of these small machines, it’s hard to believe the power it contains when it arrives. The box is small and relatively discreet, a departure from the large, powerful gaming and AI workstations I usually associate with its computing power. Part of the reason for that size reduction is that this is the processing hub, and while the AMD Radeon 8065S graphics will see you through a decent bit of gaming, if you want that full GPU power alongside what’s on offer with the CPU, you’ll need to break out to an external GPU option.</p><p>This distinction makes the machine's intended use clear. You can use it on its own as a powerful workstation, handling everything from office day tasks to video and image editing, and even 3D work. You can also rack it alongside additional EVO-X5 Pros to build an almighty AI personal data centre, with features such as the OOB, which lets you access and control the machine even if it’s mid-blue-screen or terminal crash. However, professional IT skills will inevitably also be needed.</p><p>On a smaller scale, and in the way that I’ve checked this machine out in this review, is to check the day-to-day function first. Is this $5000 machine good enough to run Microsoft Windows, Office, Adobe Creative Suite, edit images, video, and audio, and all the base functions a powerful machine in the office or studio needs to do, especially at that price?</p><p>But to go deeper: if this machine is going to cost almost double today’s pretty decent workstations, why should I pay all that extra money for a machine like this? Am I just paying for the latest AI-enhanced CPUs, or is there more to it? Can the machine's capabilities offset that cost?</p><p>To put it to the test, I’ve run through all the usual benchmarks and real-world tests, but after testing a good volume of AI headline-leading mini PCs, I want to see if it can take on a little more. </p><p>For instance, can it not only code a straight site, but also build a site from designs? What is the image-generation capability, and can it really run a 300B LLM without stalling? What I’ve noticed with some smaller mini PCs recently is that while they meet the specs and perform impressively, most hit their limits pretty quickly. However, with far more unified RAM than most, this machine has plenty of headroom.</p><p>The main test for me here is: can it effectively edit video in DaVinci Resolve? While my workstation can do this, it takes time, and a couple of the machines I’ve looked at recently have hit their limits with that kind of processing.</p><p>This looks to be a formidable machine among the <a href="https://www.techradar.com/best/mini-pcs" target="_blank">best mini PCs</a> I've reviewed, and one that will suit many looking into the use of AI in their day-to-day workflows. But all this power comes at a huge cost, and in balance, is this machine worth that price?</p><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-price-and-availability"><span>GMKtec EVO-X5 Pro: Price and availability</span></h2><ul><li><strong>How much does it cost?  </strong>From £5,299 / $6,799</li><li><strong>When is it out? </strong>Available now</li><li><strong>Where can you get it? </strong>Directly from <a href="https://www.gmktec.com/products/gmktec-evo-x5-pro-amd-ryzen-ai-max-pro-495-ai-mini-pc" target="_blank">GMKtec</a> or <a href="" target="_blank">Amazon</a></li></ul><p>At present, the machine has just gone on sale and is <a href="https://www.gmktec.com/products/gmktec-evo-x5-pro-amd-ryzen-ai-max-pro-495-ai-mini-pc" target="_blank">available for $6799 from GMKtec in the US</a>, and <a href="https://www.gmktec.uk/products/gmktec-evo-x5-pro-ai-max-pro-495-mini-pc" target="_blank">£5,299 from the UK website</a>.</p><p>The machine is available in either a 2TB or 4TB version, with a $400 /  £300 increase for the extra storage.</p><ul><li><strong>Value:</strong> 4 / 5</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="t79NxP2W4A8xamqUK5PMUN" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/t79NxP2W4A8xamqUK5PMUN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-specs"><span>GMKtec EVO-X5 Pro: Specs</span></h2><p><strong>CPU:</strong> AMD Ryzen AI Max+ PRO 495, 16 cores/32 threads</p><p><strong>GPU:</strong> AMD Radeon 8065S, 40 RDNA 3.5 compute units</p><p><strong>NPU:</strong> AMD XDNA 2, 55 TOPS</p><p><strong>RAM:</strong> 192GB LPDDR5X-8533 unified memory, non-upgradeable</p><p><strong>Storage:</strong> 2TB or 4TB PCIe 4.0 M.2 2280 SSD, three slots, up to 24TB total</p><p><strong>Front Ports:</strong> 2 x USB 3.2 Gen 2, 2 x USB4, 3.5mm audio, P-Mode button, CMOS reset</p><p><strong>Rear Ports:</strong> HDMI 2.1, 2 x USB4 v2 80Gbps, 2 x USB 2.0, 2 x 10GbE RJ-45 DASH, 3.5mm audio</p><p><strong>Wireless:</strong> Wi-Fi 7</p><p><strong>VESA Mount:</strong> No</p><p><strong>Dimensions:</strong> 221 x 80 x 195mm</p><p><strong>Weight:</strong> 2.5kg</p><p><strong>Power:</strong> 54W–120W selectable power modes, external power adapter</p><p><strong>Operating System:</strong> Windows 11 Pro</p><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-design"><span>GMKtec EVO-X5 Pro: Design</span></h2><p>The mini PC is getting bigger; although still compact, it sits somewhere between a small tower desktop and the more traditional mini PC size. The styling is also spot on, with the ability to lay the machine flat or upright depending on your desk space. It’s also nicely designed with an understated all-metal black finish, though GMKtec has included its usual feature: a green power button. This button features fingerprint recognition.</p><p>The size, while not large, comes in at 221 × 80 × 195 mm, and in this review it sat neatly beside the monitor in a vertical position, taking up little desktop space. The weight at 2.5kg is substantial for a mini PC, but still far less than most workstations, so in a studio space or if you do need to take a machine out on site, this is a great option.</p><p>The build quality is what you would expect at this price, with the all-metal black finish giving it a high-quality look and feel. Aesthetically, this is one of the best-looking mini PCs I’ve seen, while remaining quite understated. Another design point: while this machine can be used on its own, it's also designed to work alongside others, so its size and weight make it easy to connect to additional EVO-X5s if that’s what you or your business needs.</p><p>The front layout is minimalistic, with a few essentials across the front. These include the P-Mode button, CMOS reset, two USB 3.2 Gen 2 ports, two USB4 ports, a 3.5mm headphone jack, and the power button. The P-Mode button is a physical button for switching between the power modes, which include silent, balanced and performance, with each adjusting the amount of power that the machine draws from 54W up to 120W, and as I went through the benchmark tests, I realised just how much difference this P-Mode button can make.</p><p>That power draw helps explain the power brick that comes with the mini PC, which isn't much smaller than those of many standard mini PCs, but, as ever, can be tucked out of sight behind the machine.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wu7LXYaPT75LQGYdx8d8KN" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/wu7LXYaPT75LQGYdx8d8KN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>On the rear of the machine, there are plenty of ports, although again, as I’ve seen with these premium machines, the volume of connections is well balanced, with plenty of space given. Options include a 3.5mm audio out, HDMI 2.1, two USB4 v2, two USB 2.0, two 10GbE RJ45 DASH ports, power in and a Kensington lock slot. What interests me is that both RJ45 ports are 10GbE, enabling ultra-fast network speeds if your network can support them.</p><p>One of the major issues with these smaller machines is keeping everything cool, and inside there is a network of cooling technologies and systems, with the vent structure visible across the back and top of the machine. As the workload increases, this machine does make some noise, but compared with workstations and servers, that noise is well controlled.</p><p>Opening the box, the insides are neatly packed and much more complex in design than I would usually expect in a mini PC. However, the slots for the two additional M.2 sticks are relatively easy to access, with one being a standard M.2 2280 Key-M PCIe 4.0 x4 and the other being M.2 Key-M PCIe 4.0 x1. The RAM is unified, soldered to the motherboard, and not upgradable.</p><ul><li><strong>Design:</strong> 4.5 / 5</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3yLLY8zHJsgV2AiUU5QUKN" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/3yLLY8zHJsgV2AiUU5QUKN-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-features"><span>GMKtec EVO-X5 Pro: Features</span></h2><p>The big news on the feature front for the EVO-X5 is the new Ryzen AI Max+ PRO 495. While this only offers a slight uplift when it comes to the clock speed, the AI processing is where the real changes have been introduced, with the two headline points being the boost in the power of the integrated GPU and support for up to 196GB of RAM.</p><p>There are, of course, other updates and speed boosts, but for AI processing, the 196GB is the headline, letting the machine hold larger language models in memory. GMKtec claims the 55 TOPS NPU, backed by the RAM boost, should let you run 320B LLMs locally.</p><p>The integrated GPU also gets an upgrade to the Radeon 8065S, which retains the 40 RDNA 3.5 compute units but should boost gaming performance slightly. Likewise, the 196GB of RAM is a significant upgrade, especially since both the CPU and GPU share the memory. Again, as with the EVO-X3, the onboard memory is LPDDR5X but increases from 8000MT/s to 8533MT/s, boosting the bandwidth slightly for all that AI processing.</p><p>In the creative field, connectivity is always important, and two features that instantly piqued my interest were the dual USB4 v2 80Gbps ports and 10GbE network ports. USB4 v2 is also 80Gbps, but it differs from Thunderbolt 5, which is stricter on some parameters. However, the documentation says you can connect an eGPU if needed.</p><p>USB4 v2 also offers broad compatibility with external hard drives and SSDs, which are essential for storage, and it can even add two additional M.2 SSDs, boosting internal storage to 24TB. There are three M.2 2280 slots: two PCIe 4.0 x4 and one PCIe 4.0 x1.</p><p>The 10GbE networking meant that, during the test, I could simply link the machine into the wired 10GbE network to access the <a href="https://www.techradar.com/computing/ugreen-nasync-idx6011-pro-nas-review" target="_blank">UGreen INX6100</a>. The transfer rates over the 10GbE network are fast enough for network video editing, and you can access and download all files stored on the NAS locally. The other point here is that while one system is AMD and the other is Intel, with the right LLM commands and setup, you can get the two working together, making it an ideal workflow option for sorting and tagging images, for instance.</p><p>Alongside the impressive array of connection ports, there’s also Wi-Fi 7 to ensure fast internet connections. In testing, this also meant that when transferring files to the 3D printers, transfer rates for some of the larger files were exceptionally fast. When this speed was combined with the slicing speed within applications such as Bambu Studio, you can really start to see the machine’s potential.</p><p>Two features that are interesting but are beyond the scope of this review are AMD DASH and TPM. AMD DASH stands for Desktop and Mobile Architecture for System Hardware and enables remote access and management. TPM stands for Trusted Platform Module and handles security. These are both aimed at enterprise users.</p><p>GMKtec Claw and Herdsman come pre-installed and are both pretty decent. Herdsman is essentially along the same lines as LM Studio or Ollama, while GMKtec Claw features chat and the ability to set up automation tasks. They’re actually a great starting point, and both are evolving quickly, becoming more stable and making greater use of the full power of the machine, something that I noted with the EVO-X3 and the lack of connectivity to the NPU.</p><p>Many applications, including those from Adobe, still use the GPU heavily for AI processing, although other applications are starting to use the dedicated AI processor.</p><ul><li><strong>Features:</strong> 4.5 / 5</li></ul><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-performance"><span>GMKtec EVO-X5 Pro: Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="onNrJ2rkeFoWZebzU9qErM" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/onNrJ2rkeFoWZebzU9qErM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Benchmark scores</div><div class="fancy_box_body"><p class="fancy-box__body-text">Crystal Disk Mark Read: 6961.34<br />Crystal Disk Mark Write: 6275.46<br />Geekbench 6 CPU Multi: 20011<br />Geekbench 6 CPU Single: 2919<br />Geekbench 6 GPU: 96397<br />Geekbench 7 CPU Multi: 25091<br />Geekbench 7 CPU Single: 2700<br />Geekbench 7 GPU: 96751<br />PC Mark Overall: 10773<br />Cinebench R23 CPU Multi (Threads): 37055<br />Cinebench R23 CPU Single (Threads): 2082<br />Cinebench 2026 CPU Multi (Threads): 7666<br />Cinebench 2026 CPU Single (Threads): 465<br />Fire Strike Overall: 27434<br />Fire Strike Graphics: 31522<br />Fire Strike Physics: 34151<br />Fire Strike Combined: 12099<br />Time Spy Overall: 10605<br />Time Spy Graphics: 10703<br />Time Spy CPU: 10087<br />Wild Life Overall: 72304<br />Steel Nomad Overall: 2109<br />Sky Diver:<br />Windows Experience Overall: 9.5<br />Procyon: 1204</p></div></div><p>The EVO-X5 comes with Windows 11 Pro installed, and as ever, the final steps of the installation were needed before I could get started with installing the benchmark and real-world software applications. What was interesting here, and in common with the EVO-X3, was that GMKClaw and Herdsman were both pre-installed.</p><p>Herdsman is essentially the local AI model management and inference platform. Essentially, it’s GMKtec’s option over LM Studio or Ollama, and offers plenty of options to download and manage LLMs locally. For most of the tests, I started with this option. Still, I switched to Lemonade, since I’m more familiar with the server and its ability to monitor token generation and use it for the local AI tests I wanted to run.</p><p>Starting the tests, I ran through the usual array of Windows applications, including Microsoft Office, with a focus as ever on Word, to write this review, Excel, to store and query the results from the benchmark tests, and PowerPoint, to put together a series of photography lectures that I have running in the next week. Testing these applications on a machine at this level produced the real-world results I expected. All applications ran at speed with no lag, and switching quickly between them and online formatting tools was fast, keeping up with my editing speed without me ever having to wait for the applications to speed up.</p><p>These real-world tests reflected the WEI score of 9.5, and again, that’s backed up by the PCMark score of 10,773, the highest score I’ve seen with any mini PC.</p><p>Lightroom and Photoshop, like the Microsoft Office apps, just ran without issue. They were fast and responsive, and with well over 100 images, batch processing in Lightroom ran surprisingly through without issue or pause. Likewise, opening a selection of RAW files from Bridge into ACR, making amendments, and saving was equally quick.</p><p>As I pushed the system with 4K video editing, it was clear that even without discrete graphics, performance was excellent. With the 2TB SSD, there was plenty of room to store and edit the footage locally, with the option to offload to the NAS once the edit was complete. </p><p>What impressed me here was not only the ability to edit 4K footage from the Canon EOS R5C without slowdown, but also the ability to store that footage on the IDX6011 NAS and utilise the 10GbE network for editing. This meant that there was no need for a desktop SSD, as the speed over the network and with a local cache file was more than fast enough for all the work that I do.</p><p>As the complexity of the edits increased, I noticed notable slowdowns when scrolling through the timeline and waiting for colour grade changes to render. However, it was still as fast as my workstation with discrete graphics. However, with the option to link in an eGPU, this would further boost video-editing potential, especially as you start to look at AI integrations with programs such as DaVinci Resolve.</p><p>I started using Herdsman and located the largest model I could download and test. This was the DeepSeek-V4-Flash-0731 at 155.7GB. This left little actual headroom for the machine. However, the model worked, though progress was slow; when results came through chat questions, the answers were impressive. Still, even on this machine, the speed was too slow to be truly useful. Switching to Qwen3 30B-A3B at 17.2GB, the difference was instantly noticeable, with swift answers and useful abilities.</p><p>However, I wanted to run a series of tests; first, I returned to Lemonade and the SDXL-Turbo model to create a 512 x 512 image of a dog on a beach. The image appeared almost instantly in just 2.5 seconds and was pretty decent. After experimenting a little more, I found the image generation speed and capability were the fastest I have seen so far. Although some images had slightly strange dog eyes, I switched models again and went with Z-Iage-Turbo. This larger 20GB model produced notably better results, though it took longer to render.</p><p>The next test, and one that produces all sorts of results, was the website creation task. Here, Qwen3-Coder-Next-GGUF produced the site in 92 seconds, generating 4063 tokens at 45 tokens per second. This was just to generate the code, not to save and organise the files. Still, this was far faster than the EVO-X3 running the same task with the same source files. What was markedly different here was the quality of the site generated. This actually looked like a site, albeit slightly simple, that you could actually use as a point to develop or rework with AI.</p><p>Looking through the results, the EVO-X5 clearly outperforms the EVO-X3. It’s not as large a step as I would have thought, but having that additional RAM does mean that larger and more complex models can be loaded, and their abilities are that much greater. However, many language models are designed to adapt to the hardware they’re running on. Still, running those same models on the EVO-X3 and EVO-X5 side by side shows that while everything but the RAM sees a small uplift, the EVO-X5 easily takes the edge in processing and result quality.</p><p>Once again, model selection and the LLM Manager are all-important, as is the default token limit your machine can produce. Once you’ve found the model and increased the tokens through the command prompt for that model, things become more impressive. As ever, you also need to look for models that make full use of the NPU, rather than just falling back on the CPU and GPU.</p><p>However, across the board, running local LLMs is more than possible, and while many of the speed differences between this and the older EVO-X3 seem small on paper, the real-world realisation of those speeds is marked in use. I found response times were generally faster, with slightly better responses, most notably in website creation. However, as ever, this partly comes down to the AI model's response at the time, and you will always get a different response from the same model on different systems.</p><p>That said, the extra RAM does seem to make a difference, letting you run more models in memory and reducing loading and unloading. It also means that you can comfortably run other applications and AI models together, such as Visual Studio or DaVinci Resolve, with some impressive results. This use of running an AI Model alongside Visual Studio or DaVinci Resolve is where the real power comes into play, and from this angle the step up from the EVO-X3 to the EVO-X5 is greater. </p><p>While this machine has AI potential, you can still use AI Managers and models to balance what you want the system to do.</p><p>The final part of the test was to run a few games, and here again, the power of that CPU and integrated GPU was impressive, with <em>Indiana Jones and the Great Circle</em> running at 1080p extremely well. Likewise, <em>Cyberpunk 2077</em>. If you do want to increase the resolution and effects, then a dedicated eGPU would be a good idea, but out of the box, the performance is still impressive.</p><p>At the end of this test, the machine more than proved its abilities and also enabled me to push testing and experimenting with local AI to a greater degree than I have been able to before. The main point for me that helps to balance the cost is the creative and admin potential. This machine rips through video, transcoding quickly when needed, and the auto video editing in DaVinci Resolve is incredibly impressive; however, as ever, there is a learning curve, as these features take time to set up. </p><ul><li><strong>Performance:</strong> 4.5 / 5</li></ul><h2 class="article-body__section" id="section-gmktec-evo-x5-pro-final-verdict"><span>GMKtec EVO-X5 Pro: Final verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cERYNYn3xTp22bH7f64ZiM" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/cERYNYn3xTp22bH7f64ZiM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>The EVO-X5 is an interesting machine and, without doubt, the most powerful AI-enhanced mini PC I have looked at so far. What surprises me is that the performance, while better in many respects than the EVO-X3, doesn’t feel much better to justify the current price difference. However, once you look at the current cost of RAM, that increase becomes apparent.</p><p>If you are running the EVO-X3, it's a powerful AI machine and will do pretty much everything the EVO-X5 will do, though the process will be slightly different because it doesn’t have as much headroom in RAM capacity.</p><p>I have also noted that newer local language models allocate resources better, so while many models thrive in this machine with that extra RAM, plenty of new-generation models are better adapted to memory allocation and seem to run as well on the EVO-X3 with its 128GB of RAM.</p><p>However, in use, there’s no doubting this compact machine's speed and abilities. For standard office work, it’s exceptional, and for creative work, it’s surprisingly agile; with a dedicated eGPU to boost graphics processing, it will be a formidable option for video and photo editing.</p><p>While this machine is decent for gaming, it’s not designed for it, so a quick dip into the gaming world after work is possible, and the gameplay quality is exceptional. However, if that is what you want the machine for, a dedicated gaming machine will be cheaper.</p><p>The new CPU and enhanced RAM deliver the headline performance upgrades, and you can run larger models, making it what it is supposed to be; at present, most of that cost comes from the RAM. So if you want to run larger language models, you will need to stretch to this latest model. However, the EVO-X3 is still an excellent, cheaper option, and at present is equally impressive if slightly less powerful.</p><h3 class="article-body__section" id="section-should-i-buy-the-gmktec-evo-x5-pro"><span>Should I buy the GMKtec EVO-X5 Pro?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3MYeKMJqXSKDATFigCmWvM" name="GMKtec EVO-X5 Pro" alt="GMKtec EVO-X5 Pro" src="https://cdn.mos.cms.futurecdn.net/3MYeKMJqXSKDATFigCmWvM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><div ><table><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Excellent performance, but the high price limits its appeal.</p></td><td  ><p>3.5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Compact, well-built and understated, with excellent connectivity.</p></td><td  ><p>4.5</p></td></tr><tr><td class="firstcol " ><p>Features</p></td><td  ><p>Extensive connectivity, huge memory capacity and impressive expandability.</p></td><td  ><p>5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Exceptional AI processing and strong creative workstation performance.</p></td><td  ><p>4.5</p></td></tr><tr><td class="firstcol " ><p>Overall</p></td><td  ><p>A powerful, versatile mini PC with a premium price.</p></td><td  ><p>4.5</p></td></tr></tbody></table></div><h2 id="buy-it-if-7">Buy it if...</h2><div class="product"><p><strong>You want to run large AI models locally.</strong></p><p>With its huge unified memory capacity and powerful processor, the EVO-X5 Pro can handle large language models locally that would push most conventional mini PCs beyond their limits.</p><p><strong>You need a powerful compact creative workstation.</strong></p><p>For large image libraries, 4K video editing, and AI-enhanced creative applications, the EVO-X5 Pro delivers excellent performance, fast networking, and extensive storage options in a compact design.</p></div><h2 id="don-39-t-buy-it-if-5">Don't buy it if...</h2><div class="product"><p><strong>You only need a mini PC for everyday work.</strong></p><p>For office applications, web browsing, and general creative work, the EVO-X5 Pro offers far more power than you need. Cheaper mini PCs, including the EVO-X3, provide better value.</p><p><strong>You need a workstation with powerful dedicated graphics.</strong></p><p>While the integrated graphics perform well, demanding 3D work and complex video editing benefit from a dedicated GPU. A conventional desktop workstation may offer better value.</p></div><p><em>For more professional-grade desktops, we've tested the </em><a href="https://www.techradar.com/news/best-business-desktop-pcs" target="_blank"><em>best business computers</em></a><em>.</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ GreenGeeks web hosting review ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Founded in 2008, GreenGeeks offers shared, WordPress, WooCommerce, reseller, VPS, and dedicated hosting. Its defining feature is not a proprietary control panel or unusual hosting architecture, but a 300% renewable-energy certificate match and tree planting alongside conventional hosting tools. It's an interesting pitch, so we tested it out to see how it fares among the <a href="https://www.techradar.com/web-hosting/best-web-hosting-service-websites" target="_blank">best web hosting services</a>.</p><h2 class="article-body__section" id="section-greengeeks-pricing-plans"><span>GreenGeeks: Pricing &amp; plans</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1452px;"><p class="vanilla-image-block" style="padding-top:55.44%;"><img id="YsiZcNHsepVt2mUq9atSgY" name="greengeeks-hosting-types" alt="GreenGeeks web hosting options" src="https://cdn.mos.cms.futurecdn.net/YsiZcNHsepVt2mUq9atSgY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1452" height="805" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Shared hosting is the main attraction, with WordPress and WooCommerce packages built on the same platform. Reseller hosting targets agencies, while VPS customers can choose four self-managed or three managed tiers. Dedicated servers start at $169 a month and are ordered through sales.</p><h2 id="greengeeks-shared-hosting">GreenGeeks shared hosting</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:970px;"><p class="vanilla-image-block" style="padding-top:56.60%;"><img id="bTCHAcGncNDyN6w2ZAGGAj" name="GreenGeeks_shared_hosting_pricing" alt="Testing out green web hosting platform GreenGeeks" src="https://cdn.mos.cms.futurecdn.net/bTCHAcGncNDyN6w2ZAGGAj-1920-80.png" mos="" align="middle" fullscreen="" width="970" height="549" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GreenGeeks // Future)</span></figcaption></figure><p>Lite costs $2.95 a month for the first 12-month term, paid as $35.40 upfront, and renews at $13.95. It includes 25GB of storage, unmetered traffic, email, SSL, CDN, a first-year domain, migration, cPanel, Git, SSH, staging, and the AI builder. There is one unresolved problem: GreenGeeks' main pricing page currently advertises five websites, while its dedicated shared-hosting page and support table still say one. Buyers needing more than one site should confirm the limit before ordering.</p><p>Pro costs $4.95 a month initially and $18.95 on renewal, with unlimited websites, 50GB of storage, on-demand restores, priority support, and a WordPress repair tool. Premium rises from $8.95 to $30.95, increases storage to 100GB, and adds a dedicated IP, AlphaSSL, and Redis object caching. Renewal prices are around 3.5 to 4.7 times the introductory rates, making Pro the most balanced option but long-term value less convincing.</p><p>The 30-day money-back guarantee covers initial shared, reseller, and VPS hosting charges, but not domains, setup fees, add-ons, or renewals. In my sales chat, the agent twice confirmed that a $35.40 Lite purchase using an existing domain and no paid extras would be fully refundable if canceled within 30 days.</p><h2 id="greengeeks-wordpress-hosting">GreenGeeks WordPress hosting </h2><p>GreenGeeks' <a href="https://www.techradar.com/news/best-wordpress-hosting-providers" target="_blank">WordPress hosting</a> uses the same Lite, Pro, and Premium prices and resources as shared hosting. All tiers include installation, migration, automatic updates, LiteSpeed Cache, WP-CLI, SSH, staging, and Git; Pro and Premium add priority support and the repair tool. These are useful conveniences, but this remains optimized shared hosting rather than a specialist managed WordPress platform with isolated resources or dedicated WordPress support.</p><h2 id="greengeeks-vps-hosting">GreenGeeks VPS hosting </h2><p>The four self-managed VPS plans start at $9.99 a month for 4GB of RAM, two vCPUs, 80GB of NVMe storage, and unmetered transfer, renewing at $19.99. The 8GB, 16GB, and 32GB tiers initially cost $19.99, $39.99, and $59.99, then renew at $39.99, $79.99, and $109.99. Customers handle the operating system, patches, software, and backups.</p><p>Managed VPS starts at $69.95 a month for four vCPUs, 4GB of RAM, and 75GB of SSD storage. The 8GB and 16GB plans cost $129.95 and $179.95. They include cPanel Solo, a dedicated IP, migration, DDoS protection, monitoring, operating-system updates, and security patching. GreenGeeks does not automatically back up VPS servers: self-managed customers arrange their own solution, while managed customers can configure cPanel backups if they have sufficient storage.</p><p>For more alternatives, see our guide to the<a href="https://www.techradar.com/news/best-vps-hosting" target="_blank"> best VPS hosting services</a>.</p><h2 id="greengeeks-green-hosting">GreenGeeks green hosting</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:970px;"><p class="vanilla-image-block" style="padding-top:57.42%;"><img id="sxeecVUHTGR6vQG2p53y9j" name="GreenGeeks_green_energy_commitment" alt="Testing out green web hosting platform GreenGeeks" src="https://cdn.mos.cms.futurecdn.net/sxeecVUHTGR6vQG2p53y9j-1920-80.png" mos="" align="middle" fullscreen="" width="970" height="557" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GreenGeeks // Future)</span></figcaption></figure><p>GreenGeeks' environmental program is its best-in-class feature. It works with the Bonneville Environmental Foundation to purchase renewable energy certificates equal to three times the electricity included in its annual calculation. Electricity still comes from each data center's local grid, so this is an energy-matching program rather than a claim that every facility runs directly on renewables.</p><p>The company has been an EPA Green Power Partner since 2009 and works with One Tree Planted to plant a tree for each new hosting account; it reports more than 50,000 trees planted. Renewable certificates do not eliminate emissions, but the 300% match, long-running partnerships, and explanation of the local-grid limitation make this commitment more transparent than most green-hosting claims. See our guide to the<a href="https://www.techradar.com/web-hosting/best-green-web-hosting" target="_blank"> best green web hosting</a>.</p><h2 class="article-body__section" id="section-greengeeks-website-builder"><span>GreenGeeks: Website builder</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1155px;"><p class="vanilla-image-block" style="padding-top:57.32%;"><img id="eVGs4USWAQyXF5Hw3J9qqd" name="greengeeks-ai-website-builder" alt="Screenshot of a demo of GreenGeeks AI website builder" src="https://cdn.mos.cms.futurecdn.net/eVGs4USWAQyXF5Hw3J9qqd-1920-80.jpg" mos="" align="middle" fullscreen="" width="1155" height="662" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">GreenGeeks has followed the trend with its newly introduced AI-driven website builder. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The AI WordPress builder is included at no extra cost. It asks about the site, goals, tone, and preferred structure, then generates pages, text, imagery, and design options that can be customized in WordPress. </p><p>In our hands-on testing it offered a quick, approachable starting point. It is not a standalone service: users select WordPress + AI during WordPress installation. It may not be the <a href="https://www.techradar.com/news/the-best-website-builder" target="_blank">best website builder</a> for a lot of sites, but it gets the job done easily enough. </p><h2 class="article-body__section" id="section-greengeeks-ecommerce-store"><span>GreenGeeks: eCommerce store</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1255px;"><p class="vanilla-image-block" style="padding-top:63.82%;"><img id="RmgteWju8r5S7EW374EQih" name="woocommerce" alt="Web store WooCommerce" src="https://cdn.mos.cms.futurecdn.net/RmgteWju8r5S7EW374EQih-1920-80.jpg" mos="" align="middle" fullscreen="" width="1255" height="801" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>GreenGeeks has a <a href="https://www.techradar.com/best/woocommerce-hosting" target="_blank">WooCommerce hosting</a> range which is very capable of building a top-quality web store (WooCommerce is one of the best ecommerce platforms around). </p><p>WooCommerce is available on every shared tier, but these packages use the same underlying platform and prices as regular shared hosting. Premium is the strongest store option because it adds a dedicated IP, AlphaSSL, 100GB of storage, and Redis. </p><p>GreenGeeks can install WooCommerce, but its support policy does not extend to developing or deeply debugging third-party applications, so the plans suit users comfortable managing the store itself.</p><h2 class="article-body__section" id="section-greengeeks-ease-of-use"><span>GreenGeeks: Ease of use</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1850px;"><p class="vanilla-image-block" style="padding-top:44.43%;"><img id="WoVRAHCyPYxFXpJEsjXSMk" name="greengeeks-customer-dashboard" alt="screenshot of GreenGeeks customer dashboard" src="https://cdn.mos.cms.futurecdn.net/WoVRAHCyPYxFXpJEsjXSMk-1920-80.jpg" mos="" align="middle" fullscreen="" width="1850" height="822" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Our hands-on testing found GreenGeeks straightforward to navigate. The custom dashboard keeps websites, plans, domains, billing, and support in a simple sidebar, while cPanel handles email, domains, databases, files, and advanced settings. </p><p>WordPress can be installed from the dashboard, and app installers handle more than 150 other applications. Beginners get a cleaner front end without depriving experienced users of cPanel.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1506px;"><p class="vanilla-image-block" style="padding-top:47.88%;"><img id="us6kKtWb6tnkeTBmYYnDMJ" name="greengeeks-app-installer" alt="screenshot of the App installer at GreenGeeks" src="https://cdn.mos.cms.futurecdn.net/us6kKtWb6tnkeTBmYYnDMJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1506" height="721" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-greengeeks-speed"><span>GreenGeeks: Speed</span></h2><p>Performance was the biggest weakness in our shared-hosting test. The WordPress benchmark returned an overall score of 4.7; database and several text operations were respectable, but file handling, persistent object caching, and some WordPress operations pulled the result down. These findings apply to the tested shared-hosting setup, not the VPS range.</p><div ><table><caption>WordPress benchmark testing</caption><tbody><tr><td class="firstcol " ><p><strong>CPU &amp; Memory</strong></p></td><td  ><p>Operations with large text data</p></td><td  ><p>8.08</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Random binary data operations</p></td><td  ><p>6.33</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Recursive mathematical calculations</p></td><td  ><p>3.86</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Iterative mathematical calculations</p></td><td  ><p>7.32</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>Floating point operations</p></td><td  ><p>1.99</p></td></tr><tr><td class="firstcol " ><p><strong>Filesystem</strong></p></td><td  ><p>Filesystem write ability</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Small file IO test</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>Small file IO test</p></td><td  ><p>2.53</p></td></tr><tr><td class="firstcol " ><p><strong>Database</strong></p></td><td  ><p>Importing large amount of data to database</p></td><td  ><p>5.09</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Simple queries on single table</p></td><td  ><p>8.05</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>Complex database queries on multiple tables</p></td><td  ><p>4.58</p></td></tr><tr><td class="firstcol " ><p><strong>Object Cache</strong></p></td><td  ><p>Persistent object cache enabled</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol " ><p><strong>WordPress Core</strong></p></td><td  ><p>Shortcode processing</p></td><td  ><p>3.84</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>WordPress Hooks</p></td><td  ><p>6.02</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>WordPress option manipulation</p></td><td  ><p>8.08</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>REGEX string processing</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Taxonomy benchmark</p></td><td  ><p>6.01</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Object capability benchmark</p></td><td  ><p>5.2</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Content filtering</p></td><td  ><p>7.23</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>JSON manipulations</p></td><td  ><p>5.47</p></td></tr><tr><td class="firstcol " ><p><strong>Network</strong></p></td><td  ><p>Network download speed test</p></td><td  ><p>6.86</p></td></tr><tr><td class="firstcol " ><p><strong>Overall</strong></p></td><td  ><p>Your server score</p></td><td  ><p>4.7</p></td></tr></tbody></table></div><p>The Siege test was more troubling. At five concurrent users, availability was 55.42%, average response time was 6.96 seconds, and 37 transactions failed. Availability fell to 31.48% at nine users and 12.31% at 15, with 74 and 114 failures respectively. That result remains a serious warning for traffic-sensitive shared-hosting projects, even though it should not be generalized to every GreenGeeks product.</p><div ><table><caption>Siege test</caption><tbody><tr><td class="firstcol " ><p>Concurrent Users</p></td><td  ><p>5</p></td><td  ><p>9</p></td><td  ><p>15</p></td></tr><tr><td class="firstcol " ><p>Transactions</p></td><td  ><p>46</p></td><td  ><p>34</p></td><td  ><p>16</p></td></tr><tr><td class="firstcol " ><p>Availability</p></td><td  ><p>55.42</p></td><td  ><p>31.48</p></td><td  ><p>12.31</p></td></tr><tr><td class="firstcol " ><p>Elapsed time</p></td><td  ><p>299.63</p></td><td  ><p>299.24</p></td><td  ><p>299.21</p></td></tr><tr><td class="firstcol " ><p>Data transactions</p></td><td  ><p>0.31</p></td><td  ><p>0.3</p></td><td  ><p>0.15</p></td></tr><tr><td class="firstcol " ><p>Response time</p></td><td  ><p>6.96</p></td><td  ><p>8.57</p></td><td  ><p>48.41</p></td></tr><tr><td class="firstcol " ><p>Transaction rate</p></td><td  ><p>0.15</p></td><td  ><p>0.11</p></td><td  ><p>0.05</p></td></tr><tr><td class="firstcol " ><p>Throughput</p></td><td  ><p>0</p></td><td  ><p>0</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol " ><p>Concurrency</p></td><td  ><p>1.07</p></td><td  ><p>0.97</p></td><td  ><p>2.59</p></td></tr><tr><td class="firstcol " ><p>Successful transactions</p></td><td  ><p>55</p></td><td  ><p>46</p></td><td  ><p>106</p></td></tr><tr><td class="firstcol " ><p>Failed transactions</p></td><td  ><p>37</p></td><td  ><p>74</p></td><td  ><p>114</p></td></tr><tr><td class="firstcol " ><p>Longest transaction</p></td><td  ><p>37.2</p></td><td  ><p>22.27</p></td><td  ><p>49.97</p></td></tr><tr><td class="firstcol " ><p>Shortest transaction</p></td><td  ><p>0.04</p></td><td  ><p>0.04</p></td><td  ><p>0.04</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-greengeeks-support"><span>GreenGeeks: Support</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1543px;"><p class="vanilla-image-block" style="padding-top:62.02%;"><img id="okrc4DozBbKYUeHwfY4m9d" name="greengeeks-contact" alt="GreenGeeks support page" src="https://cdn.mos.cms.futurecdn.net/okrc4DozBbKYUeHwfY4m9d-1920-80.jpg" mos="" align="middle" fullscreen="" width="1543" height="957" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>GreenGeeks offers 24/7 live chat, telephone, and support tickets, although VPS help and billing issues require tickets. </p><p>My pre-sales chat received a substantive human response in about a minute. The agent clearly confirmed the refund conditions, included AI builder, data center selection, and dashboard cancellation process. In this interaction, support was fast and specific.</p><p>The agent initially said backups were available for up to 48 hours, then corrected the answer and linked the policy. GreenGeeks aims to keep around 30 disaster-recovery sets for shared and reseller hosting, but does not guarantee a particular restore date. Pro and Premium customers have direct restore access; Lite users can request one free manual restore per month, with additional restores at $25. </p><p>User-generated cPanel and large Softaculous backups are normally removed after 48 hours, so important sites still need an independent copy.</p><h2 class="article-body__section" id="section-greengeeks-final-verdict"><span>GreenGeeks: Final verdict</span></h2><p>GreenGeeks remains the clearest mainstream choice for buyers who put environmental commitments first. The 300% renewable-energy certificate match is unusually well explained, while cPanel, email, app installers, the AI builder, four data centers, and responsive support make the shared plans practical as well as green. </p><p>Steep renewals, inconsistent Lite information, and our poor load-test result prevent a stronger score. 3.5 stars remains appropriate: best-in-class environmental credentials, but an average overall hosting proposition.</p><h2 class="article-body__section" id="section-greengeeks-faqs"><span>GreenGeeks FAQs</span></h2><section class="article__schema-question"><h3>What payment types does GreenGeeks support?</h3><article class="article__schema-answer"><p>The initial purchase can be paid by major credit or debit card. PayPal becomes available as a payment method after the initial purchase.</p></article></section><section class="article__schema-question"><h3>Does GreenGeeks offer refunds?</h3><article class="article__schema-answer"><p>Initial shared, reseller, and VPS hosting charges are covered by a 30-day guarantee. Domains, setup fees, add-ons, dedicated servers, and renewals are excluded. A free-domain registration fee may be deducted from the refund.</p></article></section><section class="article__schema-question"><h3>Does GreenGeeks have an uptime guarantee? </h3><article class="article__schema-answer"><p>Yes. GreenGeeks advertises 99.9% network uptime and has an SLA credit policy. Confirmed scheduled downtime is credited at the hosting rate; unscheduled or emergency downtime is credited at three times that rate. Claims must be requested within seven days, and several exclusions apply.</p></article></section><section class="article__schema-question"><h3>Where are GreenGeeks’ data centers?</h3><article class="article__schema-answer"><p>GreenGeeks lists Chicago, Montreal, Amsterdam, and Singapore, with all four shown as available for hosting. Customers can choose the location nearest their main audience.</p></article></section><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:839px;"><p class="vanilla-image-block" style="padding-top:67.82%;"><img id="G5heWtGJHAEwQ3KYpEWtfL" name="greengeeks-data-center-locations" alt="GreenGeeks data centers" src="https://cdn.mos.cms.futurecdn.net/G5heWtGJHAEwQ3KYpEWtfL-1920-80.jpg" mos="" align="middle" fullscreen="" width="839" height="569" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><section class="article__schema-question"><h3>What is my GreenGeeks IP address?</h3><article class="article__schema-answer"><p>Open the GreenGeeks Dashboard, select the hosting account, and choose Manage. The server IP appears in the account's server information.</p></article></section><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:970px;"><p class="vanilla-image-block" style="padding-top:56.19%;"><img id="aEx5nJ2qb9eYNDSHZpHSnB" name="FAQ-IPAddress.jpg" alt="GreenGeeks IP address" src="https://cdn.mos.cms.futurecdn.net/aEx5nJ2qb9eYNDSHZpHSnB-1920-80.jpg" mos="" align="middle" fullscreen="" width="970" height="545" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GreenGeeks)</span></figcaption></figure><section class="article__schema-question"><h3>What are GreenGeeks' nameservers?</h3><article class="article__schema-answer"><p>GreenGeeks currently recommends NS1.GREENGEEKS.NET and NS2.GREENGEEKS.NET. Enter them at the registrar that manages the domain.</p></article></section><section class="article__schema-question"><h3>How do I cancel a GreenGeeks product?</h3><article class="article__schema-answer"><p>In the Dashboard, open the relevant service and disable auto-renewal to generate a cancellation request. GreenGeeks says this should be done at least five business days before renewal; billing can occur 24 hours before the renewal date. Cancel Now terminates service immediately, so download the site and backups first.</p></article></section> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/reviews/greengeeks</link>
                                                                            <description>
                            <![CDATA[ We tested out GreenGeeks and found a feature-rich shared host with best-in-class green credentials, but steep renewals and troubling results in our load test. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Xuns7ACCL5pq7cps9zPDcM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/G3eNc8vtPdyRhzy9LbpUaJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 09:48:52 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Website Hosting]]></category>
                                                    <category><![CDATA[Pro]]></category>
                                                                                                                    <dc:creator><![CDATA[ Mirza Bahic ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/G3eNc8vtPdyRhzy9LbpUaJ-1920-80.jpg">
                                                            <media:credit><![CDATA[GreenGeeks]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[GreenGeeks web hosting homepage screenshot]]></media:description>                                                            <media:text><![CDATA[GreenGeeks web hosting homepage screenshot]]></media:text>
                                <media:title type="plain"><![CDATA[GreenGeeks web hosting homepage screenshot]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/G3eNc8vtPdyRhzy9LbpUaJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Founded in 2008, GreenGeeks offers shared, WordPress, WooCommerce, reseller, VPS, and dedicated hosting. Its defining feature is not a proprietary control panel or unusual hosting architecture, but a 300% renewable-energy certificate match and tree planting alongside conventional hosting tools. It's an interesting pitch, so we tested it out to see how it fares among the <a href="https://www.techradar.com/web-hosting/best-web-hosting-service-websites" target="_blank">best web hosting services</a>.</p><h2 class="article-body__section" id="section-greengeeks-pricing-plans"><span>GreenGeeks: Pricing &amp; plans</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1452px;"><p class="vanilla-image-block" style="padding-top:55.44%;"><img id="YsiZcNHsepVt2mUq9atSgY" name="greengeeks-hosting-types" alt="GreenGeeks web hosting options" src="https://cdn.mos.cms.futurecdn.net/YsiZcNHsepVt2mUq9atSgY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1452" height="805" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Shared hosting is the main attraction, with WordPress and WooCommerce packages built on the same platform. Reseller hosting targets agencies, while VPS customers can choose four self-managed or three managed tiers. Dedicated servers start at $169 a month and are ordered through sales.</p><h2 id="greengeeks-shared-hosting">GreenGeeks shared hosting</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:970px;"><p class="vanilla-image-block" style="padding-top:56.60%;"><img id="bTCHAcGncNDyN6w2ZAGGAj" name="GreenGeeks_shared_hosting_pricing" alt="Testing out green web hosting platform GreenGeeks" src="https://cdn.mos.cms.futurecdn.net/bTCHAcGncNDyN6w2ZAGGAj-1920-80.png" mos="" align="middle" fullscreen="" width="970" height="549" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GreenGeeks // Future)</span></figcaption></figure><p>Lite costs $2.95 a month for the first 12-month term, paid as $35.40 upfront, and renews at $13.95. It includes 25GB of storage, unmetered traffic, email, SSL, CDN, a first-year domain, migration, cPanel, Git, SSH, staging, and the AI builder. There is one unresolved problem: GreenGeeks' main pricing page currently advertises five websites, while its dedicated shared-hosting page and support table still say one. Buyers needing more than one site should confirm the limit before ordering.</p><p>Pro costs $4.95 a month initially and $18.95 on renewal, with unlimited websites, 50GB of storage, on-demand restores, priority support, and a WordPress repair tool. Premium rises from $8.95 to $30.95, increases storage to 100GB, and adds a dedicated IP, AlphaSSL, and Redis object caching. Renewal prices are around 3.5 to 4.7 times the introductory rates, making Pro the most balanced option but long-term value less convincing.</p><p>The 30-day money-back guarantee covers initial shared, reseller, and VPS hosting charges, but not domains, setup fees, add-ons, or renewals. In my sales chat, the agent twice confirmed that a $35.40 Lite purchase using an existing domain and no paid extras would be fully refundable if canceled within 30 days.</p><h2 id="greengeeks-wordpress-hosting">GreenGeeks WordPress hosting </h2><p>GreenGeeks' <a href="https://www.techradar.com/news/best-wordpress-hosting-providers" target="_blank">WordPress hosting</a> uses the same Lite, Pro, and Premium prices and resources as shared hosting. All tiers include installation, migration, automatic updates, LiteSpeed Cache, WP-CLI, SSH, staging, and Git; Pro and Premium add priority support and the repair tool. These are useful conveniences, but this remains optimized shared hosting rather than a specialist managed WordPress platform with isolated resources or dedicated WordPress support.</p><h2 id="greengeeks-vps-hosting">GreenGeeks VPS hosting </h2><p>The four self-managed VPS plans start at $9.99 a month for 4GB of RAM, two vCPUs, 80GB of NVMe storage, and unmetered transfer, renewing at $19.99. The 8GB, 16GB, and 32GB tiers initially cost $19.99, $39.99, and $59.99, then renew at $39.99, $79.99, and $109.99. Customers handle the operating system, patches, software, and backups.</p><p>Managed VPS starts at $69.95 a month for four vCPUs, 4GB of RAM, and 75GB of SSD storage. The 8GB and 16GB plans cost $129.95 and $179.95. They include cPanel Solo, a dedicated IP, migration, DDoS protection, monitoring, operating-system updates, and security patching. GreenGeeks does not automatically back up VPS servers: self-managed customers arrange their own solution, while managed customers can configure cPanel backups if they have sufficient storage.</p><p>For more alternatives, see our guide to the<a href="https://www.techradar.com/news/best-vps-hosting" target="_blank"> best VPS hosting services</a>.</p><h2 id="greengeeks-green-hosting">GreenGeeks green hosting</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:970px;"><p class="vanilla-image-block" style="padding-top:57.42%;"><img id="sxeecVUHTGR6vQG2p53y9j" name="GreenGeeks_green_energy_commitment" alt="Testing out green web hosting platform GreenGeeks" src="https://cdn.mos.cms.futurecdn.net/sxeecVUHTGR6vQG2p53y9j-1920-80.png" mos="" align="middle" fullscreen="" width="970" height="557" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GreenGeeks // Future)</span></figcaption></figure><p>GreenGeeks' environmental program is its best-in-class feature. It works with the Bonneville Environmental Foundation to purchase renewable energy certificates equal to three times the electricity included in its annual calculation. Electricity still comes from each data center's local grid, so this is an energy-matching program rather than a claim that every facility runs directly on renewables.</p><p>The company has been an EPA Green Power Partner since 2009 and works with One Tree Planted to plant a tree for each new hosting account; it reports more than 50,000 trees planted. Renewable certificates do not eliminate emissions, but the 300% match, long-running partnerships, and explanation of the local-grid limitation make this commitment more transparent than most green-hosting claims. See our guide to the<a href="https://www.techradar.com/web-hosting/best-green-web-hosting" target="_blank"> best green web hosting</a>.</p><h2 class="article-body__section" id="section-greengeeks-website-builder"><span>GreenGeeks: Website builder</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1155px;"><p class="vanilla-image-block" style="padding-top:57.32%;"><img id="eVGs4USWAQyXF5Hw3J9qqd" name="greengeeks-ai-website-builder" alt="Screenshot of a demo of GreenGeeks AI website builder" src="https://cdn.mos.cms.futurecdn.net/eVGs4USWAQyXF5Hw3J9qqd-1920-80.jpg" mos="" align="middle" fullscreen="" width="1155" height="662" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">GreenGeeks has followed the trend with its newly introduced AI-driven website builder. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The AI WordPress builder is included at no extra cost. It asks about the site, goals, tone, and preferred structure, then generates pages, text, imagery, and design options that can be customized in WordPress. </p><p>In our hands-on testing it offered a quick, approachable starting point. It is not a standalone service: users select WordPress + AI during WordPress installation. It may not be the <a href="https://www.techradar.com/news/the-best-website-builder" target="_blank">best website builder</a> for a lot of sites, but it gets the job done easily enough. </p><h2 class="article-body__section" id="section-greengeeks-ecommerce-store"><span>GreenGeeks: eCommerce store</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1255px;"><p class="vanilla-image-block" style="padding-top:63.82%;"><img id="RmgteWju8r5S7EW374EQih" name="woocommerce" alt="Web store WooCommerce" src="https://cdn.mos.cms.futurecdn.net/RmgteWju8r5S7EW374EQih-1920-80.jpg" mos="" align="middle" fullscreen="" width="1255" height="801" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>GreenGeeks has a <a href="https://www.techradar.com/best/woocommerce-hosting" target="_blank">WooCommerce hosting</a> range which is very capable of building a top-quality web store (WooCommerce is one of the best ecommerce platforms around). </p><p>WooCommerce is available on every shared tier, but these packages use the same underlying platform and prices as regular shared hosting. Premium is the strongest store option because it adds a dedicated IP, AlphaSSL, 100GB of storage, and Redis. </p><p>GreenGeeks can install WooCommerce, but its support policy does not extend to developing or deeply debugging third-party applications, so the plans suit users comfortable managing the store itself.</p><h2 class="article-body__section" id="section-greengeeks-ease-of-use"><span>GreenGeeks: Ease of use</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1850px;"><p class="vanilla-image-block" style="padding-top:44.43%;"><img id="WoVRAHCyPYxFXpJEsjXSMk" name="greengeeks-customer-dashboard" alt="screenshot of GreenGeeks customer dashboard" src="https://cdn.mos.cms.futurecdn.net/WoVRAHCyPYxFXpJEsjXSMk-1920-80.jpg" mos="" align="middle" fullscreen="" width="1850" height="822" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Our hands-on testing found GreenGeeks straightforward to navigate. The custom dashboard keeps websites, plans, domains, billing, and support in a simple sidebar, while cPanel handles email, domains, databases, files, and advanced settings. </p><p>WordPress can be installed from the dashboard, and app installers handle more than 150 other applications. Beginners get a cleaner front end without depriving experienced users of cPanel.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1506px;"><p class="vanilla-image-block" style="padding-top:47.88%;"><img id="us6kKtWb6tnkeTBmYYnDMJ" name="greengeeks-app-installer" alt="screenshot of the App installer at GreenGeeks" src="https://cdn.mos.cms.futurecdn.net/us6kKtWb6tnkeTBmYYnDMJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1506" height="721" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-greengeeks-speed"><span>GreenGeeks: Speed</span></h2><p>Performance was the biggest weakness in our shared-hosting test. The WordPress benchmark returned an overall score of 4.7; database and several text operations were respectable, but file handling, persistent object caching, and some WordPress operations pulled the result down. These findings apply to the tested shared-hosting setup, not the VPS range.</p><div ><table><caption>WordPress benchmark testing</caption><tbody><tr><td class="firstcol " ><p><strong>CPU &amp; Memory</strong></p></td><td  ><p>Operations with large text data</p></td><td  ><p>8.08</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Random binary data operations</p></td><td  ><p>6.33</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Recursive mathematical calculations</p></td><td  ><p>3.86</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Iterative mathematical calculations</p></td><td  ><p>7.32</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>Floating point operations</p></td><td  ><p>1.99</p></td></tr><tr><td class="firstcol " ><p><strong>Filesystem</strong></p></td><td  ><p>Filesystem write ability</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Small file IO test</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>Small file IO test</p></td><td  ><p>2.53</p></td></tr><tr><td class="firstcol " ><p><strong>Database</strong></p></td><td  ><p>Importing large amount of data to database</p></td><td  ><p>5.09</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Simple queries on single table</p></td><td  ><p>8.05</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>Complex database queries on multiple tables</p></td><td  ><p>4.58</p></td></tr><tr><td class="firstcol " ><p><strong>Object Cache</strong></p></td><td  ><p>Persistent object cache enabled</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol " ><p><strong>WordPress Core</strong></p></td><td  ><p>Shortcode processing</p></td><td  ><p>3.84</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>WordPress Hooks</p></td><td  ><p>6.02</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>WordPress option manipulation</p></td><td  ><p>8.08</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>REGEX string processing</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Taxonomy benchmark</p></td><td  ><p>6.01</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Object capability benchmark</p></td><td  ><p>5.2</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>Content filtering</p></td><td  ><p>7.23</p></td></tr><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p>JSON manipulations</p></td><td  ><p>5.47</p></td></tr><tr><td class="firstcol " ><p><strong>Network</strong></p></td><td  ><p>Network download speed test</p></td><td  ><p>6.86</p></td></tr><tr><td class="firstcol " ><p><strong>Overall</strong></p></td><td  ><p>Your server score</p></td><td  ><p>4.7</p></td></tr></tbody></table></div><p>The Siege test was more troubling. At five concurrent users, availability was 55.42%, average response time was 6.96 seconds, and 37 transactions failed. Availability fell to 31.48% at nine users and 12.31% at 15, with 74 and 114 failures respectively. That result remains a serious warning for traffic-sensitive shared-hosting projects, even though it should not be generalized to every GreenGeeks product.</p><div ><table><caption>Siege test</caption><tbody><tr><td class="firstcol " ><p>Concurrent Users</p></td><td  ><p>5</p></td><td  ><p>9</p></td><td  ><p>15</p></td></tr><tr><td class="firstcol " ><p>Transactions</p></td><td  ><p>46</p></td><td  ><p>34</p></td><td  ><p>16</p></td></tr><tr><td class="firstcol " ><p>Availability</p></td><td  ><p>55.42</p></td><td  ><p>31.48</p></td><td  ><p>12.31</p></td></tr><tr><td class="firstcol " ><p>Elapsed time</p></td><td  ><p>299.63</p></td><td  ><p>299.24</p></td><td  ><p>299.21</p></td></tr><tr><td class="firstcol " ><p>Data transactions</p></td><td  ><p>0.31</p></td><td  ><p>0.3</p></td><td  ><p>0.15</p></td></tr><tr><td class="firstcol " ><p>Response time</p></td><td  ><p>6.96</p></td><td  ><p>8.57</p></td><td  ><p>48.41</p></td></tr><tr><td class="firstcol " ><p>Transaction rate</p></td><td  ><p>0.15</p></td><td  ><p>0.11</p></td><td  ><p>0.05</p></td></tr><tr><td class="firstcol " ><p>Throughput</p></td><td  ><p>0</p></td><td  ><p>0</p></td><td  ><p>0</p></td></tr><tr><td class="firstcol " ><p>Concurrency</p></td><td  ><p>1.07</p></td><td  ><p>0.97</p></td><td  ><p>2.59</p></td></tr><tr><td class="firstcol " ><p>Successful transactions</p></td><td  ><p>55</p></td><td  ><p>46</p></td><td  ><p>106</p></td></tr><tr><td class="firstcol " ><p>Failed transactions</p></td><td  ><p>37</p></td><td  ><p>74</p></td><td  ><p>114</p></td></tr><tr><td class="firstcol " ><p>Longest transaction</p></td><td  ><p>37.2</p></td><td  ><p>22.27</p></td><td  ><p>49.97</p></td></tr><tr><td class="firstcol " ><p>Shortest transaction</p></td><td  ><p>0.04</p></td><td  ><p>0.04</p></td><td  ><p>0.04</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-greengeeks-support"><span>GreenGeeks: Support</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1543px;"><p class="vanilla-image-block" style="padding-top:62.02%;"><img id="okrc4DozBbKYUeHwfY4m9d" name="greengeeks-contact" alt="GreenGeeks support page" src="https://cdn.mos.cms.futurecdn.net/okrc4DozBbKYUeHwfY4m9d-1920-80.jpg" mos="" align="middle" fullscreen="" width="1543" height="957" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>GreenGeeks offers 24/7 live chat, telephone, and support tickets, although VPS help and billing issues require tickets. </p><p>My pre-sales chat received a substantive human response in about a minute. The agent clearly confirmed the refund conditions, included AI builder, data center selection, and dashboard cancellation process. In this interaction, support was fast and specific.</p><p>The agent initially said backups were available for up to 48 hours, then corrected the answer and linked the policy. GreenGeeks aims to keep around 30 disaster-recovery sets for shared and reseller hosting, but does not guarantee a particular restore date. Pro and Premium customers have direct restore access; Lite users can request one free manual restore per month, with additional restores at $25. </p><p>User-generated cPanel and large Softaculous backups are normally removed after 48 hours, so important sites still need an independent copy.</p><h2 class="article-body__section" id="section-greengeeks-final-verdict"><span>GreenGeeks: Final verdict</span></h2><p>GreenGeeks remains the clearest mainstream choice for buyers who put environmental commitments first. The 300% renewable-energy certificate match is unusually well explained, while cPanel, email, app installers, the AI builder, four data centers, and responsive support make the shared plans practical as well as green. </p><p>Steep renewals, inconsistent Lite information, and our poor load-test result prevent a stronger score. 3.5 stars remains appropriate: best-in-class environmental credentials, but an average overall hosting proposition.</p><h2 class="article-body__section" id="section-greengeeks-faqs"><span>GreenGeeks FAQs</span></h2><section class="article__schema-question"><h3>What payment types does GreenGeeks support?</h3><article class="article__schema-answer"><p>The initial purchase can be paid by major credit or debit card. PayPal becomes available as a payment method after the initial purchase.</p></article></section><section class="article__schema-question"><h3>Does GreenGeeks offer refunds?</h3><article class="article__schema-answer"><p>Initial shared, reseller, and VPS hosting charges are covered by a 30-day guarantee. Domains, setup fees, add-ons, dedicated servers, and renewals are excluded. A free-domain registration fee may be deducted from the refund.</p></article></section><section class="article__schema-question"><h3>Does GreenGeeks have an uptime guarantee? </h3><article class="article__schema-answer"><p>Yes. GreenGeeks advertises 99.9% network uptime and has an SLA credit policy. Confirmed scheduled downtime is credited at the hosting rate; unscheduled or emergency downtime is credited at three times that rate. Claims must be requested within seven days, and several exclusions apply.</p></article></section><section class="article__schema-question"><h3>Where are GreenGeeks’ data centers?</h3><article class="article__schema-answer"><p>GreenGeeks lists Chicago, Montreal, Amsterdam, and Singapore, with all four shown as available for hosting. Customers can choose the location nearest their main audience.</p></article></section><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:839px;"><p class="vanilla-image-block" style="padding-top:67.82%;"><img id="G5heWtGJHAEwQ3KYpEWtfL" name="greengeeks-data-center-locations" alt="GreenGeeks data centers" src="https://cdn.mos.cms.futurecdn.net/G5heWtGJHAEwQ3KYpEWtfL-1920-80.jpg" mos="" align="middle" fullscreen="" width="839" height="569" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><section class="article__schema-question"><h3>What is my GreenGeeks IP address?</h3><article class="article__schema-answer"><p>Open the GreenGeeks Dashboard, select the hosting account, and choose Manage. The server IP appears in the account's server information.</p></article></section><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:970px;"><p class="vanilla-image-block" style="padding-top:56.19%;"><img id="aEx5nJ2qb9eYNDSHZpHSnB" name="FAQ-IPAddress.jpg" alt="GreenGeeks IP address" src="https://cdn.mos.cms.futurecdn.net/aEx5nJ2qb9eYNDSHZpHSnB-1920-80.jpg" mos="" align="middle" fullscreen="" width="970" height="545" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GreenGeeks)</span></figcaption></figure><section class="article__schema-question"><h3>What are GreenGeeks' nameservers?</h3><article class="article__schema-answer"><p>GreenGeeks currently recommends NS1.GREENGEEKS.NET and NS2.GREENGEEKS.NET. Enter them at the registrar that manages the domain.</p></article></section><section class="article__schema-question"><h3>How do I cancel a GreenGeeks product?</h3><article class="article__schema-answer"><p>In the Dashboard, open the relevant service and disable auto-renewal to generate a cancellation request. GreenGeeks says this should be done at least five business days before renewal; billing can occur 24 hours before the renewal date. Cancel Now terminates service immediately, so download the site and backups first.</p></article></section>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ SteelSeries Rival Pro review: peak performance with endless playtime ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-steelseries-rival-pro-review"><span>SteelSeries Rival Pro review</span></h2><p>The SteelSeries Rival Pro feels as if it's really pushing the boundaries of what a gaming mouse can do. Even when I glanced at the specs sheet, I was mightily impressed with the features on offer: interference-free ‘true’ 8K polling, hot-swappable batteries for endless play, and 42,000 DPI sensitivity.</p><p>But it’s one thing having a good set of specs, and another performing well in practice. So just how good is the SteelSeries Rival Pro? And is it worth its asking price of $179.99 / £169.99 (about AU$250)? Here’s my verdict after hours of testing.</p><p>First of all, this mouse feels incredibly comfortable to use — in fact, it's up there with some of the <a href="https://www.techradar.com/news/computing-components/peripherals/what-mouse-10-best-mice-compared-1027809">best mice</a> as far as ergonomics are concerned.</p><p>It strikes a happy medium in terms of size, and it fits perfectly in my hand — though it's worth noting that this model is for right-handers only, whereas the ambidextrous form of the <a href="https://www.techradar.com/computing/mice/steelseries-sensei-pro-review">SteelSeries Sensei Pro</a> is suited to lefties and righties alike. I use a palm grip style, but the model is also designed to suit those who prefer claw or fingertip as well. I also love how lightweight the Rival Pro is. At 1.9oz / 53g, making sharp movements and adjustments feels supremely swift.</p><p>The mouse has a lightly textured matte finish that feels, and indeed looks, pretty nice too. Sure, the matte black finish makes it a little prone to picking up fingerprints, but this is more of a nitpick, and this is likely to be less of an issue if you opt for the alternate white colorway. </p><p>And when it comes to performance, the SteelSeries Rival Pro is equally dazzling. I used it to play <em>Cyberpunk 2077 </em>with the LG UltraGear 25G590B 1000Hz gaming monitor, and was astonished by the sheer responsiveness and precision on offer. Aiming felt incredibly stable and accurate, turning the camera felt super-sharp and reactive, and the high-quality optical switches enabled me to let shots fly snappily and reliably. The mechanical scroll wheel also felt very tactile, with ridges offering great grip.</p><p>Said optical switches feel great to use for gaming or general productivity, and their mechanical, satisfying sound never felt grating or overzealous to me. Yes, they’re not the quietest switches, so if you prefer a more subdued sound then maybe look elsewhere, but their quality is undeniable — SteelSeries even claims that it tested them for 100 million clicks, so you’ll get plenty of mileage out of this mouse.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4SJw7SXpAk6H3vWUVMPGNG" name="Steelseries_RivalPro_008.JPG" alt="USB-C cable being inserted into the SteelSeries Rival Pro base station" src="https://cdn.mos.cms.futurecdn.net/4SJw7SXpAk6H3vWUVMPGNG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Feature-wise, this mouse has just about everything you could want. The GG app and web app open up all sorts of customization for binds, sensitivity, polling rate, and power management. I mainly used the web app, and found it incredibly easy to use and make small tweaks here and there. </p><p>Perhaps the real standout feature, though, is the ‘infinite power system’. You get two batteries with the Rival Pro: one that pops into the mouse itself, and another that you place onto the Ultra Wideband base station. The batteries are hot-swappable, and when your mouse runs flat, you can swiftly substitute in the battery from the base station (which charges while plugged in). As a result, you’ll quite literally never run out of battery — ideal for competitive gamers. </p><p>While the Rival Pro mouse lacks a USB port for wired play, this infinite power system means you’ll honestly never need it — totally removing any additional weight or awkwardness that comes with a cable connection.</p><p>With an 8K polling rate, SuperSync — which enables you to independently control tracking and clicking polling rates, and aim tools to boot, it truly feels like the perfect gaming mouse. But are there any real downsides?</p><p>Well, one thing could prove to put some gamers off: the Rival Pro’s price. At $179.99 / £169.99 (about AU$250), this model is certainly a premium product. Is it worth it? If you want peak performance and essentially endless battery life, then yes. But there are plenty of strong options for less than $100 / £100 out there. </p><p>All in all, though, the SteelSeries Rival Pro is an innovative, ergonomic gaming mouse with exceptional performance. If you’re looking to take your game up a notch, look no further than this model.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s2NhEutaxCM5BFFo5xKgLG" name="Steelseries_RivalPro_006.JPG" alt="Scroll wheel on the SteelSeries Rival Pro" src="https://cdn.mos.cms.futurecdn.net/s2NhEutaxCM5BFFo5xKgLG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-steelseries-rival-pro-review-price-release-date"><span>SteelSeries Rival Pro review: price &amp; release date</span></h2><ul><li><strong>Priced at $179.99 / £169.99 (about AU$250)</strong></li><li><strong>Released in October 2026</strong></li></ul><p>The SteelSeries Rival Pro was released in October 2026, alongside three other models: the SteelSeries Rival Pro Mini, as well as the SteelSeries Sensei Pro and Sensei Pro Mini. The Rival Pro is priced at $179.99 / £169.99 (about AU$250). That lands it firmly in the premium category, with rivals including the <a href="https://www.techradar.com/computing/mice/logitech-pro-x2-superstrike-review">Logitech G Pro X2 Superstrike</a> and the <a href="https://www.techradar.com/computing/mice/razer-deathadder-v4-pro">Razer DeathAdder V4 Pro</a>.</p><h2 class="article-body__section" id="section-steelseries-rival-pro-review-specs"><span>SteelSeries Rival Pro review: specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Interface</p></td><td  ><p>Ultra Wideband Wireless (6GHz and above)</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>Up to 60 hours 1K / 16 hours 8K</p></td></tr><tr><td class="firstcol " ><p>Sensor</p></td><td  ><p>TrueMove 42K Pro Sensor</p></td></tr><tr><td class="firstcol " ><p>Polling rate</p></td><td  ><p>8KHz (with 9KHz overpolling)</p></td></tr><tr><td class="firstcol " ><p>Buttons</p></td><td  ><p>6</p></td></tr><tr><td class="firstcol " ><p>DPI</p></td><td  ><p>42,000</p></td></tr><tr><td class="firstcol " ><p>Switches</p></td><td  ><p>Optical</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>4.95 x 2.69 x 1.66 inches / 125.7 x 68.2 x 42.2mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>1.9oz / 53g</p></td></tr></tbody></table></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zdak5qzZfwQu6VjKZfx8NG" name="Steelseries_RivalPro_011.JPG" alt="SteelSeries Rival Pro with various accessories" src="https://cdn.mos.cms.futurecdn.net/zdak5qzZfwQu6VjKZfx8NG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-should-i-buy-the-steelseries-rival-pro"><span>Should I buy the SteelSeries Rival Pro?</span></h2><div ><table><thead><tr><th class="firstcol " ><p><strong>Attribute</strong></p></th><th  ><p><strong>Notes</strong></p></th><th  ><p><strong>Score</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Excellent ergonomics, lightweight, great build quality, a little prone to fingerprints.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>True 8K polling with SuperSync, 42K DPI sensitivity, essentially endless battery life.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Undoubtedly pricey, but has the performance to back it up.</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-8">Buy it if…</h2><div class="product"><p><strong>You want unbeatable gaming features</strong><br />If you’re a pro gamer or an enthusiast, then the features available on the Rival Pro are sure to appeal to you. True 8K polling, 42K DPI sensitivity, and detailed customization options are perfectly suited to competitive play.</p></div><div class="product"><p><strong>You want unlimited battery life</strong><br />The Rival Pro has hot-swappable batteries, with one always on charge in the UWB base station. Apart from the five seconds it takes to swap the two batteries, you’ll get unlimited playtime, which is great for gaming tournaments or everyday use.</p></div><h2 id="don-t-buy-it-if-3">Don’t buy it if…</h2><div class="product"><p><strong>You’re not playing particularly intensive games</strong><br />For a lot of gamers, the features on board are slightly overkill, so if you’re not playing games that require snappy response times, then you’ll probably be better off with a cheaper option.</p></div><div class="product"><p><strong>You’re on a budget</strong><br />Leading off from that, the Rival Pro is certainly not a model I’d recommend to anyone on a budget. While its performance ensures its still solid value overall, it's hard to look past that steep asking price.</p></div><h2 class="article-body__section" id="section-steelseries-rival-pro-review-also-consider"><span>SteelSeries Rival Pro review: also consider</span></h2><div class="product"><p><strong>Logitech G Pro X2 Superstrike</strong><br />We were blown away by this Logitech mouse when we tested it earlier this year. Its ultra-low click and sensor latency, brilliant switches, and impressive build quality are hard to beat — even if it's pretty pricey. Read our full <a href="https://www.techradar.com/computing/mice/logitech-pro-x2-superstrike-review" data-dimension112="f61a5972-d21c-11f1-900b-55f5dcd17f91" data-action="Deal Block" data-label="Logitech G Pro X2 Superstrike review" data-dimension48="Logitech G Pro X2 Superstrike review" data-dimension25="">Logitech G Pro X2 Superstrike review</a>.</p></div><div class="product"><p><strong>Razer DeathAdder V4 Pro</strong><br />The Razer DeathAdder V4 Pro is a top-tier gaming mouse, boasting flawless performance, a great optical scroll wheel, and beautiful ergonomics. It's similarly priced to this SteelSeries rival, but we’ve seen it pop up on sale from time to time. Read our full <a href="https://www.techradar.com/computing/mice/razer-deathadder-v4-pro" data-dimension112="f61a59d6-d21c-11f1-8c77-b1259611d121" data-action="Deal Block" data-label="Razer DeathAdder V4 Pro review" data-dimension48="Razer DeathAdder V4 Pro review" data-dimension25="">Razer DeathAdder V4 Pro review</a>.</p></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Q9ioGxfx2MVtwF6E9K4EbG" name="Steelseries_RivalPro_013.JPG" alt="SteelSeries Rival Pro base station balanced on block" src="https://cdn.mos.cms.futurecdn.net/Q9ioGxfx2MVtwF6E9K4EbG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-how-i-tested-the-steelseries-rival-pro"><span>How I tested the SteelSeries Rival Pro</span></h2><ul><li><strong>Tested intensively for hours</strong></li><li><strong>Used for gaming and general productivity</strong></li><li><strong>Made use of all features in the GG web app</strong></li></ul><p>I spent many hours testing the SteelSeries Rival Pro, during which time I used it for gaming and general productivity.</p><p>When gaming, I paired the mouse with the LG UltraGear 25G590B 1000Hz gaming monitor to get the best performance possible. I made sure to play a range of games, but mainly tested the mouse with the PC version of <em>Cyberpunk 2077</em>. On top of this, I made sure to try out all of the mouse’s features and customization options via the GG web app.</p><p>More generally, I’ve spent years testing gadgets here at TechRadar, where I serve as a Senior Reviews Writer. I’ve reviewed everything from premium Dolby Atmos soundbars to gaming software, and have tested a number of mice, including the recently released <a href="https://www.techradar.com/computing/mice/logitech-mobi-fold-review">Logitech Mobi Fold</a>.</p><ul><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar’s reviews guarantee</a></li><li><em>First reviewed: October 2026</em></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/computing/mice/steelseries-rival-pro-review</link>
                                                                            <description>
                            <![CDATA[ The SteelSeries Rival Pro is an exemplary model with impeccable battery life, excellent ergonomics, and peak performance. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">sKZXWUmzKxjx79NwisyBom</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5GfkFeJHkX6KUPBDc49wVE-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 01:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mice]]></category>
                                                    <category><![CDATA[Gaming Accessories]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Peripherals & Accessories]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                <author><![CDATA[ harry.padoan@futurenet.com (Harry Padoan) ]]></author>                    <dc:creator><![CDATA[ Harry Padoan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/995EkuqRKUTUjvMk7ataFi-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Harry is a Senior Reviews Writer for TechRadar. He reviews everything from party speakers to wall chargers and has a particular interest in the worlds of audio and gaming.&lt;/p&gt;&lt;p&gt;Prior to joining TechRadar, Harry was a journalist covering stories from the telecoms industry, drilling into areas such as innovation, acquisitions, and sustainability.&lt;/p&gt;&lt;p&gt;When he isn’t testing the newest tech, Harry can probably be found listening to deep house, playing JRPGs, or watching his beloved Tottenham Hotspur.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5GfkFeJHkX6KUPBDc49wVE-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Man holding the Steelseries Rival Pro]]></media:description>                                                            <media:text><![CDATA[Man holding the Steelseries Rival Pro]]></media:text>
                                <media:title type="plain"><![CDATA[Man holding the Steelseries Rival Pro]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5GfkFeJHkX6KUPBDc49wVE-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-steelseries-rival-pro-review"><span>SteelSeries Rival Pro review</span></h2><p>The SteelSeries Rival Pro feels as if it's really pushing the boundaries of what a gaming mouse can do. Even when I glanced at the specs sheet, I was mightily impressed with the features on offer: interference-free ‘true’ 8K polling, hot-swappable batteries for endless play, and 42,000 DPI sensitivity.</p><p>But it’s one thing having a good set of specs, and another performing well in practice. So just how good is the SteelSeries Rival Pro? And is it worth its asking price of $179.99 / £169.99 (about AU$250)? Here’s my verdict after hours of testing.</p><p>First of all, this mouse feels incredibly comfortable to use — in fact, it's up there with some of the <a href="https://www.techradar.com/news/computing-components/peripherals/what-mouse-10-best-mice-compared-1027809">best mice</a> as far as ergonomics are concerned.</p><p>It strikes a happy medium in terms of size, and it fits perfectly in my hand — though it's worth noting that this model is for right-handers only, whereas the ambidextrous form of the <a href="https://www.techradar.com/computing/mice/steelseries-sensei-pro-review">SteelSeries Sensei Pro</a> is suited to lefties and righties alike. I use a palm grip style, but the model is also designed to suit those who prefer claw or fingertip as well. I also love how lightweight the Rival Pro is. At 1.9oz / 53g, making sharp movements and adjustments feels supremely swift.</p><p>The mouse has a lightly textured matte finish that feels, and indeed looks, pretty nice too. Sure, the matte black finish makes it a little prone to picking up fingerprints, but this is more of a nitpick, and this is likely to be less of an issue if you opt for the alternate white colorway. </p><p>And when it comes to performance, the SteelSeries Rival Pro is equally dazzling. I used it to play <em>Cyberpunk 2077 </em>with the LG UltraGear 25G590B 1000Hz gaming monitor, and was astonished by the sheer responsiveness and precision on offer. Aiming felt incredibly stable and accurate, turning the camera felt super-sharp and reactive, and the high-quality optical switches enabled me to let shots fly snappily and reliably. The mechanical scroll wheel also felt very tactile, with ridges offering great grip.</p><p>Said optical switches feel great to use for gaming or general productivity, and their mechanical, satisfying sound never felt grating or overzealous to me. Yes, they’re not the quietest switches, so if you prefer a more subdued sound then maybe look elsewhere, but their quality is undeniable — SteelSeries even claims that it tested them for 100 million clicks, so you’ll get plenty of mileage out of this mouse.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4SJw7SXpAk6H3vWUVMPGNG" name="Steelseries_RivalPro_008.JPG" alt="USB-C cable being inserted into the SteelSeries Rival Pro base station" src="https://cdn.mos.cms.futurecdn.net/4SJw7SXpAk6H3vWUVMPGNG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Feature-wise, this mouse has just about everything you could want. The GG app and web app open up all sorts of customization for binds, sensitivity, polling rate, and power management. I mainly used the web app, and found it incredibly easy to use and make small tweaks here and there. </p><p>Perhaps the real standout feature, though, is the ‘infinite power system’. You get two batteries with the Rival Pro: one that pops into the mouse itself, and another that you place onto the Ultra Wideband base station. The batteries are hot-swappable, and when your mouse runs flat, you can swiftly substitute in the battery from the base station (which charges while plugged in). As a result, you’ll quite literally never run out of battery — ideal for competitive gamers. </p><p>While the Rival Pro mouse lacks a USB port for wired play, this infinite power system means you’ll honestly never need it — totally removing any additional weight or awkwardness that comes with a cable connection.</p><p>With an 8K polling rate, SuperSync — which enables you to independently control tracking and clicking polling rates, and aim tools to boot, it truly feels like the perfect gaming mouse. But are there any real downsides?</p><p>Well, one thing could prove to put some gamers off: the Rival Pro’s price. At $179.99 / £169.99 (about AU$250), this model is certainly a premium product. Is it worth it? If you want peak performance and essentially endless battery life, then yes. But there are plenty of strong options for less than $100 / £100 out there. </p><p>All in all, though, the SteelSeries Rival Pro is an innovative, ergonomic gaming mouse with exceptional performance. If you’re looking to take your game up a notch, look no further than this model.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s2NhEutaxCM5BFFo5xKgLG" name="Steelseries_RivalPro_006.JPG" alt="Scroll wheel on the SteelSeries Rival Pro" src="https://cdn.mos.cms.futurecdn.net/s2NhEutaxCM5BFFo5xKgLG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-steelseries-rival-pro-review-price-release-date"><span>SteelSeries Rival Pro review: price &amp; release date</span></h2><ul><li><strong>Priced at $179.99 / £169.99 (about AU$250)</strong></li><li><strong>Released in October 2026</strong></li></ul><p>The SteelSeries Rival Pro was released in October 2026, alongside three other models: the SteelSeries Rival Pro Mini, as well as the SteelSeries Sensei Pro and Sensei Pro Mini. The Rival Pro is priced at $179.99 / £169.99 (about AU$250). That lands it firmly in the premium category, with rivals including the <a href="https://www.techradar.com/computing/mice/logitech-pro-x2-superstrike-review">Logitech G Pro X2 Superstrike</a> and the <a href="https://www.techradar.com/computing/mice/razer-deathadder-v4-pro">Razer DeathAdder V4 Pro</a>.</p><h2 class="article-body__section" id="section-steelseries-rival-pro-review-specs"><span>SteelSeries Rival Pro review: specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Interface</p></td><td  ><p>Ultra Wideband Wireless (6GHz and above)</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>Up to 60 hours 1K / 16 hours 8K</p></td></tr><tr><td class="firstcol " ><p>Sensor</p></td><td  ><p>TrueMove 42K Pro Sensor</p></td></tr><tr><td class="firstcol " ><p>Polling rate</p></td><td  ><p>8KHz (with 9KHz overpolling)</p></td></tr><tr><td class="firstcol " ><p>Buttons</p></td><td  ><p>6</p></td></tr><tr><td class="firstcol " ><p>DPI</p></td><td  ><p>42,000</p></td></tr><tr><td class="firstcol " ><p>Switches</p></td><td  ><p>Optical</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>4.95 x 2.69 x 1.66 inches / 125.7 x 68.2 x 42.2mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>1.9oz / 53g</p></td></tr></tbody></table></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zdak5qzZfwQu6VjKZfx8NG" name="Steelseries_RivalPro_011.JPG" alt="SteelSeries Rival Pro with various accessories" src="https://cdn.mos.cms.futurecdn.net/zdak5qzZfwQu6VjKZfx8NG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-should-i-buy-the-steelseries-rival-pro"><span>Should I buy the SteelSeries Rival Pro?</span></h2><div ><table><thead><tr><th class="firstcol " ><p><strong>Attribute</strong></p></th><th  ><p><strong>Notes</strong></p></th><th  ><p><strong>Score</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Excellent ergonomics, lightweight, great build quality, a little prone to fingerprints.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>True 8K polling with SuperSync, 42K DPI sensitivity, essentially endless battery life.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Undoubtedly pricey, but has the performance to back it up.</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-8">Buy it if…</h2><div class="product"><p><strong>You want unbeatable gaming features</strong><br />If you’re a pro gamer or an enthusiast, then the features available on the Rival Pro are sure to appeal to you. True 8K polling, 42K DPI sensitivity, and detailed customization options are perfectly suited to competitive play.</p></div><div class="product"><p><strong>You want unlimited battery life</strong><br />The Rival Pro has hot-swappable batteries, with one always on charge in the UWB base station. Apart from the five seconds it takes to swap the two batteries, you’ll get unlimited playtime, which is great for gaming tournaments or everyday use.</p></div><h2 id="don-t-buy-it-if-3">Don’t buy it if…</h2><div class="product"><p><strong>You’re not playing particularly intensive games</strong><br />For a lot of gamers, the features on board are slightly overkill, so if you’re not playing games that require snappy response times, then you’ll probably be better off with a cheaper option.</p></div><div class="product"><p><strong>You’re on a budget</strong><br />Leading off from that, the Rival Pro is certainly not a model I’d recommend to anyone on a budget. While its performance ensures its still solid value overall, it's hard to look past that steep asking price.</p></div><h2 class="article-body__section" id="section-steelseries-rival-pro-review-also-consider"><span>SteelSeries Rival Pro review: also consider</span></h2><div class="product"><p><strong>Logitech G Pro X2 Superstrike</strong><br />We were blown away by this Logitech mouse when we tested it earlier this year. Its ultra-low click and sensor latency, brilliant switches, and impressive build quality are hard to beat — even if it's pretty pricey. Read our full <a href="https://www.techradar.com/computing/mice/logitech-pro-x2-superstrike-review" data-dimension112="f61a5972-d21c-11f1-900b-55f5dcd17f91" data-action="Deal Block" data-label="Logitech G Pro X2 Superstrike review" data-dimension48="Logitech G Pro X2 Superstrike review" data-dimension25="">Logitech G Pro X2 Superstrike review</a>.</p></div><div class="product"><p><strong>Razer DeathAdder V4 Pro</strong><br />The Razer DeathAdder V4 Pro is a top-tier gaming mouse, boasting flawless performance, a great optical scroll wheel, and beautiful ergonomics. It's similarly priced to this SteelSeries rival, but we’ve seen it pop up on sale from time to time. Read our full <a href="https://www.techradar.com/computing/mice/razer-deathadder-v4-pro" data-dimension112="f61a59d6-d21c-11f1-8c77-b1259611d121" data-action="Deal Block" data-label="Razer DeathAdder V4 Pro review" data-dimension48="Razer DeathAdder V4 Pro review" data-dimension25="">Razer DeathAdder V4 Pro review</a>.</p></div><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Q9ioGxfx2MVtwF6E9K4EbG" name="Steelseries_RivalPro_013.JPG" alt="SteelSeries Rival Pro base station balanced on block" src="https://cdn.mos.cms.futurecdn.net/Q9ioGxfx2MVtwF6E9K4EbG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-how-i-tested-the-steelseries-rival-pro"><span>How I tested the SteelSeries Rival Pro</span></h2><ul><li><strong>Tested intensively for hours</strong></li><li><strong>Used for gaming and general productivity</strong></li><li><strong>Made use of all features in the GG web app</strong></li></ul><p>I spent many hours testing the SteelSeries Rival Pro, during which time I used it for gaming and general productivity.</p><p>When gaming, I paired the mouse with the LG UltraGear 25G590B 1000Hz gaming monitor to get the best performance possible. I made sure to play a range of games, but mainly tested the mouse with the PC version of <em>Cyberpunk 2077</em>. On top of this, I made sure to try out all of the mouse’s features and customization options via the GG web app.</p><p>More generally, I’ve spent years testing gadgets here at TechRadar, where I serve as a Senior Reviews Writer. I’ve reviewed everything from premium Dolby Atmos soundbars to gaming software, and have tested a number of mice, including the recently released <a href="https://www.techradar.com/computing/mice/logitech-mobi-fold-review">Logitech Mobi Fold</a>.</p><ul><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar’s reviews guarantee</a></li><li><em>First reviewed: October 2026</em></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Hisense UR9 review: impressive performance, but with a high price tag ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-two-minute-review"><span>Hisense UR9 RGB MiniLED TV: Two-minute review</span></h2><p>The Hisense UR9 is a great showcase for all that RGB LED TVs have to offer. The RGB LED tech in this TV means its able to hit a much wider range of colors than rival mini-LED TVs with more brightness. </p><p>Thanks to the fact this TV gets up to 180Hz refresh rate helps it compete with the <a href="https://www.techradar.com/news/best-gaming-tv" target="_blank">best gaming TVs</a> out there (as do features like AMD Freesync). And the color coverage and accuracy are as good as anything else you'll find on the market.</p><p>Of course, an <a href="https://www.techradar.com/televisions/the-age-of-next-gen-rgb-tvs-is-here-samsung-lg-tcl-and-hisense-have-all-revealed-models-of-the-oled-beater-tech" target="_blank">RGB TV</a> like this does suffer from some minor blooming, which the <a href="https://www.techradar.com/news/best-tv" target="_blank">best TVs</a> in the premium mid-range bracket have mostly solved. Add in the higher price tag and it’s clear that the Hisense UR9, as well as the other RGB LED TVs hitting the market, don’t offer up the same value as other QLED or mini-LED TVs in the same price range.</p><p>Like those other TVs though, it is filled to the gills with features, such as the conversational, AI-powered (albeit imperfect) Google Gemini voice assistant. Dolby Vision 2, Dolby Atmos, and other AI-powered features are also on offer.</p><p>The whole package is a bit pricey (unless you get one through Best Buy where the price has been slashed by a significant amount), but if you’re willing to throw in extra cash to be an early adopter, the Hisense UR9 is a great centerpiece to a home theater.</p><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-price-and-release-date"><span>Hisense UR9 RGB MiniLED TV review: Price and release date</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="e7Tp4d6jc3C3miU6m7qfG3" name="Hisense UR9 PS5 gaming with Madden 26" alt="Hisense UR9 PS5 gaming with Madden 26" src="https://cdn.mos.cms.futurecdn.net/e7Tp4d6jc3C3miU6m7qfG3-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Hisense UR9 showcasing its bright colors and smooth action during some Madden 26 PS5 gaming </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Release date?</strong> April 2026</li><li><strong>65-inch:</strong> $3,499.99 ($1,999 through Best Buy), £1,699, AU$2,995</li><li><strong>75-inch: </strong>$4,999.99 ($2,999 through Best Buy), £2,299, AU$3,995</li><li><strong>85-inch:</strong> $5,999.99 ($3,999 through Best Buy), £2,999, AU$4,995</li><li><strong>100-inch:</strong> $8,999.99 ($5,999.99 through Best Buy) (around £6,760 / AU$12,780)</li></ul><p>Since RGB LED TVs are the newest technology on the block, the prices are going to be a little higher than if you compare to more standard mini- or micro-LED TVs. After all, these types of TVs have only been on our collective radar since they were first introduced at CES 2025.</p><p>The Hisense UR9, released in April of 2026, has an MSRP of $3,499.99 / £1,999 / $3,999 at its smallest 65-inch size with prices going up to $8,999.99 (around £6,760 / AU$12,780) for the 100-inch, the biggest in the product line — although this size is only available in the US. It’s also available in 75- and 85-inch sizes.<br /><br />Of course, the price has dropped since its release at various retailers by a pretty significant amount, with prices of $1,699 / £1,699 / AU$2,995 for the 65-inch, $2,499 / £2,299 / AU$3,995 for the 75-inch, and $3,499 / £2,999 / AU$4,995 for the 85-inch. Finally, the 100-inch version has had a massive price drop in the US down to $4,999.99 (around £4,510 / AU$8,520).</p><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-specs"><span>Hisense UR9 RGB MiniLED TV review: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Screen type</p></td><td  ><p>RGB mini-LED</p></td></tr><tr><td class="firstcol " ><p>Refresh rate</p></td><td  ><p>180Hz</p></td></tr><tr><td class="firstcol " ><p>HDR support</p></td><td  ><p>HDR10, HDR10+, HLG, Dolby Vision</p></td></tr><tr><td class="firstcol " ><p>Smart TV</p></td><td  ><p>Google TV</p></td></tr><tr><td class="firstcol " ><p>HDMI ports</p></td><td  ><p>3x HDMI 2.1 (1x eArc), DisplayPort</p></td></tr><tr><td class="firstcol " ><p>Built-in tuner</p></td><td  ><p>ATSC 3.0 (NextGen TV), NTSC, Clear QAM</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-benchmark-results"><span>Hisense UR9 RGB MiniLED TV review: Benchmark results</span></h2><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper *, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper *:before, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper *:after, #fv-chart-1793621995295-o52s1xgav-slideshow *, #fv-chart-1793621995295-o52s1xgav-slideshow *:before, #fv-chart-1793621995295-o52s1xgav-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper, #fv-chart-1793621995295-o52s1xgav-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793621995295-o52s1xgav-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-nav-btn.disabled, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-dials-grid, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-dial-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stacked-product, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-label, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-label-space { display: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">[{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Brightness measurements",  "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-11-02T12:19:55.296Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Hisense UR9",    "TCL QM8L",    "Hisense UR8",    "HDR Filmmaker Mode (10% window)",    "HDR Standard Mode (10% window)",    "SDR Filmmaker Mode (10% window)",    "SDR Standard Mode (10% window)",    "HDR Filmmaker Mode (Fullscreen)",    "HDR Standard Mode (Fullscreen)",    "SDR Filmmaker Mode (Fullscreen)",    "SDR Standard Mode (Fullscreen)",    "HDR Filmmaker Mode",    "HDR Standard",    "SDR Filmmaker Mode",    "SDR Standard",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Hisense UR9 – HDR Filmmaker Mode (10% window)",      "value": 4370,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – HDR Filmmaker Mode (Fullscreen)",      "value": 1096,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – HDR Filmmaker Mode (10% window)",      "value": 3719,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – HDR Filmmaker Mode (Fullscreen)",      "value": 759,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – HDR Filmmaker Mode (10% window)",      "value": 2097,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – HDR Filmmaker Mode (Fullscreen)",      "value": 771,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – HDR Standard Mode (10% window)",      "value": 3003,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – HDR Standard Mode (Fullscreen)",      "value": 1124,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – HDR Standard Mode (10% window)",      "value": 3771,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – HDR Standard Mode (Fullscreen)",      "value": 795,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – HDR Standard Mode (10% window)",      "value": 2394,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – HDR Standard Mode (Fullscreen)",      "value": 767,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – SDR Filmmaker Mode (10% window)",      "value": 188,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – SDR Filmmaker Mode (Fullscreen)",      "value": 227,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – SDR Filmmaker Mode (10% window)",      "value": 229,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – SDR Filmmaker Mode (10% window)",      "value": 314,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – SDR Filmmaker Mode (Fullscreen)",      "value": 372,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – SDR Standard Mode (10% window)",      "value": 2175,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – SDR Standard Mode (Fullscreen)",      "value": 794,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – SDR Standard Mode (10% window)",      "value": 518,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – SDR Standard Mode (10% window)",      "value": 1514,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – SDR Standard Mode (Fullscreen)",      "value": 778,      "unitText": "nits"    }  ]},{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "HDR color gamut",  "description": "Closer to 100% is better. Taken using a colorimeter and test pattern generator.",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-02T12:19:55.296Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Hisense UR9",    "TCL QM8L",    "Hisense UR8",    "UHDA-P3",    "BT.2020",    "HDR Filmmaker Mode",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Hisense UR9 – UHDA-P3",      "value": 99.8,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – BT.2020",      "value": 93.1,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – UHDA-P3",      "value": 97.9,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – BT.2020",      "value": 90.3,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – UHDA-P3",      "value": 145,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – BT.2020",      "value": 95.1,      "unitText": ""    }  ]},{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Picture accuracy",  "description": "A lower score is better. Taken using a colorimeter and test pattern generator.",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-02T12:19:55.296Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Hisense UR9",    "TCL QM8L",    "Hisense UR8",    "Delta-E",    "SDR Delta-E",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Hisense UR9 – Delta-E",      "value": 2.7,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – Delta-E",      "value": 3.7,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – Delta-E",      "value": 7.9,      "unitText": ""    }  ]},{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Input lag",  "description": "Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-02T12:19:55.296Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Hisense UR9",    "TCL QM8L",    "Hisense UR8",    "4K 60Hz",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Hisense UR9 – 4K 60Hz",      "value": 12,      "unitText": "ms"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – 4K 60Hz",      "value": 9.5,      "unitText": "ms"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – 4K 60Hz",      "value": 11.7,      "unitText": "ms"    }  ]}]</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-02T12:19:55.296Z","state":{"data":[{"productName":"Hisense UR9","attribute":"4K 60Hz","value":12,"unit":"ms","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"4K 60Hz","value":9.5,"unit":"ms","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"4K 60Hz","value":11.7,"unit":"ms","site":"TechRadar"}],"products":["Hisense UR9","TCL QM8L","Hisense UR8"],"attributes":["4K 60Hz"],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Input lag","subhead":"Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[{"id":"slide-1793621824168","snapshot":{"selectedProducts":["Hisense UR9","TCL QM8L","Hisense UR8"],"selectedPrimaryProduct":"Hisense UR9","selectedAttributes":["HDR Filmmaker Mode (10% window)","HDR Standard Mode (10% window)","SDR Filmmaker Mode (10% window)","SDR Standard Mode (10% window)","HDR Filmmaker Mode (Fullscreen)","HDR Standard Mode (Fullscreen)","SDR Filmmaker Mode (Fullscreen)","SDR Standard Mode (Fullscreen)"],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["HDR Filmmaker Mode (10% window)","HDR Filmmaker Mode (Fullscreen)"]},{"name":"Group 2","attributes":["HDR Standard Mode (10% window)","HDR Standard Mode (Fullscreen)"]},{"name":"Group 3","attributes":["SDR Filmmaker Mode (10% window)","SDR Filmmaker Mode (Fullscreen)"]},{"name":"Group 4","attributes":["SDR Standard Mode (10% window)","SDR Standard Mode (Fullscreen)"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Dropdown","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Brightness measurements","subhead":"Subhead to describe the test and what's being measured and why","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"dataOverride":[{"productName":"Hisense UR9","attribute":"HDR Filmmaker Mode (10% window)","value":4370,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"HDR Standard Mode (10% window)","value":3003,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"SDR Filmmaker Mode (10% window)","value":188,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"SDR Standard Mode (10% window)","value":2175,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"HDR Filmmaker Mode (Fullscreen)","value":1096,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"HDR Standard Mode (Fullscreen)","value":1124,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"SDR Filmmaker Mode (Fullscreen)","value":227,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"SDR Standard Mode (Fullscreen)","value":794,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"HDR Filmmaker Mode (10% window)","value":3719,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"HDR Standard Mode (10% window)","value":3771,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"SDR Filmmaker Mode (10% window)","value":229,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"SDR Standard Mode (10% window)","value":518,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"HDR Filmmaker Mode (Fullscreen)","value":759,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"HDR Standard Mode (Fullscreen)","value":795,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"HDR Filmmaker Mode (10% window)","value":2097,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"HDR Standard Mode (10% window)","value":2394,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"SDR Filmmaker Mode (10% window)","value":314,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"SDR Standard Mode (10% window)","value":1514,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"HDR Filmmaker Mode (Fullscreen)","value":771,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"HDR Standard Mode (Fullscreen)","value":767,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"SDR Filmmaker Mode (Fullscreen)","value":372,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"SDR Standard Mode (Fullscreen)","value":778,"unit":"nits","site":"TechRadar"}]}},{"id":"slide-1793621894581","snapshot":{"selectedProducts":["Hisense UR9","TCL QM8L","Hisense UR8"],"selectedPrimaryProduct":"Hisense UR9","selectedAttributes":["UHDA-P3","BT.2020"],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["UHDA-P3","BT.2020"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"HDR color gamut","subhead":"Closer to 100% is better. Taken using a colorimeter and test pattern generator.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"dataOverride":[{"productName":"Hisense UR9","attribute":"UHDA-P3","value":99.8,"unit":"","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"BT.2020","value":93.1,"unit":"","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"UHDA-P3","value":97.9,"unit":"","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"BT.2020","value":90.3,"unit":"","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"UHDA-P3","value":145,"unit":"","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"BT.2020","value":95.1,"unit":"","site":"TechRadar"}]}},{"id":"slide-1793621949647","snapshot":{"selectedProducts":["Hisense UR9","TCL QM8L","Hisense UR8"],"selectedPrimaryProduct":"Hisense UR9","selectedAttributes":["Delta-E"],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Picture accuracy","subhead":"A lower score is better. Taken using a colorimeter and test pattern generator.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"dataOverride":[{"productName":"Hisense UR9","attribute":"Delta-E","value":2.7,"unit":"","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"Delta-E","value":3.7,"unit":"","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"Delta-E","value":7.9,"unit":"","site":"TechRadar"}]}},{"id":"slide-1793621995294","snapshot":{"selectedProducts":["Hisense UR9","TCL QM8L","Hisense UR8"],"selectedPrimaryProduct":"Hisense UR9","selectedAttributes":["4K 60Hz"],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Input lag","subhead":"Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"dataOverride":[{"productName":"Hisense UR9","attribute":"4K 60Hz","value":12,"unit":"ms","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"4K 60Hz","value":9.5,"unit":"ms","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"4K 60Hz","value":11.7,"unit":"ms","site":"TechRadar"}]}}]}</script><div id="fv-chart-1793621995295-o52s1xgav-slideshow" class="fv-slideshow-container" data-slide-count="4" data-iframe-height="true"><div class="fv-slideshow-nav-row"><button class="fv-nav-btn prev disabled" aria-label="Previous Slide"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg><span>Previous</span></button><div class="fv-slide-counter">1 / 4</div><button class="fv-nav-btn next" aria-label="Next Slide"><span>Next</span><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg></button></div><div class="fv-slides-wrapper"><div class="fv-slide" id="fv-chart-1793621995295-o52s1xgav-slide-0-wrapper" data-index="0" style="display: block;"><div id="fv-chart-1793621995295-o52s1xgav-slide-0" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Brightness measurements</h3><div class="fv-dropdown-wrapper"><div class="fv-dropdown-title-container"><select class="fv-dropdown-title"><option value="0">HDR Filmmaker Mode</option><option value="1">HDR Standard</option><option value="2">SDR Filmmaker Mode</option><option value="3">SDR Standard</option></select><div class="fv-dropdown-chevron"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg></div></div></div><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-0-grouped-bar-Group 1" data-chart-type="Bar" data-title="HDR Filmmaker Mode" data-subhead="" data-caption="" data-grouped-show-product-name="true" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 72.83333333333334%; background-color: #2E6E93;" data-target-width="72.83333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4370</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 18.266666666666666%; background-color: #2E6E93;" data-target-width="18.266666666666666" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1096</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 61.983333333333334%; background-color: #E8238C;" data-target-width="61.983333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3719</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 12.65%; background-color: #E8238C;" data-target-width="12.65" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">759</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 34.949999999999996%; background-color: #5DA8D4;" data-target-width="34.949999999999996" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2097</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 12.85%; background-color: #5DA8D4;" data-target-width="12.85" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">771</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>1,500</span><span>3,000</span><span>4,500</span><span>6,000</span></div><div class="fv-x-axis-unit">nits</div></div></div><table class="sr-only"><caption>HDR Filmmaker Mode Data</caption><thead><tr><th>Product</th><th>HDR Filmmaker Mode (10% window) (nits)</th><th>HDR Filmmaker Mode (Fullscreen) (nits)</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>4370</td><td>1096</td></tr><tr><td>TCL QM8L</td><td>3719</td><td>759</td></tr><tr><td>Hisense UR8</td><td>2097</td><td>771</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-0-grouped-bar-Group 2" data-chart-type="Bar" data-title="HDR Standard" data-subhead="" data-caption="" data-grouped-show-product-name="true" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 75.075%; background-color: #2E6E93;" data-target-width="75.075" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3003</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 28.1%; background-color: #2E6E93;" data-target-width="28.1" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1124</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 94.27499999999999%; background-color: #E8238C;" data-target-width="94.27499999999999" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3771</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 19.875%; background-color: #E8238C;" data-target-width="19.875" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">795</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 59.85%; background-color: #5DA8D4;" data-target-width="59.85" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2394</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 19.175%; background-color: #5DA8D4;" data-target-width="19.175" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">767</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>1,000</span><span>2,000</span><span>3,000</span><span>4,000</span></div><div class="fv-x-axis-unit">nits</div></div></div><table class="sr-only"><caption>HDR Standard Data</caption><thead><tr><th>Product</th><th>HDR Standard Mode (10% window) (nits)</th><th>HDR Standard Mode (Fullscreen) (nits)</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>3003</td><td>1124</td></tr><tr><td>TCL QM8L</td><td>3771</td><td>795</td></tr><tr><td>Hisense UR8</td><td>2394</td><td>767</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-0-grouped-bar-Group 3" data-chart-type="Bar" data-title="SDR Filmmaker Mode" data-subhead="" data-caption="" data-grouped-show-product-name="true" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 47%; background-color: #2E6E93;" data-target-width="47" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">188</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 56.75%; background-color: #2E6E93;" data-target-width="56.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">227</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 57.25%; background-color: #E8238C;" data-target-width="57.25" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">229</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 0%; background-color: #E8238C;" data-target-width="0" data-target-margin="0"></div><span class="fv-bar-value-outside">0</span></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 78.5%; background-color: #5DA8D4;" data-target-width="78.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">314</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 93%; background-color: #5DA8D4;" data-target-width="93" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">372</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>100</span><span>200</span><span>300</span><span>400</span></div><div class="fv-x-axis-unit">nits</div></div></div><table class="sr-only"><caption>SDR Filmmaker Mode Data</caption><thead><tr><th>Product</th><th>SDR Filmmaker Mode (10% window) (nits)</th><th>SDR Filmmaker Mode (Fullscreen) (nits)</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>188</td><td>227</td></tr><tr><td>TCL QM8L</td><td>229</td><td>N/A</td></tr><tr><td>Hisense UR8</td><td>314</td><td>372</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-0-grouped-bar-Group 4" data-chart-type="Bar" data-title="SDR Standard" data-subhead="Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu." data-caption="" data-grouped-show-product-name="true" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 72.5%; background-color: #2E6E93;" data-target-width="72.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2175</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 26.466666666666665%; background-color: #2E6E93;" data-target-width="26.466666666666665" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">794</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 17.266666666666666%; background-color: #E8238C;" data-target-width="17.266666666666666" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">518</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 0%; background-color: #E8238C;" data-target-width="0" data-target-margin="0"></div><span class="fv-bar-value-outside">0</span></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 50.46666666666667%; background-color: #5DA8D4;" data-target-width="50.46666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1514</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 25.933333333333337%; background-color: #5DA8D4;" data-target-width="25.933333333333337" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">778</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>750</span><span>1,500</span><span>2,250</span><span>3,000</span></div><div class="fv-x-axis-unit">nits</div></div></div><table class="sr-only"><caption>SDR Standard Data</caption><thead><tr><th>Product</th><th>SDR Standard Mode (10% window) (nits)</th><th>SDR Standard Mode (Fullscreen) (nits)</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>2175</td><td>794</td></tr><tr><td>TCL QM8L</td><td>518</td><td>N/A</td></tr><tr><td>Hisense UR8</td><td>1514</td><td>778</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div></div><div class="fv-slide" id="fv-chart-1793621995295-o52s1xgav-slide-1-wrapper" data-index="1" style="display: none;"><div id="fv-chart-1793621995295-o52s1xgav-slide-1" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">HDR color gamut</h3><p class="fv-chart-subhead">Closer to 100% is better. Taken using a colorimeter and test pattern generator.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-1-grouped-bar-Group 1" data-chart-type="Bar" data-title="HDR Filmmaker Mode" data-subhead="Closer to 100% is better. Taken using a colorimeter and test pattern generator." data-caption="" data-grouped-show-product-name="true" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">UHDA-P3</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 66.53333333333333%; background-color: #2E6E93;" data-target-width="66.53333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">99.8</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">BT.2020</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 62.066666666666656%; background-color: #2E6E93;" data-target-width="62.066666666666656" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">93.1</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">UHDA-P3</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 65.26666666666668%; background-color: #E8238C;" data-target-width="65.26666666666668" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">97.9</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">BT.2020</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 60.199999999999996%; background-color: #E8238C;" data-target-width="60.199999999999996" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">90.3</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">UHDA-P3</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 96.66666666666667%; background-color: #5DA8D4;" data-target-width="96.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">145</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">BT.2020</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 63.4%; background-color: #5DA8D4;" data-target-width="63.4" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">95.1</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div></div></div><table class="sr-only"><caption>HDR Filmmaker Mode Data</caption><thead><tr><th>Product</th><th>UHDA-P3 ()</th><th>BT.2020 ()</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>99.8</td><td>93.1</td></tr><tr><td>TCL QM8L</td><td>97.9</td><td>90.3</td></tr><tr><td>Hisense UR8</td><td>145</td><td>95.1</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div></div><div class="fv-slide" id="fv-chart-1793621995295-o52s1xgav-slide-2-wrapper" data-index="2" style="display: none;"><div id="fv-chart-1793621995295-o52s1xgav-slide-2" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Picture accuracy</h3><p class="fv-chart-subhead">A lower score is better. Taken using a colorimeter and test pattern generator.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-2-bar-Delta-E" data-chart-type="Bar" data-title="SDR Delta-E" data-subhead="A lower score is better. Taken using a colorimeter and test pattern generator." data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">SDR Delta-E</h4><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Hisense UR9</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 33.75%; background-color: #2E6E93;" data-target-width="33.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2.7</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">TCL QM8L</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 46.25%; background-color: #E8238C;" data-target-width="46.25" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3.7</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Hisense UR8</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 98.75%; background-color: #5DA8D4;" data-target-width="98.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">7.9</span></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span></div></div></div><table class="sr-only"><caption>SDR Delta-E Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>2.7</td></tr><tr><td>TCL QM8L</td><td>3.7</td></tr><tr><td>Hisense UR8</td><td>7.9</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div></div><div class="fv-slide" id="fv-chart-1793621995295-o52s1xgav-slide-3-wrapper" data-index="3" style="display: none;"><div id="fv-chart-1793621995295-o52s1xgav-slide-3" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Input lag</h3><p class="fv-chart-subhead">Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-3-bar-4K 60Hz" data-chart-type="Bar" data-title="4K 60Hz" data-subhead="Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester." data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">4K 60Hz</h4><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Hisense UR9</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #2E6E93;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">12</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">TCL QM8L</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 63.33333333333333%; background-color: #E8238C;" data-target-width="63.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">9.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Hisense UR8</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 77.99999999999999%; background-color: #5DA8D4;" data-target-width="77.99999999999999" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">11.7</span></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>3.75</span><span>7.5</span><span>11.25</span><span>15</span></div><div class="fv-x-axis-unit">ms</div></div></div><table class="sr-only"><caption>4K 60Hz Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>12</td></tr><tr><td>TCL QM8L</td><td>9.5</td></tr><tr><td>Hisense UR8</td><td>11.7</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (true) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                var slideshowContainer = document.getElementById(uniqueId + '-slideshow');    if (slideshowContainer) {        var currentSlideIndex = 0;        var slides = slideshowContainer.querySelectorAll('.fv-slide');        var counter = slideshowContainer.querySelector('.fv-slide-counter');        var prevBtn = slideshowContainer.querySelector('.fv-nav-btn.prev');        var nextBtn = slideshowContainer.querySelector('.fv-nav-btn.next');        var dropdown = slideshowContainer.querySelector('.fv-slideshow-select');        function updateControls(index) {            if (counter) counter.textContent = (index + 1) + ' / ' + slides.length;            if (dropdown) dropdown.value = index;                        if (prevBtn) {                if (index === 0) prevBtn.classList.add('disabled');                else prevBtn.classList.remove('disabled');            }            if (nextBtn) {                if (index === slides.length - 1) nextBtn.classList.add('disabled');                else nextBtn.classList.remove('disabled');            }        }        function showSlide(index) {            if (index < 0) return;            if (index >= slides.length) return;                        currentSlideIndex = index;                        slides.forEach(function(slide, i) {                slide.style.display = i === index ? 'block' : 'none';                if (i === index) {                    var chartEl = slide.querySelector('.fv-chart-wrapper');                    if (chartEl) {                        fvLocalAnimate(chartEl);                    }                }            });                        updateControls(currentSlideIndex);        }        if (prevBtn) {            prevBtn.addEventListener('click', function() { showSlide(currentSlideIndex - 1); });        }        if (nextBtn) {            nextBtn.addEventListener('click', function() { showSlide(currentSlideIndex + 1); });        }        if (dropdown) {            dropdown.addEventListener('change', function(e) { showSlide(parseInt(e.target.value)); });        }                updateControls(currentSlideIndex);                if (slides.length > 0) {            var firstChart = slides[0].querySelector('.fv-chart-wrapper');            if (firstChart) {                setTimeout(function() { fvLocalAnimate(firstChart); }, 100);            }        }    }          } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793621995295-o52s1xgav', true); });      } else {        initialize('fv-chart-1793621995295-o52s1xgav', true);      }    })();      </script></div><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-features"><span>Hisense UR9 RGB MiniLED TV review: Features</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="c6eh6JhuYaPDBLUujXkWx" name="Hisense UR9 audio settings" alt="Hisense UR9 audio settings" src="https://cdn.mos.cms.futurecdn.net/c6eh6JhuYaPDBLUujXkWx-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Comes with updated Dolby Vision 2</strong></li><li><strong>Google Gemini is conversational if slightly inaccurate</strong></li><li><strong>Comes with other AI-powered features including screensavers</strong></li></ul><p>Considering the price of the Hisense UR9, it’s no surprise that it has the smorgasbord of features one would expect. It comes with Dolby Vision IQ, which changes the picture based on ambient light. It also comes with <a href="https://www.techradar.com/tech-events/we-now-know-the-first-tv-brands-that-will-support-dolby-vision-2-and-one-has-been-very-prolific-at-ces-2026"><u>Dolby Vision 2</u></a>, the newly updated format that optimizes HDR content on a picture-by-picture basis using dynamic metadata. And, of course, the various HDR formats (HDR10, HDR10+ Adaptive, HLG) are all here as well. Internet connectivity is pretty fast too, thanks to Wi-Fi 6E.</p><p>This TV works with Apple HomeKit, Amazon Alexa, and has Google Cast and Google Assistant built in. And since there’s also far-field voice control on offer, you can basically interact with the TV to a large degree without a remote.</p><p>This particular feature runs through Google Gemini, Google’s AI-powered voice assistant. There are quite a few things I like about this voice assistant. Its conversational style, not to mention the various timbres to choose from, make it a more familiar experience (unless the uncanny valley-ness of it all is something that tends to get to you). I can ask it all sorts of things outside of controlling the TV, which is nice as well.</p><p>However, like my other experiences with Google Gemini, it’s not as accurate as one would hope, making it an imperfect companion for hands-free control, whether that means giving incorrect information about where something is streaming, or just posting up a bunch of YouTube videos about my requests instead of following through on my requests, which tend to be along the lines of: “Hey Google, play [insert content] on [streaming platform].”</p><p>Like other 2026 (and late 2025) TVs that I’ve interacted with, AI is the predominant buzzword that ties them altogether. It’s part of Google Gemini. It’s part of the RGB chipset. And it’s part of various other behind-the-scenes settings on the TV. Besides Google Gemini, the other user-facing feature utilizing AI is the screensaver where you can use either a photo from your Google account, artwork, or create AI artwork — a fun if, in my opinion, somewhat inconsequential feature.</p><ul><li><strong>Features score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-picture-quality"><span>Hisense UR9 RGB MiniLED TV review: Picture quality</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DZvsKawhfs2QP23VUbkQz" name="Hisense UR9 blooming in the movie Soul" alt="Hisense UR9 blooming in the movie Soul" src="https://cdn.mos.cms.futurecdn.net/DZvsKawhfs2QP23VUbkQz-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The colors are great, but there is some blooming as shown in this scene from the movie Soul </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Impressive BT.2020 coverage and color accuracy</strong></li><li><strong>Plenty of brightness on tap</strong></li><li><strong>Some slight blooming</strong></li></ul><p>On paper, RGB mini-LED TVs (or MicroRGB for certain brands) should be a game changer for picture quality. In practice, I wouldn't say it's quite that, but it is a vibrant and immersive screen that's mostly a pleasure to use.</p><p>Looking at benchmarks, it is impressive with an almost 100% UHDA-P3 and over 92% BT.2020 color coverage in filmmaker mode — the fantastic <a href="https://www.techradar.com/televisions/tcl-qm8l-review">TCL QM8L</a> I recently reviewed hit 87% BT.2020 (both TVs are advertised as hitting 100%, of course). </p><p>The color accuracy in filmmaker mode is also a fairly impressive Delta E > 2.2 (closer to 0 is better), though it shoots up to 9.9 in standard mode. Changing into filmmaker mode on any TV greatly affects the colors shown onscreen, but it's never been so noticeable as it is on this TV.</p><p>Just like other more premium 2026 options, the brightness is more than enough. In our benchmarks, we recorded 227 nits in filmmaker mode and almost 800 in standard. And in our luminance benchmarks, it reached 4370 nits for 10% window and almost 1,100 in full screen for filmmaker mode.</p><p>I actually found the screen almost too bright. One of the reasons I like using filmmaker mode, especially on TV is the much reduced brightness. Of course, it still retains all the detail, whether it's the individual floorboards on a basketball court or the individual stars in the vastness of afterlife space per the movie <em>Soul</em>.</p><p>The picture is also smooth without any judder when there’s a lot of action, whether I’m watching some sports, movies, or even video games. For instance, watching the Detroit Pistons attempt a playoff comeback was as engaging as could be. I could keep track of not only the ball, but all the players whether they're running a pick and roll or grabbing a rebound.</p><p>Funnily enough, that is without all the AI clarity-related features. AI Super Resolution does sharpen things up a little, though I could see the AI in the player's faces at the highest settings. The Motion Enhancement smooths out the action a bit, which I found unnecessary, while the Motion Clearness sacrifices some of the picture fidelity for keeping up with the action. Also unnecessary with this TV.</p><p>However, when using those features for older content — say old, forgotten videos from the early days of YouTube — they do a decent job upscaling grainier content into something a little more pleasant and updated looking. While I wouldn't say older content looks 4K, it does look cleaner, sharper, and with better color.</p><p>The lone issue I found with the image quality is that it’s not as good at controlling blooming (also known as the Halo effect) due to the way RGB LEDs work. Since the red, blue, and yellow LEDs sit right next to each other, there’s more opportunity for cross talk between pixels than other TVs of similar quality that use a single LED in the same place with a filter creating the color.</p><p>I pulled up the usual screen tests on YouTube and didn’t really notice this too much as the image was sharp and clean. However, when watching Disney’s <em>Soul</em>, I noticed that when the main character enters the afterlife for the first time and is now a glowing avatar instead of a human in a void, he has a glow around him. Now, that’s somewhat intentional but it’s more muted on the other TVs I have accessible to me for comparison (the <a href="https://www.techradar.com/televisions/tcl-qm8l-review">TCL QM8L</a> and the <a href="https://www.techradar.com/televisions/roku-pro-series-review">Roku Pro Series</a> TVs, specifically). This is, unfortunately, just a current limitation of RGB LED technology.</p><p>Back on the positives, the Hisense UR9 offers a number of picture modes including Film Maker Mode and IMAX Enhanced to take advantage of different content, something you don’t find (or at least to the same degree) on cheaper televisions.</p><ul><li><strong>Picture quality score: 4/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-sound-quality"><span>Hisense UR9 RGB MiniLED TV review: Sound quality</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jEt9HAkoZttPi2hyzprXT3" name="Hisense UR9 woofers on back of the TV" alt="Hisense UR9 woofers on back of the TV" src="https://cdn.mos.cms.futurecdn.net/jEt9HAkoZttPi2hyzprXT3-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Hisense UR9 has visible woofers on the back of the TV </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>110W of power with 4.1.2 virtualized spatial audio system</strong></li><li><strong>Sounds good except mids are bit forward</strong></li><li><strong>Room calibration and Intelligent settings help TV sound better</strong></li></ul><p>If you’re a TV manufacturer wanting to upgrade the audio experience, having Devialet tune your TV as the company has done with the Hisense UR9 is a good move. And I can confirm that the Hisense UR9 sounds pretty decent on its own.</p><p>Without an additional soundbar, this TV has up to 110 watts of power and provides a 4.1.2 multi-channel surround experience (6.2.2 channel audio in 100-inch), though you won’t get a full surround sound experience as all the speakers are in the TV, either pointing down or back. And when using Dolby Atmos content, it only produces a virtualized version when just using the TV speakers.</p><p>Now, the actual sound quality is good for a TV if not quite amazing. There’s a bit of a peak in the mid-bass on standard mode that gives the audio a bit of a bloated feel. However, this is easily mitigated, either by using the seven-band equalizer hidden in the bowels of the audio settings and pulling the 500Hz slider down a few ticks to taste (I had it at -4). Or if you’re lazy like me, just turn on the Intelligent Sound feature in the Intelligent Settings and it will do it for you.</p><p>The bass is decent for a TV without an actual subwoofer, though you’ll want to add one if you want that theater experience. And the high-end is clear and present.</p><p>There’s also a room calibration feature that, like the Intelligent Sound feature, will right the audio ship of this TV with minimal effort.</p><p>Of course, if you want to really upgrade the audio experience, this TV does pair with the Hisense HT Saturn speakers, which not only provides a surround sound and spatial audio experience, but also has specific features such as Hi-Concerto (using both the speakers of the sound system and the TV in tandem) among others.</p><ul><li><strong>Sound quality score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-design"><span>Hisense UR9 RGB MiniLED TV review: Design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KNxS5VGRsyC8ewzu73Un93" name="Hisense UR9 USB-C port with DisplayPort support" alt="Hisense UR9 USB-C port with DisplayPort support" src="https://cdn.mos.cms.futurecdn.net/KNxS5VGRsyC8ewzu73Un93-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The USB-C port with DisplayPort support is separated out from the rest of the ports on the side of the TV. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Semi-adjustable central stand</strong></li><li><strong>A little bit on the thick side</strong></li><li><strong>Three HDMI 2.1 and a USB-C port with DisplayPort support</strong></li></ul><p>I feel like a broken record sometimes, but I will always tout the benefits of a central stand. So when I unboxed the Hisense UR9 and saw that the base was one central stand instead of legs on the far corners of the panel, I was thankful. I was maybe a little less thankful screwing in the base into the accompanying stand and then the stand into the back of the TV (I did do this alone so it will be significantly easier if you enlist a second person). But I did at least appreciate that the stand can be screwed into four different heights, so you can adjust how high the panel sits off the TV stand.</p><p>The panel uses very thin bezels — I feel like that’s more standard than not these days — with the exception of the bottom one that also holds the sensor. A little more unusual is the thickness of this TV. Make no mistake: this is still a flat panel TV, but it is just under two inches thick. Of course, if you’re into mounting your TV, it will sit a little more flush than the typical TV, due to the lack of unsightly bulge on the back.</p><p>When I unboxed the Hisense UR9, I was surprised by the fact that it only came with three HDMI ports. However, not only are they of the 2.1 variety so they support 4K at up to 180Hz (great for next-gen consoles that get up to 120 fps), but there’s also a USB-C port with <a href="https://www.techradar.com/televisions/someone-finally-did-it-a-high-end-tv-with-a-displayport-connection-actually-is-coming-this-year-including-4k-180hz-support"><u>DisplayPort</u></a> support. That's great for plugging in a PC for professionals that want to use a TV to work on — although, let’s be real, PC gamers are probably the ones who’ll take most advantage of this.</p><p>As far as controls go, there’s just a single button on the bottom of the TV so don’t lose that remote. Thankfully, the fully backlit remote is on the bigger side so it’s not easy to lose. Of course, you can always just talk to the Hisense UR9 using Google Gemini.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-smart-tv-and-menus"><span>Hisense UR9 RGB MiniLED TV review: Smart TV and menus</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8JVLVHDGXQdq6ispBDm8M3" name="Hisense UR9 Google TV frontpage" alt="Hisense UR9 Google TV frontpage" src="https://cdn.mos.cms.futurecdn.net/8JVLVHDGXQdq6ispBDm8M3-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Google TV front page is easy to navigate, but does prioritize Google-related content </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Google TV interface is intuitive if a bit YouTube-biased</strong></li><li><strong>Settings menus could be a little better organized</strong></li><li><strong>Google Gemini can be used to adjust settings</strong></li></ul><p>If the Fire TV interface that Amazon TVs come with seem to focus too much on Prime-related content, then the Google TV interface used here is a little too YouTube happy. But, outside of that bias, the layout of the interface is pretty intuitive for getting to content.</p><p>Not only does it feature tailored suggestions in the banner that takes up half of the screen, but it follows it with a row of suggestions across different streaming services as well as a “Continue Watching” row. Of course, the apps are also lined up in a row if you prefer to dig deep that way.</p><p>There’s plenty of Google TV-specific content even if you don’t use YouTube, with a good number of free channels playing content in a similar fashion as live cable (or cable-like streaming platforms like YouTube TV).</p><p>My only real gripe with Google TV is navigating the settings menu. This is mainly because it does require some digging to get to certain features. For instance, the room correction or calibration feature for audio is not available under audio, but under intelligent settings. While this sort of makes sense, it should also be under the audio settings since any adjustments I make to audio should be available there.</p><p>For picture settings, I did appreciate the number of various parameters available for adjusting. I can change the Gamma, for instance, as well as multiple motion blur and smoothing options, to name just a few.</p><p>Lastly, I’ve already talked about Google Gemini earlier, but it is a valid way of navigating this TV and its settings. However, besides the other issues I mentioned earlier, for whatever reason it just won’t directly play content from a voice command.</p><ul><li><strong>Smart TV &amp; menus score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-gaming"><span>Hisense UR9 RGB MiniLED TV review: Gaming</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tPdAwn5X7pDqiqiCHNKK23" name="Hisense UR9 PS5 gaming - Lies of P" alt="Hisense UR9 PS5 gaming - Lies of P" src="https://cdn.mos.cms.futurecdn.net/tPdAwn5X7pDqiqiCHNKK23-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Hisense UR9's vibrant screen and great contrast make it a great TV for gaming </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Supports 4K at up to 180Hz depending on input</strong></li><li><strong>Plenty of gaming features on offer</strong></li><li><strong>Game Bar requires some menu diving to access</strong></li></ul><p>To test the gaming capabilities of the Hisense UR9, I plugged in a PlayStation 5 and played a number of games. Besides getting that 4K at 144Hz (capped at 120 by the PS5) performance afforded by the HDMI 2.1, being able to take advantage of HDR is nice as well.</p><p>There are also a number of features on offer. For example, there’s a game bar accessible through the menu that allows one to change settings like picture mode, Game Booster 330 (which supports a higher variable refresh rate) and turn on AMD Freesync, as well as see max frames of a game as not all PS5 games can go above 60 FPS.</p><p>The one annoying thing about the game bar is that there’s no way to pull it up directly. If I press the settings button on the remote, I just get the regular box out of “quick settings” for the TV. I have to press the menu button instead, which brings up a different type of quick settings across the bottom of the screen where I can select the game bar. Then the game bar HUD pops up with the various options for adjusting at the bottom and some metrics at the top including the FPS counter. </p><p>It may be a minor annoyance, but I’ve dealt with TVs where a long press somewhere on the remote while in game mode (the TV will automatically switch to game mode if enabled) will bring up the game bar menu.</p><p>In terms of gaming experiences on the TV, it’s impeccable. I get a clean, smooth image with plenty of detail. The only time I really had any issue was when I somehow had the TV in filmmaker mode and couldn’t see anything in the shadows of <em>Lies of P</em>, which at the time was about 75% of the screen.</p><p>Lastly, if you plan on doing any PC gaming on this, that USB-C port with 180Hz refresh rate will do wonders for any fast-paced <em>Call of Duty</em>-type action.</p><ul><li><strong>Gaming score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-value"><span>Hisense UR9 RGB MiniLED TV review: Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kHALZRMqttgVSQCK94mDVC" name="The Hisense UR9 with screen test video" alt="The Hisense UR9 with screen test video" src="https://cdn.mos.cms.futurecdn.net/kHALZRMqttgVSQCK94mDVC-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Hisense UR9 showing a drone shot of a landscape </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Marginally cheaper than other RGB LED TVs</strong></li><li><strong>Paying a premium for new tech </strong></li><li><strong>Other non-RGB LED TVs offer better value currently</strong></li></ul><p>Let’s face it. New tech is expensive. Therefore, RGB LED TVs are going to be pricey and, as an upgrade for your living room, they’re really not that great of a value. If you go for an RGB LED TV now, you’re an early adopter. A few generations from now, that might change. But, for now, you’re paying to be one of the first to have this technology.</p><p>The Hisense UR9 is going to be priced similarly to other RGB LED TVs, although now we've started to see discounts hitting some of these models, the Hisense is inching out just in front in terms of value.</p><p>Starting with LG's MRGB95B, its smallest size is 75 inches, which goes for $3,599.99 / AU$7,995 (around £2,710), while the 86-inch is $5,299.99 / £4,799 / AU$9,995, and the 100-inch is $6,999.99 / £9,999.98 / AU$17,995. Conversely, the Hisense UR9 is $2,499 / £2,299 / AU$3,995 at the 75-inch size, while the 85-inch model is $3,499 / £2,999 / AU$4,995 and the 100-inch goes for $4,999.99 (£4,510 / AU$8,520). So, out of the two, the Hisense is definitely coming out cheapest as things stand.</p><p>Samsung, another early adopter of RGB LED, is charging (65-inch) $2,499.99 / £2,599 / AU$5,295, (75-inch) $3,499.99 / £3,599 / AU$7,995, and (85-inch) $4,999.99 / £5,299 / AU$9,995 for the R95H model. Given Samsung's TV is the priciest of the three, the Hisense UR9 works out the best value for RGB LED TVs.</p><p>However, if we look at non-RGB LED TVs, like the TCL QM8L I just tested, they tend to offer an almost identical experience in terms of picture quality and features, though with better sound. That TCL QM8L, which has 4,000 local dimming zones, starts at $1,799.99 for the 65-inch model and goes up to $4,999.99 for the 98-inch.</p><ul><li><strong>Value score: 3.5/5 </strong></li></ul><h2 class="article-body__section" id="section-should-i-buy-the-hisense-ur9-rgb-miniled-tv"><span>Should I buy the Hisense UR9 RGB MiniLED TV?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3jvoDWiPinvqJZqmaxbHYa" name="Hisense UR9 showing Magnet of Doom (L'aîné des Ferchaux)," alt="Hisense UR9 showing Magnet of Doom (L'aîné des Ferchaux)," src="https://cdn.mos.cms.futurecdn.net/3jvoDWiPinvqJZqmaxbHYa-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Hisense UR9 showcasing its upscaling with Magnet of Doom (L'aîné des Ferchaux) </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><div ><table><caption>Hisense UR9 RGB MiniLED TV</caption><thead><tr><th class="firstcol " ><p>Attributes</p></th><th  ><p>Notes</p></th><th  ><p>Rating</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Features</p></td><td  ><p>Dolby Vision 2 and Google Gemini may be the most exciting features, but they’re just a few that are on offer.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Picture quality</p></td><td  ><p>This TV’s gorgeous picture quality provided by the RGB mini-LEDs is also somewhat held back by that tech, as there is some minor blooming.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Sound quality</p></td><td  ><p>The Hisense UR9 may have a bump in the mids, but that’s easily fixable either through the seven-band EQ, Intelligent Audio settings, or included AI room calibration.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>It might on the thick side, but there’s little to complain about here. The center base is solid and comes with some height adjustment. And the USB-C with DisplayPort support is a novel inclusion.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Smart TV and menus</p></td><td  ><p>Google TV is intuitive if a bit Google-content biased. Menu diving can be a little frustrating sometimes, however there are a lot of parameters available to finetune.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Gaming</p></td><td  ><p>From the picture quality to gaming specific features like AMD Freesync, this TV is made for gaming. Too bad, the gaming bar menu requires some menu diving.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>RGB LED TVs may be expensive, but the UR9's price drop makes it a good option. Of course, non-RGB LED TVs are still a bit better in terms of value.</p></td><td  ><p>3.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-9">Buy it if...</h2><div class="product"><p><strong>You want new tech</strong><br />The concept and execution of RGB mini-LEDs is pretty cool, and if you want to be one of the first users with this kind of TV, the Hisense UR9 is a worthy option.</p></div><div class="product"><p><strong>You’re a gamer</strong><br />The fact that you can go up to 180Hz through the HDMI or USB-C (DisplayPort support) ports is fairly unique. Plus, plenty of the other features on offer like AMD Freesync make this a great TV for gamers.</p></div><div class="product"><p><strong>You’re looking for color coverage and accuracy</strong><br />Everyone is touting their 2026 TV as having 100% BT.2020 color coverage. This TV gets closer than plenty of the competition. And the color accuracy is pretty good too.</p></div><h2 id="don-39-t-buy-it-if-6">Don't buy it if…</h2><div class="product"><p><strong>You care about value or your choice of retailer</strong><br />The Hisense UR9 is expensive (and not great value) like other RGB LED TVs.</p></div><div class="product"><p><strong>You care about blooming</strong><br />The one downside of RGB LEDs is blooming. While very minor, it’s more noticeable than on non-RGB LED TVs.</p></div><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-also-consider"><span>Hisense UR9 RGB MiniLED TV review: also consider</span></h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Hisense UR9 RGB MiniLED TV</p></th><th  ><p>TCL QM8L (C8L in other regions)</p></th><th  ><p>Hisense UR8</p></th><th  ><p><strong>Hisense U65QF</strong></p></th><th  ><p>LG C6</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Price (65-inch)</p></td><td  ><p>$1,699.99 / £1,699 / AU$2,995</p></td><td  ><p>$1,799.99 / £1,499 / AU$2,695</p></td><td  ><p>$1,199.99 / £1,299.99 / AU$2,495</p></td><td  ><p>$999</p></td><td  ><p>$1,399 / £1,699 / AU$3,295</p></td></tr><tr><td class="firstcol " ><p>Screen type</p></td><td  ><p>RGB mini-LED</p></td><td  ><p>SQD mini-LED</p></td><td  ><p>RGB mini-LED</p></td><td  ><p>QLED w/ mini-LED</p></td><td  ><p>OLED</p></td></tr><tr><td class="firstcol " ><p>Refresh rate</p></td><td  ><p>180Hz</p></td><td  ><p>144Hz</p></td><td  ><p>144Hz</p></td><td  ><p>upt to 144Hz</p></td><td  ><p>144Hz</p></td></tr><tr><td class="firstcol " ><p>HDR support</p></td><td  ><p>HDR10, HDR10+, HLG, Dolby Vision</p></td><td  ><p>HDR10, HDR10+, HLG, Dolby Vision IQ</p></td><td  ><p>HDR10, HDR10+, HLG, Dolby Vision </p></td><td  ><p>Dolby Vision IQ, HDR10+, HDR10, HLG</p></td><td  ><p>Dolby Vision, HDR10, HLG</p></td></tr><tr><td class="firstcol " ><p>Smart TV</p></td><td  ><p>Google TV</p></td><td  ><p>Google TV</p></td><td  ><p>Google TV (US) / VIDAA (UK/Aus)</p></td><td  ><p>Fire TV</p></td><td  ><p>WebOS 25</p></td></tr><tr><td class="firstcol " ><p>HDMI ports</p></td><td  ><p>3 HDMI 2.1</p></td><td  ><p>4 HDMI 2.1</p></td><td  ><p>4 HDMI 2.1</p></td><td  ><p>4 (2x HDMI 2.1)</p></td><td  ><p>4x HDMI 2.1</p></td></tr></tbody></table></div><div class="product"><p><strong>TCL QM8L</strong><br />The TCL QM8L, known as the TCL C8L in other regions like the UK and Australia, is as quality of a TV as the Hisense UR9 while being a bit cheaper in some regions, since it’s not using RGB LED. It does all the other things (though it does have a lower refresh rate) and has a similarly bright screen, though it isn’t quite as accurate. Read our full <a href="https://www.techradar.com/televisions/tcl-qm8l-review" data-dimension112="c7def882-d380-11f1-a092-c57c086a04c5" data-action="Deal Block" data-label="TCL QM8L review" data-dimension48="TCL QM8L review" data-dimension25="">TCL QM8L review</a>.</p></div><div class="product"><p><strong>Hisense UR8</strong><br />The step-down model from the UR9, the Hisense UR8 delivers good picture and sound quality in its own right, and is cheaper than the flagship UR9. It doesn't deliver the same brightness however and the UR9 is only slightly pricier for a better overall quality of TV. Read our full <a href="https://www.techradar.com/televisions/its-not-an-oled-killer-yet-i-tested-hisenses-affordable-rgb-tv-and-while-i-like-its-picture-quality-and-performance-it-surprisingly-falls-short-in-the-area-i-had-the-highest-hopes-for" data-dimension112="09ea152c-d6b5-11f1-bdea-c16c9c79ceb4" data-action="Deal Block" data-label="Hisense UR8 review" data-dimension48="Hisense UR8 review" data-dimension25="">Hisense UR8 review</a>. </p></div><div class="product"><p><strong>Hisense U65QF</strong><br />The Hisense U65QF is very affordable for a mini-LED TV. It’s packed with features like Dolby Atmos, a 144Hz refresh rate, and Dolby Vision IQ. It also has Alexa built in, though not Alexa+. Finding the video settings does take some deep menu diving, and the Prime-focused interface is a bit of an acquired taste. Read our full <a href="https://www.techradar.com/televisions/hisense-u65qf-review" data-dimension112="c7def814-d380-11f1-9091-3fe3299cba5d" data-action="Deal Block" data-label="Hisense U65QF review." data-dimension48="Hisense U65QF review." data-dimension25="">Hisense U65QF review.</a></p></div><div class="product"><p><strong>LG C6</strong><br />The LG C6 is a big upgrade over its predecessor the LG C5 and while its sound could be better, its brilliant picture quality, suite of gaming features, and AI-powered interface are just some of the reasons it's such a good TV. Despite it being a 2026 model, it's cheaper in the US and the same price in the UK for the 65-inch model than the Hisense UR9. Read our full <a href="https://www.techradar.com/televisions/lg-c6-review" data-dimension112="c7def8f0-d380-11f1-a9a0-41a42ba028da" data-action="Deal Block" data-label="LG C6 review" data-dimension48="LG C6 review" data-dimension25="">LG C6 review</a>.</p></div><h2 class="article-body__section" id="section-how-i-tested-the-hisense-ur9-rgb-miniled-tv"><span>How I tested the Hisense UR9 RGB MiniLED TV</span></h2><ul><li><strong>I used the Hisense UR9 for a couple weeks</strong></li><li><strong>Tested with both TV, movies, music, and games</strong></li><li><strong>Benchmark measurements conducted by Future US testing lab</strong></li></ul><p>I used the Hisense UR9 regularly for a couple weeks. I tested it using streaming shows, movies, music, and games (via PS5). I went through the various features, particularly the hands-free Google Gemini, to see if it worked as advertised. I also spent time listening to the audio as well as paying attention to the picture quality.</p><p>The objective data measurements were taken by Future Publishing's TV testing lab, which uses the Klein K-10A colorimeter and Jeti 15VA spectroradiometer, Murideo Six G 8K Metal test pattern generator, and <a href="https://store.portrait.com/" target="_blank">Portrait Displays' Calman</a> color calibration software to record the results.</p><p>I’ve tested a lot of tech gear over the years, from laptops to speakers, and so have been able to use my expertise towards giving an honest and fair opinion, not to mention a critical eye, to any product I test.</p><p>You can read an in-depth overview of <a href="https://www.techradar.com/televisions/how-we-test-tvs-at-techradar">how we test TVs at TechRadar</a> at that link.</p><ul><li><em>First reviewed: October 2026</em></li><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar's reviews guarantee</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/televisions/hisense-ur9-review</link>
                                                                            <description>
                            <![CDATA[ The Hisense UR9 is the company’s RGB LED effort, and it’s quite the TV. But you’ll pay for being an early adopter. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xBcJggNSwpA4oA7ovGvdnS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/woyrMaNyJAfairTUFeiX23-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 00:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Televisions]]></category>
                                                                                                <author><![CDATA[ space2occupy@gmail.com (James Holland) ]]></author>                    <dc:creator><![CDATA[ James Holland ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/GRjFtC7JT3AzoZxfF9zne5-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/woyrMaNyJAfairTUFeiX23-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / James Holland]]></media:credit>
                                                                                                                                                                        <media:description><![CDATA[The Hisense UR9 showcasing its vibrant colors with scene of a hare self-grooming]]></media:description>                                                            <media:text><![CDATA[Hisense UR9 HERO]]></media:text>
                                <media:title type="plain"><![CDATA[Hisense UR9 HERO]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/woyrMaNyJAfairTUFeiX23-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-two-minute-review"><span>Hisense UR9 RGB MiniLED TV: Two-minute review</span></h2><p>The Hisense UR9 is a great showcase for all that RGB LED TVs have to offer. The RGB LED tech in this TV means its able to hit a much wider range of colors than rival mini-LED TVs with more brightness. </p><p>Thanks to the fact this TV gets up to 180Hz refresh rate helps it compete with the <a href="https://www.techradar.com/news/best-gaming-tv" target="_blank">best gaming TVs</a> out there (as do features like AMD Freesync). And the color coverage and accuracy are as good as anything else you'll find on the market.</p><p>Of course, an <a href="https://www.techradar.com/televisions/the-age-of-next-gen-rgb-tvs-is-here-samsung-lg-tcl-and-hisense-have-all-revealed-models-of-the-oled-beater-tech" target="_blank">RGB TV</a> like this does suffer from some minor blooming, which the <a href="https://www.techradar.com/news/best-tv" target="_blank">best TVs</a> in the premium mid-range bracket have mostly solved. Add in the higher price tag and it’s clear that the Hisense UR9, as well as the other RGB LED TVs hitting the market, don’t offer up the same value as other QLED or mini-LED TVs in the same price range.</p><p>Like those other TVs though, it is filled to the gills with features, such as the conversational, AI-powered (albeit imperfect) Google Gemini voice assistant. Dolby Vision 2, Dolby Atmos, and other AI-powered features are also on offer.</p><p>The whole package is a bit pricey (unless you get one through Best Buy where the price has been slashed by a significant amount), but if you’re willing to throw in extra cash to be an early adopter, the Hisense UR9 is a great centerpiece to a home theater.</p><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-price-and-release-date"><span>Hisense UR9 RGB MiniLED TV review: Price and release date</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="e7Tp4d6jc3C3miU6m7qfG3" name="Hisense UR9 PS5 gaming with Madden 26" alt="Hisense UR9 PS5 gaming with Madden 26" src="https://cdn.mos.cms.futurecdn.net/e7Tp4d6jc3C3miU6m7qfG3-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Hisense UR9 showcasing its bright colors and smooth action during some Madden 26 PS5 gaming </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Release date?</strong> April 2026</li><li><strong>65-inch:</strong> $3,499.99 ($1,999 through Best Buy), £1,699, AU$2,995</li><li><strong>75-inch: </strong>$4,999.99 ($2,999 through Best Buy), £2,299, AU$3,995</li><li><strong>85-inch:</strong> $5,999.99 ($3,999 through Best Buy), £2,999, AU$4,995</li><li><strong>100-inch:</strong> $8,999.99 ($5,999.99 through Best Buy) (around £6,760 / AU$12,780)</li></ul><p>Since RGB LED TVs are the newest technology on the block, the prices are going to be a little higher than if you compare to more standard mini- or micro-LED TVs. After all, these types of TVs have only been on our collective radar since they were first introduced at CES 2025.</p><p>The Hisense UR9, released in April of 2026, has an MSRP of $3,499.99 / £1,999 / $3,999 at its smallest 65-inch size with prices going up to $8,999.99 (around £6,760 / AU$12,780) for the 100-inch, the biggest in the product line — although this size is only available in the US. It’s also available in 75- and 85-inch sizes.<br /><br />Of course, the price has dropped since its release at various retailers by a pretty significant amount, with prices of $1,699 / £1,699 / AU$2,995 for the 65-inch, $2,499 / £2,299 / AU$3,995 for the 75-inch, and $3,499 / £2,999 / AU$4,995 for the 85-inch. Finally, the 100-inch version has had a massive price drop in the US down to $4,999.99 (around £4,510 / AU$8,520).</p><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-specs"><span>Hisense UR9 RGB MiniLED TV review: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Screen type</p></td><td  ><p>RGB mini-LED</p></td></tr><tr><td class="firstcol " ><p>Refresh rate</p></td><td  ><p>180Hz</p></td></tr><tr><td class="firstcol " ><p>HDR support</p></td><td  ><p>HDR10, HDR10+, HLG, Dolby Vision</p></td></tr><tr><td class="firstcol " ><p>Smart TV</p></td><td  ><p>Google TV</p></td></tr><tr><td class="firstcol " ><p>HDMI ports</p></td><td  ><p>3x HDMI 2.1 (1x eArc), DisplayPort</p></td></tr><tr><td class="firstcol " ><p>Built-in tuner</p></td><td  ><p>ATSC 3.0 (NextGen TV), NTSC, Clear QAM</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-benchmark-results"><span>Hisense UR9 RGB MiniLED TV review: Benchmark results</span></h2><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper *, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper *:before, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper *:after, #fv-chart-1793621995295-o52s1xgav-slideshow *, #fv-chart-1793621995295-o52s1xgav-slideshow *:before, #fv-chart-1793621995295-o52s1xgav-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper, #fv-chart-1793621995295-o52s1xgav-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793621995295-o52s1xgav-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-nav-btn.disabled, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-dials-grid, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-dial-title, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stacked-product, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-label, #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-container, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-label-space { display: none !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-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-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo, #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-dial-title { font-size: 16px !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793621995295-o52s1xgav-slideshow .fv-chart-wrapper.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">[{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Brightness measurements",  "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-11-02T12:19:55.296Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Hisense UR9",    "TCL QM8L",    "Hisense UR8",    "HDR Filmmaker Mode (10% window)",    "HDR Standard Mode (10% window)",    "SDR Filmmaker Mode (10% window)",    "SDR Standard Mode (10% window)",    "HDR Filmmaker Mode (Fullscreen)",    "HDR Standard Mode (Fullscreen)",    "SDR Filmmaker Mode (Fullscreen)",    "SDR Standard Mode (Fullscreen)",    "HDR Filmmaker Mode",    "HDR Standard",    "SDR Filmmaker Mode",    "SDR Standard",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Hisense UR9 – HDR Filmmaker Mode (10% window)",      "value": 4370,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – HDR Filmmaker Mode (Fullscreen)",      "value": 1096,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – HDR Filmmaker Mode (10% window)",      "value": 3719,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – HDR Filmmaker Mode (Fullscreen)",      "value": 759,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – HDR Filmmaker Mode (10% window)",      "value": 2097,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – HDR Filmmaker Mode (Fullscreen)",      "value": 771,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – HDR Standard Mode (10% window)",      "value": 3003,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – HDR Standard Mode (Fullscreen)",      "value": 1124,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – HDR Standard Mode (10% window)",      "value": 3771,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – HDR Standard Mode (Fullscreen)",      "value": 795,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – HDR Standard Mode (10% window)",      "value": 2394,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – HDR Standard Mode (Fullscreen)",      "value": 767,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – SDR Filmmaker Mode (10% window)",      "value": 188,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – SDR Filmmaker Mode (Fullscreen)",      "value": 227,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – SDR Filmmaker Mode (10% window)",      "value": 229,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – SDR Filmmaker Mode (10% window)",      "value": 314,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – SDR Filmmaker Mode (Fullscreen)",      "value": 372,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – SDR Standard Mode (10% window)",      "value": 2175,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – SDR Standard Mode (Fullscreen)",      "value": 794,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – SDR Standard Mode (10% window)",      "value": 518,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – SDR Standard Mode (10% window)",      "value": 1514,      "unitText": "nits"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – SDR Standard Mode (Fullscreen)",      "value": 778,      "unitText": "nits"    }  ]},{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "HDR color gamut",  "description": "Closer to 100% is better. Taken using a colorimeter and test pattern generator.",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-02T12:19:55.296Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Hisense UR9",    "TCL QM8L",    "Hisense UR8",    "UHDA-P3",    "BT.2020",    "HDR Filmmaker Mode",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Hisense UR9 – UHDA-P3",      "value": 99.8,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "Hisense UR9 – BT.2020",      "value": 93.1,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – UHDA-P3",      "value": 97.9,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – BT.2020",      "value": 90.3,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – UHDA-P3",      "value": 145,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – BT.2020",      "value": 95.1,      "unitText": ""    }  ]},{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Picture accuracy",  "description": "A lower score is better. Taken using a colorimeter and test pattern generator.",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-02T12:19:55.296Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Hisense UR9",    "TCL QM8L",    "Hisense UR8",    "Delta-E",    "SDR Delta-E",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Hisense UR9 – Delta-E",      "value": 2.7,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – Delta-E",      "value": 3.7,      "unitText": ""    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – Delta-E",      "value": 7.9,      "unitText": ""    }  ]},{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Input lag",  "description": "Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-02T12:19:55.296Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Hisense UR9",    "TCL QM8L",    "Hisense UR8",    "4K 60Hz",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Hisense UR9 – 4K 60Hz",      "value": 12,      "unitText": "ms"    },    {      "@type": "PropertyValue",      "name": "TCL QM8L – 4K 60Hz",      "value": 9.5,      "unitText": "ms"    },    {      "@type": "PropertyValue",      "name": "Hisense UR8 – 4K 60Hz",      "value": 11.7,      "unitText": "ms"    }  ]}]</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-02T12:19:55.296Z","state":{"data":[{"productName":"Hisense UR9","attribute":"4K 60Hz","value":12,"unit":"ms","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"4K 60Hz","value":9.5,"unit":"ms","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"4K 60Hz","value":11.7,"unit":"ms","site":"TechRadar"}],"products":["Hisense UR9","TCL QM8L","Hisense UR8"],"attributes":["4K 60Hz"],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Input lag","subhead":"Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[{"id":"slide-1793621824168","snapshot":{"selectedProducts":["Hisense UR9","TCL QM8L","Hisense UR8"],"selectedPrimaryProduct":"Hisense UR9","selectedAttributes":["HDR Filmmaker Mode (10% window)","HDR Standard Mode (10% window)","SDR Filmmaker Mode (10% window)","SDR Standard Mode (10% window)","HDR Filmmaker Mode (Fullscreen)","HDR Standard Mode (Fullscreen)","SDR Filmmaker Mode (Fullscreen)","SDR Standard Mode (Fullscreen)"],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["HDR Filmmaker Mode (10% window)","HDR Filmmaker Mode (Fullscreen)"]},{"name":"Group 2","attributes":["HDR Standard Mode (10% window)","HDR Standard Mode (Fullscreen)"]},{"name":"Group 3","attributes":["SDR Filmmaker Mode (10% window)","SDR Filmmaker Mode (Fullscreen)"]},{"name":"Group 4","attributes":["SDR Standard Mode (10% window)","SDR Standard Mode (Fullscreen)"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Dropdown","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Brightness measurements","subhead":"Subhead to describe the test and what's being measured and why","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"dataOverride":[{"productName":"Hisense UR9","attribute":"HDR Filmmaker Mode (10% window)","value":4370,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"HDR Standard Mode (10% window)","value":3003,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"SDR Filmmaker Mode (10% window)","value":188,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"SDR Standard Mode (10% window)","value":2175,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"HDR Filmmaker Mode (Fullscreen)","value":1096,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"HDR Standard Mode (Fullscreen)","value":1124,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"SDR Filmmaker Mode (Fullscreen)","value":227,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"SDR Standard Mode (Fullscreen)","value":794,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"HDR Filmmaker Mode (10% window)","value":3719,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"HDR Standard Mode (10% window)","value":3771,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"SDR Filmmaker Mode (10% window)","value":229,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"SDR Standard Mode (10% window)","value":518,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"HDR Filmmaker Mode (Fullscreen)","value":759,"unit":"nits","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"HDR Standard Mode (Fullscreen)","value":795,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"HDR Filmmaker Mode (10% window)","value":2097,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"HDR Standard Mode (10% window)","value":2394,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"SDR Filmmaker Mode (10% window)","value":314,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"SDR Standard Mode (10% window)","value":1514,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"HDR Filmmaker Mode (Fullscreen)","value":771,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"HDR Standard Mode (Fullscreen)","value":767,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"SDR Filmmaker Mode (Fullscreen)","value":372,"unit":"nits","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"SDR Standard Mode (Fullscreen)","value":778,"unit":"nits","site":"TechRadar"}]}},{"id":"slide-1793621894581","snapshot":{"selectedProducts":["Hisense UR9","TCL QM8L","Hisense UR8"],"selectedPrimaryProduct":"Hisense UR9","selectedAttributes":["UHDA-P3","BT.2020"],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["UHDA-P3","BT.2020"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"HDR color gamut","subhead":"Closer to 100% is better. Taken using a colorimeter and test pattern generator.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"dataOverride":[{"productName":"Hisense UR9","attribute":"UHDA-P3","value":99.8,"unit":"","site":"TechRadar"},{"productName":"Hisense UR9","attribute":"BT.2020","value":93.1,"unit":"","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"UHDA-P3","value":97.9,"unit":"","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"BT.2020","value":90.3,"unit":"","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"UHDA-P3","value":145,"unit":"","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"BT.2020","value":95.1,"unit":"","site":"TechRadar"}]}},{"id":"slide-1793621949647","snapshot":{"selectedProducts":["Hisense UR9","TCL QM8L","Hisense UR8"],"selectedPrimaryProduct":"Hisense UR9","selectedAttributes":["Delta-E"],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Picture accuracy","subhead":"A lower score is better. Taken using a colorimeter and test pattern generator.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"dataOverride":[{"productName":"Hisense UR9","attribute":"Delta-E","value":2.7,"unit":"","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"Delta-E","value":3.7,"unit":"","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"Delta-E","value":7.9,"unit":"","site":"TechRadar"}]}},{"id":"slide-1793621995294","snapshot":{"selectedProducts":["Hisense UR9","TCL QM8L","Hisense UR8"],"selectedPrimaryProduct":"Hisense UR9","selectedAttributes":["4K 60Hz"],"productColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense UR9","color":"#2E6E93"},{"productName":"TCL QM8L","color":"#E8238C"},{"productName":"Hisense UR8","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Input lag","subhead":"Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"dataOverride":[{"productName":"Hisense UR9","attribute":"4K 60Hz","value":12,"unit":"ms","site":"TechRadar"},{"productName":"TCL QM8L","attribute":"4K 60Hz","value":9.5,"unit":"ms","site":"TechRadar"},{"productName":"Hisense UR8","attribute":"4K 60Hz","value":11.7,"unit":"ms","site":"TechRadar"}]}}]}</script><div id="fv-chart-1793621995295-o52s1xgav-slideshow" class="fv-slideshow-container" data-slide-count="4" data-iframe-height="true"><div class="fv-slideshow-nav-row"><button class="fv-nav-btn prev disabled" aria-label="Previous Slide"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg><span>Previous</span></button><div class="fv-slide-counter">1 / 4</div><button class="fv-nav-btn next" aria-label="Next Slide"><span>Next</span><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg></button></div><div class="fv-slides-wrapper"><div class="fv-slide" id="fv-chart-1793621995295-o52s1xgav-slide-0-wrapper" data-index="0" style="display: block;"><div id="fv-chart-1793621995295-o52s1xgav-slide-0" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Brightness measurements</h3><div class="fv-dropdown-wrapper"><div class="fv-dropdown-title-container"><select class="fv-dropdown-title"><option value="0">HDR Filmmaker Mode</option><option value="1">HDR Standard</option><option value="2">SDR Filmmaker Mode</option><option value="3">SDR Standard</option></select><div class="fv-dropdown-chevron"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg></div></div></div><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-0-grouped-bar-Group 1" data-chart-type="Bar" data-title="HDR Filmmaker Mode" data-subhead="" data-caption="" data-grouped-show-product-name="true" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 72.83333333333334%; background-color: #2E6E93;" data-target-width="72.83333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">4370</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 18.266666666666666%; background-color: #2E6E93;" data-target-width="18.266666666666666" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1096</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 61.983333333333334%; background-color: #E8238C;" data-target-width="61.983333333333334" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3719</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 12.65%; background-color: #E8238C;" data-target-width="12.65" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">759</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 34.949999999999996%; background-color: #5DA8D4;" data-target-width="34.949999999999996" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2097</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 12.85%; background-color: #5DA8D4;" data-target-width="12.85" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">771</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>1,500</span><span>3,000</span><span>4,500</span><span>6,000</span></div><div class="fv-x-axis-unit">nits</div></div></div><table class="sr-only"><caption>HDR Filmmaker Mode Data</caption><thead><tr><th>Product</th><th>HDR Filmmaker Mode (10% window) (nits)</th><th>HDR Filmmaker Mode (Fullscreen) (nits)</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>4370</td><td>1096</td></tr><tr><td>TCL QM8L</td><td>3719</td><td>759</td></tr><tr><td>Hisense UR8</td><td>2097</td><td>771</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-0-grouped-bar-Group 2" data-chart-type="Bar" data-title="HDR Standard" data-subhead="" data-caption="" data-grouped-show-product-name="true" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 75.075%; background-color: #2E6E93;" data-target-width="75.075" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3003</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 28.1%; background-color: #2E6E93;" data-target-width="28.1" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1124</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 94.27499999999999%; background-color: #E8238C;" data-target-width="94.27499999999999" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3771</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 19.875%; background-color: #E8238C;" data-target-width="19.875" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">795</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 59.85%; background-color: #5DA8D4;" data-target-width="59.85" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2394</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">HDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 19.175%; background-color: #5DA8D4;" data-target-width="19.175" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">767</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>1,000</span><span>2,000</span><span>3,000</span><span>4,000</span></div><div class="fv-x-axis-unit">nits</div></div></div><table class="sr-only"><caption>HDR Standard Data</caption><thead><tr><th>Product</th><th>HDR Standard Mode (10% window) (nits)</th><th>HDR Standard Mode (Fullscreen) (nits)</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>3003</td><td>1124</td></tr><tr><td>TCL QM8L</td><td>3771</td><td>795</td></tr><tr><td>Hisense UR8</td><td>2394</td><td>767</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-0-grouped-bar-Group 3" data-chart-type="Bar" data-title="SDR Filmmaker Mode" data-subhead="" data-caption="" data-grouped-show-product-name="true" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 47%; background-color: #2E6E93;" data-target-width="47" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">188</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 56.75%; background-color: #2E6E93;" data-target-width="56.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">227</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 57.25%; background-color: #E8238C;" data-target-width="57.25" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">229</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 0%; background-color: #E8238C;" data-target-width="0" data-target-margin="0"></div><span class="fv-bar-value-outside">0</span></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 78.5%; background-color: #5DA8D4;" data-target-width="78.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">314</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Filmmaker Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 93%; background-color: #5DA8D4;" data-target-width="93" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">372</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>100</span><span>200</span><span>300</span><span>400</span></div><div class="fv-x-axis-unit">nits</div></div></div><table class="sr-only"><caption>SDR Filmmaker Mode Data</caption><thead><tr><th>Product</th><th>SDR Filmmaker Mode (10% window) (nits)</th><th>SDR Filmmaker Mode (Fullscreen) (nits)</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>188</td><td>227</td></tr><tr><td>TCL QM8L</td><td>229</td><td>N/A</td></tr><tr><td>Hisense UR8</td><td>314</td><td>372</td></tr></tbody></table></div></div><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-0-grouped-bar-Group 4" data-chart-type="Bar" data-title="SDR Standard" data-subhead="Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu." data-caption="" data-grouped-show-product-name="true" style="display: none;"><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 72.5%; background-color: #2E6E93;" data-target-width="72.5" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2175</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 26.466666666666665%; background-color: #2E6E93;" data-target-width="26.466666666666665" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">794</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 17.266666666666666%; background-color: #E8238C;" data-target-width="17.266666666666666" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">518</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 0%; background-color: #E8238C;" data-target-width="0" data-target-margin="0"></div><span class="fv-bar-value-outside">0</span></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (10% window)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 50.46666666666667%; background-color: #5DA8D4;" data-target-width="50.46666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">1514</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">SDR Standard Mode (Fullscreen)</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 25.933333333333337%; background-color: #5DA8D4;" data-target-width="25.933333333333337" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">778</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>750</span><span>1,500</span><span>2,250</span><span>3,000</span></div><div class="fv-x-axis-unit">nits</div></div></div><table class="sr-only"><caption>SDR Standard Data</caption><thead><tr><th>Product</th><th>SDR Standard Mode (10% window) (nits)</th><th>SDR Standard Mode (Fullscreen) (nits)</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>2175</td><td>794</td></tr><tr><td>TCL QM8L</td><td>518</td><td>N/A</td></tr><tr><td>Hisense UR8</td><td>1514</td><td>778</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div></div><div class="fv-slide" id="fv-chart-1793621995295-o52s1xgav-slide-1-wrapper" data-index="1" style="display: none;"><div id="fv-chart-1793621995295-o52s1xgav-slide-1" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">HDR color gamut</h3><p class="fv-chart-subhead">Closer to 100% is better. Taken using a colorimeter and test pattern generator.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-1-grouped-bar-Group 1" data-chart-type="Bar" data-title="HDR Filmmaker Mode" data-subhead="Closer to 100% is better. Taken using a colorimeter and test pattern generator." data-caption="" data-grouped-show-product-name="true" style=""><div class="fv-benchmark-group"><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title fv-primary-product">Hisense UR9</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">UHDA-P3</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 66.53333333333333%; background-color: #2E6E93;" data-target-width="66.53333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">99.8</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">BT.2020</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 62.066666666666656%; background-color: #2E6E93;" data-target-width="62.066666666666656" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">93.1</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">TCL QM8L</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">UHDA-P3</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 65.26666666666668%; background-color: #E8238C;" data-target-width="65.26666666666668" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">97.9</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">BT.2020</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 60.199999999999996%; background-color: #E8238C;" data-target-width="60.199999999999996" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">90.3</span></div></div></div></div></div></div><div class="fv-grouped-bar-product"><div class="fv-grouped-product-title-wrapper"><div class="fv-grouped-product-title ">Hisense UR8</div></div><div class="fv-bar-cluster"><div class="fv-bar-row"><div class="fv-bar-label">UHDA-P3</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 96.66666666666667%; background-color: #5DA8D4;" data-target-width="96.66666666666667" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">145</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label">BT.2020</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 63.4%; background-color: #5DA8D4;" data-target-width="63.4" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">95.1</span></div></div></div></div></div></div><div class="fv-x-axis-wrapper fv-grouped-x-axis"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>37.5</span><span>75</span><span>112.5</span><span>150</span></div></div></div><table class="sr-only"><caption>HDR Filmmaker Mode Data</caption><thead><tr><th>Product</th><th>UHDA-P3 ()</th><th>BT.2020 ()</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>99.8</td><td>93.1</td></tr><tr><td>TCL QM8L</td><td>97.9</td><td>90.3</td></tr><tr><td>Hisense UR8</td><td>145</td><td>95.1</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div></div><div class="fv-slide" id="fv-chart-1793621995295-o52s1xgav-slide-2-wrapper" data-index="2" style="display: none;"><div id="fv-chart-1793621995295-o52s1xgav-slide-2" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Picture accuracy</h3><p class="fv-chart-subhead">A lower score is better. Taken using a colorimeter and test pattern generator.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-2-bar-Delta-E" data-chart-type="Bar" data-title="SDR Delta-E" data-subhead="A lower score is better. Taken using a colorimeter and test pattern generator." data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">SDR Delta-E</h4><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Hisense UR9</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 33.75%; background-color: #2E6E93;" data-target-width="33.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">2.7</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">TCL QM8L</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 46.25%; background-color: #E8238C;" data-target-width="46.25" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">3.7</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Hisense UR8</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 98.75%; background-color: #5DA8D4;" data-target-width="98.75" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">7.9</span></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span></div></div></div><table class="sr-only"><caption>SDR Delta-E Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>2.7</td></tr><tr><td>TCL QM8L</td><td>3.7</td></tr><tr><td>Hisense UR8</td><td>7.9</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div></div><div class="fv-slide" id="fv-chart-1793621995295-o52s1xgav-slide-3-wrapper" data-index="3" style="display: none;"><div id="fv-chart-1793621995295-o52s1xgav-slide-3" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper    "><h3 class="fv-chart-title">Input lag</h3><p class="fv-chart-subhead">Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793621995295-o52s1xgav-slide-3-bar-4K 60Hz" data-chart-type="Bar" data-title="4K 60Hz" data-subhead="Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester." data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">4K 60Hz</h4><div class="fv-bar-row"><div class="fv-bar-label fv-primary-product">Hisense UR9</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 80%; background-color: #2E6E93;" data-target-width="80" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">12</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">TCL QM8L</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 63.33333333333333%; background-color: #E8238C;" data-target-width="63.33333333333333" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">9.5</span></div></div></div></div><div class="fv-bar-row"><div class="fv-bar-label ">Hisense UR8</div><div class="fv-bar-container"><div class="fv-bar" style="margin-left: 0%; width: 77.99999999999999%; background-color: #5DA8D4;" data-target-width="77.99999999999999" data-target-margin="0"><div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important; flex-direction: row;"><span></span><span class="fv-bar-inner-value">11.7</span></div></div></div></div><div class="fv-x-axis-wrapper"><div class="fv-x-axis-label-space"></div><div class="fv-x-axis-chart-space"><div class="fv-x-axis-line"></div><div class="fv-x-axis-ticks"><span>0</span><span>3.75</span><span>7.5</span><span>11.25</span><span>15</span></div><div class="fv-x-axis-unit">ms</div></div></div><table class="sr-only"><caption>4K 60Hz Data</caption><thead><tr><th>Product</th><th>Value</th></tr></thead><tbody><tr><td>Hisense UR9</td><td>12</td></tr><tr><td>TCL QM8L</td><td>9.5</td></tr><tr><td>Hisense UR8</td><td>11.7</td></tr></tbody></table></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (true) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                var slideshowContainer = document.getElementById(uniqueId + '-slideshow');    if (slideshowContainer) {        var currentSlideIndex = 0;        var slides = slideshowContainer.querySelectorAll('.fv-slide');        var counter = slideshowContainer.querySelector('.fv-slide-counter');        var prevBtn = slideshowContainer.querySelector('.fv-nav-btn.prev');        var nextBtn = slideshowContainer.querySelector('.fv-nav-btn.next');        var dropdown = slideshowContainer.querySelector('.fv-slideshow-select');        function updateControls(index) {            if (counter) counter.textContent = (index + 1) + ' / ' + slides.length;            if (dropdown) dropdown.value = index;                        if (prevBtn) {                if (index === 0) prevBtn.classList.add('disabled');                else prevBtn.classList.remove('disabled');            }            if (nextBtn) {                if (index === slides.length - 1) nextBtn.classList.add('disabled');                else nextBtn.classList.remove('disabled');            }        }        function showSlide(index) {            if (index < 0) return;            if (index >= slides.length) return;                        currentSlideIndex = index;                        slides.forEach(function(slide, i) {                slide.style.display = i === index ? 'block' : 'none';                if (i === index) {                    var chartEl = slide.querySelector('.fv-chart-wrapper');                    if (chartEl) {                        fvLocalAnimate(chartEl);                    }                }            });                        updateControls(currentSlideIndex);        }        if (prevBtn) {            prevBtn.addEventListener('click', function() { showSlide(currentSlideIndex - 1); });        }        if (nextBtn) {            nextBtn.addEventListener('click', function() { showSlide(currentSlideIndex + 1); });        }        if (dropdown) {            dropdown.addEventListener('change', function(e) { showSlide(parseInt(e.target.value)); });        }                updateControls(currentSlideIndex);                if (slides.length > 0) {            var firstChart = slides[0].querySelector('.fv-chart-wrapper');            if (firstChart) {                setTimeout(function() { fvLocalAnimate(firstChart); }, 100);            }        }    }          } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793621995295-o52s1xgav', true); });      } else {        initialize('fv-chart-1793621995295-o52s1xgav', true);      }    })();      </script></div><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-features"><span>Hisense UR9 RGB MiniLED TV review: Features</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="c6eh6JhuYaPDBLUujXkWx" name="Hisense UR9 audio settings" alt="Hisense UR9 audio settings" src="https://cdn.mos.cms.futurecdn.net/c6eh6JhuYaPDBLUujXkWx-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Comes with updated Dolby Vision 2</strong></li><li><strong>Google Gemini is conversational if slightly inaccurate</strong></li><li><strong>Comes with other AI-powered features including screensavers</strong></li></ul><p>Considering the price of the Hisense UR9, it’s no surprise that it has the smorgasbord of features one would expect. It comes with Dolby Vision IQ, which changes the picture based on ambient light. It also comes with <a href="https://www.techradar.com/tech-events/we-now-know-the-first-tv-brands-that-will-support-dolby-vision-2-and-one-has-been-very-prolific-at-ces-2026"><u>Dolby Vision 2</u></a>, the newly updated format that optimizes HDR content on a picture-by-picture basis using dynamic metadata. And, of course, the various HDR formats (HDR10, HDR10+ Adaptive, HLG) are all here as well. Internet connectivity is pretty fast too, thanks to Wi-Fi 6E.</p><p>This TV works with Apple HomeKit, Amazon Alexa, and has Google Cast and Google Assistant built in. And since there’s also far-field voice control on offer, you can basically interact with the TV to a large degree without a remote.</p><p>This particular feature runs through Google Gemini, Google’s AI-powered voice assistant. There are quite a few things I like about this voice assistant. Its conversational style, not to mention the various timbres to choose from, make it a more familiar experience (unless the uncanny valley-ness of it all is something that tends to get to you). I can ask it all sorts of things outside of controlling the TV, which is nice as well.</p><p>However, like my other experiences with Google Gemini, it’s not as accurate as one would hope, making it an imperfect companion for hands-free control, whether that means giving incorrect information about where something is streaming, or just posting up a bunch of YouTube videos about my requests instead of following through on my requests, which tend to be along the lines of: “Hey Google, play [insert content] on [streaming platform].”</p><p>Like other 2026 (and late 2025) TVs that I’ve interacted with, AI is the predominant buzzword that ties them altogether. It’s part of Google Gemini. It’s part of the RGB chipset. And it’s part of various other behind-the-scenes settings on the TV. Besides Google Gemini, the other user-facing feature utilizing AI is the screensaver where you can use either a photo from your Google account, artwork, or create AI artwork — a fun if, in my opinion, somewhat inconsequential feature.</p><ul><li><strong>Features score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-picture-quality"><span>Hisense UR9 RGB MiniLED TV review: Picture quality</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DZvsKawhfs2QP23VUbkQz" name="Hisense UR9 blooming in the movie Soul" alt="Hisense UR9 blooming in the movie Soul" src="https://cdn.mos.cms.futurecdn.net/DZvsKawhfs2QP23VUbkQz-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The colors are great, but there is some blooming as shown in this scene from the movie Soul </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Impressive BT.2020 coverage and color accuracy</strong></li><li><strong>Plenty of brightness on tap</strong></li><li><strong>Some slight blooming</strong></li></ul><p>On paper, RGB mini-LED TVs (or MicroRGB for certain brands) should be a game changer for picture quality. In practice, I wouldn't say it's quite that, but it is a vibrant and immersive screen that's mostly a pleasure to use.</p><p>Looking at benchmarks, it is impressive with an almost 100% UHDA-P3 and over 92% BT.2020 color coverage in filmmaker mode — the fantastic <a href="https://www.techradar.com/televisions/tcl-qm8l-review">TCL QM8L</a> I recently reviewed hit 87% BT.2020 (both TVs are advertised as hitting 100%, of course). </p><p>The color accuracy in filmmaker mode is also a fairly impressive Delta E > 2.2 (closer to 0 is better), though it shoots up to 9.9 in standard mode. Changing into filmmaker mode on any TV greatly affects the colors shown onscreen, but it's never been so noticeable as it is on this TV.</p><p>Just like other more premium 2026 options, the brightness is more than enough. In our benchmarks, we recorded 227 nits in filmmaker mode and almost 800 in standard. And in our luminance benchmarks, it reached 4370 nits for 10% window and almost 1,100 in full screen for filmmaker mode.</p><p>I actually found the screen almost too bright. One of the reasons I like using filmmaker mode, especially on TV is the much reduced brightness. Of course, it still retains all the detail, whether it's the individual floorboards on a basketball court or the individual stars in the vastness of afterlife space per the movie <em>Soul</em>.</p><p>The picture is also smooth without any judder when there’s a lot of action, whether I’m watching some sports, movies, or even video games. For instance, watching the Detroit Pistons attempt a playoff comeback was as engaging as could be. I could keep track of not only the ball, but all the players whether they're running a pick and roll or grabbing a rebound.</p><p>Funnily enough, that is without all the AI clarity-related features. AI Super Resolution does sharpen things up a little, though I could see the AI in the player's faces at the highest settings. The Motion Enhancement smooths out the action a bit, which I found unnecessary, while the Motion Clearness sacrifices some of the picture fidelity for keeping up with the action. Also unnecessary with this TV.</p><p>However, when using those features for older content — say old, forgotten videos from the early days of YouTube — they do a decent job upscaling grainier content into something a little more pleasant and updated looking. While I wouldn't say older content looks 4K, it does look cleaner, sharper, and with better color.</p><p>The lone issue I found with the image quality is that it’s not as good at controlling blooming (also known as the Halo effect) due to the way RGB LEDs work. Since the red, blue, and yellow LEDs sit right next to each other, there’s more opportunity for cross talk between pixels than other TVs of similar quality that use a single LED in the same place with a filter creating the color.</p><p>I pulled up the usual screen tests on YouTube and didn’t really notice this too much as the image was sharp and clean. However, when watching Disney’s <em>Soul</em>, I noticed that when the main character enters the afterlife for the first time and is now a glowing avatar instead of a human in a void, he has a glow around him. Now, that’s somewhat intentional but it’s more muted on the other TVs I have accessible to me for comparison (the <a href="https://www.techradar.com/televisions/tcl-qm8l-review">TCL QM8L</a> and the <a href="https://www.techradar.com/televisions/roku-pro-series-review">Roku Pro Series</a> TVs, specifically). This is, unfortunately, just a current limitation of RGB LED technology.</p><p>Back on the positives, the Hisense UR9 offers a number of picture modes including Film Maker Mode and IMAX Enhanced to take advantage of different content, something you don’t find (or at least to the same degree) on cheaper televisions.</p><ul><li><strong>Picture quality score: 4/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-sound-quality"><span>Hisense UR9 RGB MiniLED TV review: Sound quality</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jEt9HAkoZttPi2hyzprXT3" name="Hisense UR9 woofers on back of the TV" alt="Hisense UR9 woofers on back of the TV" src="https://cdn.mos.cms.futurecdn.net/jEt9HAkoZttPi2hyzprXT3-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Hisense UR9 has visible woofers on the back of the TV </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>110W of power with 4.1.2 virtualized spatial audio system</strong></li><li><strong>Sounds good except mids are bit forward</strong></li><li><strong>Room calibration and Intelligent settings help TV sound better</strong></li></ul><p>If you’re a TV manufacturer wanting to upgrade the audio experience, having Devialet tune your TV as the company has done with the Hisense UR9 is a good move. And I can confirm that the Hisense UR9 sounds pretty decent on its own.</p><p>Without an additional soundbar, this TV has up to 110 watts of power and provides a 4.1.2 multi-channel surround experience (6.2.2 channel audio in 100-inch), though you won’t get a full surround sound experience as all the speakers are in the TV, either pointing down or back. And when using Dolby Atmos content, it only produces a virtualized version when just using the TV speakers.</p><p>Now, the actual sound quality is good for a TV if not quite amazing. There’s a bit of a peak in the mid-bass on standard mode that gives the audio a bit of a bloated feel. However, this is easily mitigated, either by using the seven-band equalizer hidden in the bowels of the audio settings and pulling the 500Hz slider down a few ticks to taste (I had it at -4). Or if you’re lazy like me, just turn on the Intelligent Sound feature in the Intelligent Settings and it will do it for you.</p><p>The bass is decent for a TV without an actual subwoofer, though you’ll want to add one if you want that theater experience. And the high-end is clear and present.</p><p>There’s also a room calibration feature that, like the Intelligent Sound feature, will right the audio ship of this TV with minimal effort.</p><p>Of course, if you want to really upgrade the audio experience, this TV does pair with the Hisense HT Saturn speakers, which not only provides a surround sound and spatial audio experience, but also has specific features such as Hi-Concerto (using both the speakers of the sound system and the TV in tandem) among others.</p><ul><li><strong>Sound quality score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-design"><span>Hisense UR9 RGB MiniLED TV review: Design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KNxS5VGRsyC8ewzu73Un93" name="Hisense UR9 USB-C port with DisplayPort support" alt="Hisense UR9 USB-C port with DisplayPort support" src="https://cdn.mos.cms.futurecdn.net/KNxS5VGRsyC8ewzu73Un93-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The USB-C port with DisplayPort support is separated out from the rest of the ports on the side of the TV. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Semi-adjustable central stand</strong></li><li><strong>A little bit on the thick side</strong></li><li><strong>Three HDMI 2.1 and a USB-C port with DisplayPort support</strong></li></ul><p>I feel like a broken record sometimes, but I will always tout the benefits of a central stand. So when I unboxed the Hisense UR9 and saw that the base was one central stand instead of legs on the far corners of the panel, I was thankful. I was maybe a little less thankful screwing in the base into the accompanying stand and then the stand into the back of the TV (I did do this alone so it will be significantly easier if you enlist a second person). But I did at least appreciate that the stand can be screwed into four different heights, so you can adjust how high the panel sits off the TV stand.</p><p>The panel uses very thin bezels — I feel like that’s more standard than not these days — with the exception of the bottom one that also holds the sensor. A little more unusual is the thickness of this TV. Make no mistake: this is still a flat panel TV, but it is just under two inches thick. Of course, if you’re into mounting your TV, it will sit a little more flush than the typical TV, due to the lack of unsightly bulge on the back.</p><p>When I unboxed the Hisense UR9, I was surprised by the fact that it only came with three HDMI ports. However, not only are they of the 2.1 variety so they support 4K at up to 180Hz (great for next-gen consoles that get up to 120 fps), but there’s also a USB-C port with <a href="https://www.techradar.com/televisions/someone-finally-did-it-a-high-end-tv-with-a-displayport-connection-actually-is-coming-this-year-including-4k-180hz-support"><u>DisplayPort</u></a> support. That's great for plugging in a PC for professionals that want to use a TV to work on — although, let’s be real, PC gamers are probably the ones who’ll take most advantage of this.</p><p>As far as controls go, there’s just a single button on the bottom of the TV so don’t lose that remote. Thankfully, the fully backlit remote is on the bigger side so it’s not easy to lose. Of course, you can always just talk to the Hisense UR9 using Google Gemini.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-smart-tv-and-menus"><span>Hisense UR9 RGB MiniLED TV review: Smart TV and menus</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8JVLVHDGXQdq6ispBDm8M3" name="Hisense UR9 Google TV frontpage" alt="Hisense UR9 Google TV frontpage" src="https://cdn.mos.cms.futurecdn.net/8JVLVHDGXQdq6ispBDm8M3-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Google TV front page is easy to navigate, but does prioritize Google-related content </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Google TV interface is intuitive if a bit YouTube-biased</strong></li><li><strong>Settings menus could be a little better organized</strong></li><li><strong>Google Gemini can be used to adjust settings</strong></li></ul><p>If the Fire TV interface that Amazon TVs come with seem to focus too much on Prime-related content, then the Google TV interface used here is a little too YouTube happy. But, outside of that bias, the layout of the interface is pretty intuitive for getting to content.</p><p>Not only does it feature tailored suggestions in the banner that takes up half of the screen, but it follows it with a row of suggestions across different streaming services as well as a “Continue Watching” row. Of course, the apps are also lined up in a row if you prefer to dig deep that way.</p><p>There’s plenty of Google TV-specific content even if you don’t use YouTube, with a good number of free channels playing content in a similar fashion as live cable (or cable-like streaming platforms like YouTube TV).</p><p>My only real gripe with Google TV is navigating the settings menu. This is mainly because it does require some digging to get to certain features. For instance, the room correction or calibration feature for audio is not available under audio, but under intelligent settings. While this sort of makes sense, it should also be under the audio settings since any adjustments I make to audio should be available there.</p><p>For picture settings, I did appreciate the number of various parameters available for adjusting. I can change the Gamma, for instance, as well as multiple motion blur and smoothing options, to name just a few.</p><p>Lastly, I’ve already talked about Google Gemini earlier, but it is a valid way of navigating this TV and its settings. However, besides the other issues I mentioned earlier, for whatever reason it just won’t directly play content from a voice command.</p><ul><li><strong>Smart TV &amp; menus score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-gaming"><span>Hisense UR9 RGB MiniLED TV review: Gaming</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tPdAwn5X7pDqiqiCHNKK23" name="Hisense UR9 PS5 gaming - Lies of P" alt="Hisense UR9 PS5 gaming - Lies of P" src="https://cdn.mos.cms.futurecdn.net/tPdAwn5X7pDqiqiCHNKK23-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Hisense UR9's vibrant screen and great contrast make it a great TV for gaming </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Supports 4K at up to 180Hz depending on input</strong></li><li><strong>Plenty of gaming features on offer</strong></li><li><strong>Game Bar requires some menu diving to access</strong></li></ul><p>To test the gaming capabilities of the Hisense UR9, I plugged in a PlayStation 5 and played a number of games. Besides getting that 4K at 144Hz (capped at 120 by the PS5) performance afforded by the HDMI 2.1, being able to take advantage of HDR is nice as well.</p><p>There are also a number of features on offer. For example, there’s a game bar accessible through the menu that allows one to change settings like picture mode, Game Booster 330 (which supports a higher variable refresh rate) and turn on AMD Freesync, as well as see max frames of a game as not all PS5 games can go above 60 FPS.</p><p>The one annoying thing about the game bar is that there’s no way to pull it up directly. If I press the settings button on the remote, I just get the regular box out of “quick settings” for the TV. I have to press the menu button instead, which brings up a different type of quick settings across the bottom of the screen where I can select the game bar. Then the game bar HUD pops up with the various options for adjusting at the bottom and some metrics at the top including the FPS counter. </p><p>It may be a minor annoyance, but I’ve dealt with TVs where a long press somewhere on the remote while in game mode (the TV will automatically switch to game mode if enabled) will bring up the game bar menu.</p><p>In terms of gaming experiences on the TV, it’s impeccable. I get a clean, smooth image with plenty of detail. The only time I really had any issue was when I somehow had the TV in filmmaker mode and couldn’t see anything in the shadows of <em>Lies of P</em>, which at the time was about 75% of the screen.</p><p>Lastly, if you plan on doing any PC gaming on this, that USB-C port with 180Hz refresh rate will do wonders for any fast-paced <em>Call of Duty</em>-type action.</p><ul><li><strong>Gaming score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-value"><span>Hisense UR9 RGB MiniLED TV review: Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kHALZRMqttgVSQCK94mDVC" name="The Hisense UR9 with screen test video" alt="The Hisense UR9 with screen test video" src="https://cdn.mos.cms.futurecdn.net/kHALZRMqttgVSQCK94mDVC-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The Hisense UR9 showing a drone shot of a landscape </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><ul><li><strong>Marginally cheaper than other RGB LED TVs</strong></li><li><strong>Paying a premium for new tech </strong></li><li><strong>Other non-RGB LED TVs offer better value currently</strong></li></ul><p>Let’s face it. New tech is expensive. Therefore, RGB LED TVs are going to be pricey and, as an upgrade for your living room, they’re really not that great of a value. If you go for an RGB LED TV now, you’re an early adopter. A few generations from now, that might change. But, for now, you’re paying to be one of the first to have this technology.</p><p>The Hisense UR9 is going to be priced similarly to other RGB LED TVs, although now we've started to see discounts hitting some of these models, the Hisense is inching out just in front in terms of value.</p><p>Starting with LG's MRGB95B, its smallest size is 75 inches, which goes for $3,599.99 / AU$7,995 (around £2,710), while the 86-inch is $5,299.99 / £4,799 / AU$9,995, and the 100-inch is $6,999.99 / £9,999.98 / AU$17,995. Conversely, the Hisense UR9 is $2,499 / £2,299 / AU$3,995 at the 75-inch size, while the 85-inch model is $3,499 / £2,999 / AU$4,995 and the 100-inch goes for $4,999.99 (£4,510 / AU$8,520). So, out of the two, the Hisense is definitely coming out cheapest as things stand.</p><p>Samsung, another early adopter of RGB LED, is charging (65-inch) $2,499.99 / £2,599 / AU$5,295, (75-inch) $3,499.99 / £3,599 / AU$7,995, and (85-inch) $4,999.99 / £5,299 / AU$9,995 for the R95H model. Given Samsung's TV is the priciest of the three, the Hisense UR9 works out the best value for RGB LED TVs.</p><p>However, if we look at non-RGB LED TVs, like the TCL QM8L I just tested, they tend to offer an almost identical experience in terms of picture quality and features, though with better sound. That TCL QM8L, which has 4,000 local dimming zones, starts at $1,799.99 for the 65-inch model and goes up to $4,999.99 for the 98-inch.</p><ul><li><strong>Value score: 3.5/5 </strong></li></ul><h2 class="article-body__section" id="section-should-i-buy-the-hisense-ur9-rgb-miniled-tv"><span>Should I buy the Hisense UR9 RGB MiniLED TV?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3jvoDWiPinvqJZqmaxbHYa" name="Hisense UR9 showing Magnet of Doom (L'aîné des Ferchaux)," alt="Hisense UR9 showing Magnet of Doom (L'aîné des Ferchaux)," src="https://cdn.mos.cms.futurecdn.net/3jvoDWiPinvqJZqmaxbHYa-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Hisense UR9 showcasing its upscaling with Magnet of Doom (L'aîné des Ferchaux) </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future / James Holland)</span></figcaption></figure><div ><table><caption>Hisense UR9 RGB MiniLED TV</caption><thead><tr><th class="firstcol " ><p>Attributes</p></th><th  ><p>Notes</p></th><th  ><p>Rating</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Features</p></td><td  ><p>Dolby Vision 2 and Google Gemini may be the most exciting features, but they’re just a few that are on offer.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Picture quality</p></td><td  ><p>This TV’s gorgeous picture quality provided by the RGB mini-LEDs is also somewhat held back by that tech, as there is some minor blooming.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Sound quality</p></td><td  ><p>The Hisense UR9 may have a bump in the mids, but that’s easily fixable either through the seven-band EQ, Intelligent Audio settings, or included AI room calibration.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>It might on the thick side, but there’s little to complain about here. The center base is solid and comes with some height adjustment. And the USB-C with DisplayPort support is a novel inclusion.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Smart TV and menus</p></td><td  ><p>Google TV is intuitive if a bit Google-content biased. Menu diving can be a little frustrating sometimes, however there are a lot of parameters available to finetune.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Gaming</p></td><td  ><p>From the picture quality to gaming specific features like AMD Freesync, this TV is made for gaming. Too bad, the gaming bar menu requires some menu diving.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>RGB LED TVs may be expensive, but the UR9's price drop makes it a good option. Of course, non-RGB LED TVs are still a bit better in terms of value.</p></td><td  ><p>3.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-9">Buy it if...</h2><div class="product"><p><strong>You want new tech</strong><br />The concept and execution of RGB mini-LEDs is pretty cool, and if you want to be one of the first users with this kind of TV, the Hisense UR9 is a worthy option.</p></div><div class="product"><p><strong>You’re a gamer</strong><br />The fact that you can go up to 180Hz through the HDMI or USB-C (DisplayPort support) ports is fairly unique. Plus, plenty of the other features on offer like AMD Freesync make this a great TV for gamers.</p></div><div class="product"><p><strong>You’re looking for color coverage and accuracy</strong><br />Everyone is touting their 2026 TV as having 100% BT.2020 color coverage. This TV gets closer than plenty of the competition. And the color accuracy is pretty good too.</p></div><h2 id="don-39-t-buy-it-if-6">Don't buy it if…</h2><div class="product"><p><strong>You care about value or your choice of retailer</strong><br />The Hisense UR9 is expensive (and not great value) like other RGB LED TVs.</p></div><div class="product"><p><strong>You care about blooming</strong><br />The one downside of RGB LEDs is blooming. While very minor, it’s more noticeable than on non-RGB LED TVs.</p></div><h2 class="article-body__section" id="section-hisense-ur9-rgb-miniled-tv-review-also-consider"><span>Hisense UR9 RGB MiniLED TV review: also consider</span></h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Hisense UR9 RGB MiniLED TV</p></th><th  ><p>TCL QM8L (C8L in other regions)</p></th><th  ><p>Hisense UR8</p></th><th  ><p><strong>Hisense U65QF</strong></p></th><th  ><p>LG C6</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Price (65-inch)</p></td><td  ><p>$1,699.99 / £1,699 / AU$2,995</p></td><td  ><p>$1,799.99 / £1,499 / AU$2,695</p></td><td  ><p>$1,199.99 / £1,299.99 / AU$2,495</p></td><td  ><p>$999</p></td><td  ><p>$1,399 / £1,699 / AU$3,295</p></td></tr><tr><td class="firstcol " ><p>Screen type</p></td><td  ><p>RGB mini-LED</p></td><td  ><p>SQD mini-LED</p></td><td  ><p>RGB mini-LED</p></td><td  ><p>QLED w/ mini-LED</p></td><td  ><p>OLED</p></td></tr><tr><td class="firstcol " ><p>Refresh rate</p></td><td  ><p>180Hz</p></td><td  ><p>144Hz</p></td><td  ><p>144Hz</p></td><td  ><p>upt to 144Hz</p></td><td  ><p>144Hz</p></td></tr><tr><td class="firstcol " ><p>HDR support</p></td><td  ><p>HDR10, HDR10+, HLG, Dolby Vision</p></td><td  ><p>HDR10, HDR10+, HLG, Dolby Vision IQ</p></td><td  ><p>HDR10, HDR10+, HLG, Dolby Vision </p></td><td  ><p>Dolby Vision IQ, HDR10+, HDR10, HLG</p></td><td  ><p>Dolby Vision, HDR10, HLG</p></td></tr><tr><td class="firstcol " ><p>Smart TV</p></td><td  ><p>Google TV</p></td><td  ><p>Google TV</p></td><td  ><p>Google TV (US) / VIDAA (UK/Aus)</p></td><td  ><p>Fire TV</p></td><td  ><p>WebOS 25</p></td></tr><tr><td class="firstcol " ><p>HDMI ports</p></td><td  ><p>3 HDMI 2.1</p></td><td  ><p>4 HDMI 2.1</p></td><td  ><p>4 HDMI 2.1</p></td><td  ><p>4 (2x HDMI 2.1)</p></td><td  ><p>4x HDMI 2.1</p></td></tr></tbody></table></div><div class="product"><p><strong>TCL QM8L</strong><br />The TCL QM8L, known as the TCL C8L in other regions like the UK and Australia, is as quality of a TV as the Hisense UR9 while being a bit cheaper in some regions, since it’s not using RGB LED. It does all the other things (though it does have a lower refresh rate) and has a similarly bright screen, though it isn’t quite as accurate. Read our full <a href="https://www.techradar.com/televisions/tcl-qm8l-review" data-dimension112="c7def882-d380-11f1-a092-c57c086a04c5" data-action="Deal Block" data-label="TCL QM8L review" data-dimension48="TCL QM8L review" data-dimension25="">TCL QM8L review</a>.</p></div><div class="product"><p><strong>Hisense UR8</strong><br />The step-down model from the UR9, the Hisense UR8 delivers good picture and sound quality in its own right, and is cheaper than the flagship UR9. It doesn't deliver the same brightness however and the UR9 is only slightly pricier for a better overall quality of TV. Read our full <a href="https://www.techradar.com/televisions/its-not-an-oled-killer-yet-i-tested-hisenses-affordable-rgb-tv-and-while-i-like-its-picture-quality-and-performance-it-surprisingly-falls-short-in-the-area-i-had-the-highest-hopes-for" data-dimension112="09ea152c-d6b5-11f1-bdea-c16c9c79ceb4" data-action="Deal Block" data-label="Hisense UR8 review" data-dimension48="Hisense UR8 review" data-dimension25="">Hisense UR8 review</a>. </p></div><div class="product"><p><strong>Hisense U65QF</strong><br />The Hisense U65QF is very affordable for a mini-LED TV. It’s packed with features like Dolby Atmos, a 144Hz refresh rate, and Dolby Vision IQ. It also has Alexa built in, though not Alexa+. Finding the video settings does take some deep menu diving, and the Prime-focused interface is a bit of an acquired taste. Read our full <a href="https://www.techradar.com/televisions/hisense-u65qf-review" data-dimension112="c7def814-d380-11f1-9091-3fe3299cba5d" data-action="Deal Block" data-label="Hisense U65QF review." data-dimension48="Hisense U65QF review." data-dimension25="">Hisense U65QF review.</a></p></div><div class="product"><p><strong>LG C6</strong><br />The LG C6 is a big upgrade over its predecessor the LG C5 and while its sound could be better, its brilliant picture quality, suite of gaming features, and AI-powered interface are just some of the reasons it's such a good TV. Despite it being a 2026 model, it's cheaper in the US and the same price in the UK for the 65-inch model than the Hisense UR9. Read our full <a href="https://www.techradar.com/televisions/lg-c6-review" data-dimension112="c7def8f0-d380-11f1-a9a0-41a42ba028da" data-action="Deal Block" data-label="LG C6 review" data-dimension48="LG C6 review" data-dimension25="">LG C6 review</a>.</p></div><h2 class="article-body__section" id="section-how-i-tested-the-hisense-ur9-rgb-miniled-tv"><span>How I tested the Hisense UR9 RGB MiniLED TV</span></h2><ul><li><strong>I used the Hisense UR9 for a couple weeks</strong></li><li><strong>Tested with both TV, movies, music, and games</strong></li><li><strong>Benchmark measurements conducted by Future US testing lab</strong></li></ul><p>I used the Hisense UR9 regularly for a couple weeks. I tested it using streaming shows, movies, music, and games (via PS5). I went through the various features, particularly the hands-free Google Gemini, to see if it worked as advertised. I also spent time listening to the audio as well as paying attention to the picture quality.</p><p>The objective data measurements were taken by Future Publishing's TV testing lab, which uses the Klein K-10A colorimeter and Jeti 15VA spectroradiometer, Murideo Six G 8K Metal test pattern generator, and <a href="https://store.portrait.com/" target="_blank">Portrait Displays' Calman</a> color calibration software to record the results.</p><p>I’ve tested a lot of tech gear over the years, from laptops to speakers, and so have been able to use my expertise towards giving an honest and fair opinion, not to mention a critical eye, to any product I test.</p><p>You can read an in-depth overview of <a href="https://www.techradar.com/televisions/how-we-test-tvs-at-techradar">how we test TVs at TechRadar</a> at that link.</p><ul><li><em>First reviewed: October 2026</em></li><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar's reviews guarantee</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Wharfedale Denton 1S review: these compact little standmount speakers are all business  ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-wharfedale-denton-1s-two-minute-review"><span>Wharfedale Denton 1S: Two-minute review</span></h3><p>Wharfedale has been having a lovely old time with its range of ‘Heritage’ loudspeakers lately — revisiting, remixing and reworking some of its Greatest Hits. The new Denton 1S, though, is slightly different. It’s an update of a 1974 design that went all-out to present as modern and forward-thinking. And so this reinterpretation has a ‘modern retro’ vibe rather than the ‘antique’ feel of other Wharfedale ‘Heritage’ models.</p><p>The curvy cabinet with its recessed front baffle, the mildly dramatic coaxial driver arrangement (which sees the tweeter positioned in throat of the mid/bass driver) and the handily compact dimensions are all attractive — and the option of a fairly deep blue as a finish doesn’t do any harm in this respect either. The numbers, both in terms of frequency response and of sensitivity, are encouraging too.</p><p>And when they’re doing their thing, it’s immediately apparent that the Wharfedale Denton 1S are no mere pastiche — they are a profoundly competitive pair of loudspeakers on their own terms and yes, it's a good enough performance to make them some of the <a href="https://www.techradar.com/news/best-stereo-speakers">best stereo speakers</a> on the market, right now.</p><p>The sound is, ultimately, slightly small-scale — but it’s organised, confident, entertaining, loaded with detail and has real unity and singularity to the way it’s presented. Yes, $999 / £649 spent elsewhere on a small pair of passive standmount speakers will buy you something different in sonic terms, certainly, but it’s very debatable indeed as to whether it can buy you anything <em>better</em>. </p><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-price-and-release-date"><span>Wharfedale Denton 1S Review: Price and release date</span></h3><ul><li><strong>Launched May 31, 2026</strong></li><li><strong>List price of $999 / £649 / AU$1,699</strong></li></ul><p>The Wharfedale Denton 1S speakers are available now, and in the United Kingdom a pair will set you back £649. In the United States this solution costs $999, while in Australia the going rate is AU$1,699 or thereabouts.</p><p>At this money, the <em>just about</em> cheaper <a href="https://www.techradar.com/audio/speakers/dali-sonik-1-review">Dali Sonik 1</a> might be their chief competition, at $900 / £449.99 / AU$849. And just to throw it out there, while many pricier options obviously exist, <a href="https://www.techradar.com/audio/wireless-bluetooth-speakers/cambridge-l-r-s-review">Cambridge Audio's Award-winning active L/R S</a> can be yours for a little less, at $549 / £399 / AU$949. Something to consider, anyway. </p><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-features"><span>Wharfedale Denton 1S review: Features</span></h3><ul><li><strong>Coaxial tweeter / mid/bass driver</strong></li><li><strong>‘Brilliance’ switch</strong></li><li><strong>Rear-facing bass reflex port</strong></li></ul><p>Passive loudspeakers have purity of purpose and are, unless someone’s being bloodyminded, relatively simple devices. Their list of features is seldom exhaustive. It’s a sign of just how straightforward passive loudspeakers tend to be that the Denton 1S stands apart simply because of a small rocker switch on the rear of each cabinet.</p><p>Unlike 1974’s original Denton 1, the Denton 1S features a truly coaxial driver arrangement. Here a 25mm soft-dome tweeter sits in the acoustic centre of a 165mm mid/bass driver made from polypropylene. Here, as with any coaxial driver, the idea is to offer superior time-alignment and driver integration.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rZQcN3vrWU8MYE7xxo8R8f" name="Wharfedale Denton 1S speaker" alt="A straight-on frontal shot of the ungridded Wharfedale Denton 1S speaker cabinet." src="https://cdn.mos.cms.futurecdn.net/rZQcN3vrWU8MYE7xxo8R8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With the forward-firing drivers bolstered by a rear-facing bass reflex port, Wharfedale is quoting a frequency response of 50Hz — 20kHz and sensitivity of 88dB — that second figure strongly suggests this speaker will be in no way tricky to drive. Of course, the orientation of the reflex port means that low frequency presence is likely to increase the closer to a rear surface the speaker is positioned — and that’s where the little rocker switches come in.</p><p>It’s described as a ‘brilliance’ control, and its two positions are labelled ‘norm’ and ‘max’. The idea is that setting the switch to ‘max’ will give a 1.5dB boost to the 2 - 4kHz area, which should allow the upper frequencies to hold their own against the emboldened low end in the event that the reflex port is delivering a little too much of a good thing. Of course, it will take the listener roughly no time at all to establish whether or not they think the ‘max’ setting is a good idea or not. </p><ul><li><strong>Features score:  5 / 5</strong></li></ul><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-sound-quality"><span>Wharfedale Denton 1S review: Sound quality</span></h3><ul><li><strong>Detailed, energetic and rhythmically coherent sound</strong></li><li><strong>Great imaging and stereo focus</strong></li><li><strong>Ultimately sound fractionally small-scale</strong></li></ul><p>Owners of loft apartments, aircraft hangars and the like, look away now. There’s a huge amount to enjoy about the way the Wharfedale Denton 1S perform, but when it comes to outright scale, the ability to fill an authentically large space with sound, there are better options around that cost a similar amount of money.</p><p>Everyone else, though, should read on.</p><p>No matter the source of music, no matter if it’s as straightforward as <em>Looped</em> by Kiasmos or as relatively complex as <em>Re-make/Re-model</em> by Roxy Music, the Denton 1S get an immediate handle on it. They’re a generously entertaining listen, vigorous in a nicely controlled manner, and carry enough detail along with them to make sure you’re as informed as you are stimulated.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QPrEdFoWvoSJK3gdmTmN8f" name="Wharfedale Denton 1S" alt="A detailed close-up shot focused directly on the coaxial driver unit of the Wharfedale Denton 1S." src="https://cdn.mos.cms.futurecdn.net/QPrEdFoWvoSJK3gdmTmN8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That coaxial driver arrangement works a treat inasmuch as the imaging and stereo focus the speakers are capable of is completely convincing. There’s a unity and a togetherness about the way the Wharfedale present recordings that’s never less than enjoyable and periodically absorbing. In combination with their spirited and enthusiastic attitude, it makes for a genuine sense of performance — even if you’re listening to a recording that was never a performance in the first place. And while the soundstage isn’t the largest, it’s properly defined and rigorously organised. </p><p>The tonal balance is, fractionally, on the warmer side of neutral — but as long as the system that’s powering the speakers isn’t overtly toasty then it really shouldn’t be an issue. Frequency response, too, is just slightly titled. There’s a tiny suggestion of emphasis on the lowest frequencies, but again this is only likely to be a concern if the speakers are powered by a bass-centric set-up. Anyway, low-end control is confident and the Wharfedale express rhythms with real coherence as a result. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tFg8zGpSr7ocaCTnVwWN8f" name="Wharfedale Denton 1S mag grille" alt="A three-quarter perspective view of the Wharfedale Denton 1S speaker with the grille in place, mounted on a dedicated stand." src="https://cdn.mos.cms.futurecdn.net/tFg8zGpSr7ocaCTnVwWN8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Midrange resolution is impressive too, and there’s real eloquence to the way the Denton 1S handle voices. Detail retrieval, which is impressive across the board, really comes to the fore here — the character and attitude imbued in a vocal performance, as well as information regarding timbre and technique, are made apparent. And at the top of the frequency range, the Wharfedale attack with determination — but there’s plenty of substance, as well as brilliance, to treble sounds, and never any suggestion of edginess or hardness.</p><p>The attention to detail extends as far as the dynamic of harmonic variation, and there’s a fair amount of capacity where the broader dynamics of volume or intensity are concerned. When the charge into the last chorus or the massed orchestral crescendo kicks in, the Denton 1S track it faithfully — and they do so without altering their sonic characteristics in the slightest.  </p><p>And you don’t need a brute of an amplifier to enjoy all of these admirable attributes. The Wharfedale are in no way tricky to drive; even a modestly priced amplifier with unremarkable power numbers should have no problem getting the best from these speakers. And ‘the best’ is, on a pound-for-pound basis, at least on a par with the very best around.  </p><ul><li><strong>Sound quality score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-design"><span>Wharfedale Denton 1S review: Design</span></h3><ul><li><strong>330 x 236 x 229mm (HxWxD)</strong></li><li><strong>Magnetically attached grilles</strong></li><li><strong>Choice of three finishes</strong></li></ul><p>The coaxial driver means the Denton 1S should be just as happy (and effective) positioned on its side as it is standing upright. And the fact that Wharfedale has provided an integrated fitting for a wall bracket suggests the company thinks the speaker will perform successfully if it’s wall-mounted too. Cabinet depth of 229mm (which obviously increases with the pair of speaker cable binding posts at the rear) doesn’t automatically shout ‘wall-mount!’ to me, though, I have to admit.</p><p>Mind you, no matter where you position the Wharfedale they look good. The cabinet features the same curves and the same recessed front baffle as the original Denton 1 — in white, especially, there’s more than a hint of that late-60s / early-70s futurism that started years previously with the likes of  Dieter Rams and Stanley Kubrick. Unlike the original model, though, which was made from moulded polyurethane that looked and felt super-modern but was a bit of a disaster in acoustic terms, the Denton 1S is made from bonded and braced fibreboard. Less modern, more effective.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tabsFtG7SUuuMa5WHxPX8f" name="Wharfedale Denton 1S rear" alt="A straight-on view of the Wharfedale Denton 1S speaker's rear panel." src="https://cdn.mos.cms.futurecdn.net/tabsFtG7SUuuMa5WHxPX8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That recessed front baffle allows the magnetically attached grilles to almost sit within the cabinet, and they’re flush with the top, bottom and side panels when they’re in position. Both the grille and the front baffle features a quite assertive stylised ‘W’ logo that lets you know you’re in the presence of a ‘Heritage’ Wharfedale design. </p><p>The compulsory options of black and white are joined by a third finish — the deep-ish blue of my review sample. Each of the available finishes looks good, no two ways about it, but the dimensions and the shape of the Denton 1S could quite easily lend themselves to quite a few other colours. It works for Dali and Cambridge, and I see no reason why Wharfedale shouldn’t produce the Denton 1S in some livelier finishes than are currently on offer.     </p><ul><li><strong>Design score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-usability-and-setup"><span>Wharfedale Denton 1S review: Usability and setup</span></h3><ul><li><strong>Attach some speaker cable running from an amplifier</strong></li><li><strong>Position the speakers to your satisfaction</strong></li><li><strong>Experiment with grille and ‘brilliance’ switch</strong></li></ul><p>Just as with ‘features’, there’s really not too much to get your head around here. You’ll decide to position your speakers on dedicated stands, or on wall-brackets, or on a shelf… no matter where you want them, though, they’ll need to be connected to an amplifier via a couple of lengths of speaker cable.</p><p>After they’re positioned and running, you have just a couple of chances to have some input into the way they sound. The sonic difference between ‘grille on’ and ‘grille off’ is, quite honestly, less significant than the visual difference — but you will most definitely have a preference as to whether you prefer your ‘brilliance’ switch at ‘norm’ or ‘max’.</p><ul><li><strong>Usability and setup score: 5 / 5</strong></li></ul><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-value"><span>Wharfedale Denton 1S review: Value</span></h3><p>It’s very hard indeed to argue against the notion that there’s great value for money on offer here. The Wharfedale Denton 1S are properly made, expertly finished, visually interesting (everything’s relative, after all), intriguing on a technological level and, most importantly of all, sound engaging and alert. Unless you crave absolutely as much sonic scale as this sort of money can buy, there’s an awful lot to enjoy and even admire here.</p><ul><li><strong>Value score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-should-i-buy-the-wharfedale-denton-1s"><span>Should I buy the Wharfedale Denton 1S?</span></h3><h2 id="buy-it-if-10">Buy it if...</h2><div class="product"><p><strong>You like a bit of positional flexibility</strong><br />Portrait or landscape, speaker stand or shelf… even the wall isn’t completely off limits.</p></div><div class="product"><p><strong>‘Modern retro’ is your thing</strong><br />Wharfedale has managed to take the spirit of the original design without turning it into a pastiche.</p></div><div class="product"><p><strong>You enjoy lively and informative sound</strong><br />There’s no shortage of finesse here, but the Wharfedale are predominantly interested in a good time.</p></div><h2 id="don-39-t-buy-it-if-7">Don't buy it if...</h2><div class="product"><p><strong>You want to fill a particularly big space with sound</strong><br />The soundstage the speakers create doesn’t escape the confines of the cabinets quite as fully as it might</p></div><div class="product"><p><strong>You enjoy vibrant interior decor</strong><br />All three of the available finishes are nice enough, but none are a match for the vivacity of the Denton 1S sound</p></div><h3 class="article-body__section" id="section-wharfedale-denton-1s-also-consider"><span>Wharfedale Denton 1S : Also consider</span></h3><div class="product"><p><strong>DALI Sonik 1</strong><br />The DALI Sonik 1 are usefully smaller and usefully more affordable than the Wharfedale Denton 1S - and in their own way, they’re just as successful when it comes to performance. They can get overconfident at the top of the frequency range in a way the 1S simply don’t, though… Read our full <a href="https://www.techradar.com/audio/speakers/dali-sonik-1-review" data-dimension112="b9cd81c4-d6b3-11f1-a40d-71e75b473893" data-action="Deal Block" data-label="DALI Sonik 1 review." data-dimension48="DALI Sonik 1 review." data-dimension25="">DALI Sonik 1 review.</a></p></div><div class="product"><p><strong>Bowers &amp; Wilkins 606 S3</strong><br />Spend a little more than Wharfedale is asking and the 606 S3 by Bowers &amp; Wilkins come into range. They’re a brilliantly refined, detailed and punchy listen - but in visual terms they’re made to look a little pedestrian by the Denton 1S. Read our full <a href="https://www.techradar.com/audio/speakers/bowers-and-wilkins-607-s3-review" data-dimension112="b9cd823c-d6b3-11f1-8e38-4fbe98d1f3d9" data-action="Deal Block" data-label="Bowers &amp; Wilkins 606 S3 review" data-dimension48="Bowers &amp; Wilkins 606 S3 review" data-dimension25="">Bowers &amp; Wilkins 606 S3 review</a>.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-wharfedale-denton-1s"><span>How I tested the Wharfedale Denton 1S</span></h3><p>With the Wharfedale Denton 1S on a pair of Blok Axis stands, I connect them to my reference system: Cambridge Edge W power amplifier, Eversolo DAC-Z10 pre-amplifier, Technics SL1300G turntable (with Goldring 1022 cartridge and preamplified by a Chord Huei), Arcam ST25 network streamer and Rega Apollo CD player — so I was able to listen to music from many storage formats and at a wide variety of resolutions. And then in an effort to up the ‘retro’ credentials just a little, I replaced the pre- and power amplifier with an A&amp;R Cambridge A60 integrated amplifier from 1976.</p><ul><li><em>First reviewed: October 2026</em></li><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar's review guarantee</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/audio/speakers/wharfedale-denton-1s-review</link>
                                                                            <description>
                            <![CDATA[ They're bijou, yes, but they're all business where it counts — and you won't need a brute of an amp to drive them ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4UVT3oHGS4xCUGQgfzDU5b</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XKRAzXiuaB29rABfKzLk8f-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Nov 2026 20:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Speakers]]></category>
                                                    <category><![CDATA[Audio]]></category>
                                                    <category><![CDATA[Hi-Fi]]></category>
                                                                                                                    <dc:creator><![CDATA[ Simon Lucas ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/XZU88gUp2HCF96TN4ozBR4-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Simon Lucas is a freelance technology journalist and consultant, with particular emphasis on the audio/video aspects of home entertainment. If it&#039;s involved in the production of sound or visual images, Simon will have written about it during the course of what will soon be a 20-year career.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before embracing the carefree life of the freelancer, Simon was editor of What Hi-Fi? magazine and&amp;nbsp;&lt;a href=&quot;http://whathifi.com/&quot; target=&quot;_blank&quot;&gt;whathifi.com&lt;/a&gt;&amp;nbsp;– a stint that lasted nearly six years and coincided with the website&amp;nbsp;becoming the planet&#039;s leading source of audio/visual buying advice for consumers. Since then, he&#039;s written for titles including (but not limited to) to Wired, Metro, the Guardian, HiFi+ and GQ, and has acted as an audio consultant for some of the&amp;nbsp;world&#039;s most high-profile consumer&amp;nbsp;electronics brands. All from what he likes to call &#039;The English Riviera&#039; but what is more commonly known as &#039;Brighton&#039;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Despite an invariably packed schedule, Simon likes to make time during the working week to publish (and invariably then hastily delete) tweets about the state of the nation (in general), the state of Aston Villa (in particular) and the state of his partner&#039;s cat via&amp;nbsp;&lt;a href=&quot;https://twitter.com/onlysimonlucas?lang=en&quot; target=&quot;_blank&quot;&gt;@OnlySimonLucas&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/XKRAzXiuaB29rABfKzLk8f-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A pair of stand-mounted Denton 1S speakers flank a multi-tiered wooden audio rack containing source components and amplifiers.]]></media:description>                                                            <media:text><![CDATA[A pair of stand-mounted Denton 1S speakers flank a multi-tiered wooden audio rack containing source components and amplifiers.]]></media:text>
                                <media:title type="plain"><![CDATA[A pair of stand-mounted Denton 1S speakers flank a multi-tiered wooden audio rack containing source components and amplifiers.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XKRAzXiuaB29rABfKzLk8f-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-wharfedale-denton-1s-two-minute-review"><span>Wharfedale Denton 1S: Two-minute review</span></h3><p>Wharfedale has been having a lovely old time with its range of ‘Heritage’ loudspeakers lately — revisiting, remixing and reworking some of its Greatest Hits. The new Denton 1S, though, is slightly different. It’s an update of a 1974 design that went all-out to present as modern and forward-thinking. And so this reinterpretation has a ‘modern retro’ vibe rather than the ‘antique’ feel of other Wharfedale ‘Heritage’ models.</p><p>The curvy cabinet with its recessed front baffle, the mildly dramatic coaxial driver arrangement (which sees the tweeter positioned in throat of the mid/bass driver) and the handily compact dimensions are all attractive — and the option of a fairly deep blue as a finish doesn’t do any harm in this respect either. The numbers, both in terms of frequency response and of sensitivity, are encouraging too.</p><p>And when they’re doing their thing, it’s immediately apparent that the Wharfedale Denton 1S are no mere pastiche — they are a profoundly competitive pair of loudspeakers on their own terms and yes, it's a good enough performance to make them some of the <a href="https://www.techradar.com/news/best-stereo-speakers">best stereo speakers</a> on the market, right now.</p><p>The sound is, ultimately, slightly small-scale — but it’s organised, confident, entertaining, loaded with detail and has real unity and singularity to the way it’s presented. Yes, $999 / £649 spent elsewhere on a small pair of passive standmount speakers will buy you something different in sonic terms, certainly, but it’s very debatable indeed as to whether it can buy you anything <em>better</em>. </p><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-price-and-release-date"><span>Wharfedale Denton 1S Review: Price and release date</span></h3><ul><li><strong>Launched May 31, 2026</strong></li><li><strong>List price of $999 / £649 / AU$1,699</strong></li></ul><p>The Wharfedale Denton 1S speakers are available now, and in the United Kingdom a pair will set you back £649. In the United States this solution costs $999, while in Australia the going rate is AU$1,699 or thereabouts.</p><p>At this money, the <em>just about</em> cheaper <a href="https://www.techradar.com/audio/speakers/dali-sonik-1-review">Dali Sonik 1</a> might be their chief competition, at $900 / £449.99 / AU$849. And just to throw it out there, while many pricier options obviously exist, <a href="https://www.techradar.com/audio/wireless-bluetooth-speakers/cambridge-l-r-s-review">Cambridge Audio's Award-winning active L/R S</a> can be yours for a little less, at $549 / £399 / AU$949. Something to consider, anyway. </p><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-features"><span>Wharfedale Denton 1S review: Features</span></h3><ul><li><strong>Coaxial tweeter / mid/bass driver</strong></li><li><strong>‘Brilliance’ switch</strong></li><li><strong>Rear-facing bass reflex port</strong></li></ul><p>Passive loudspeakers have purity of purpose and are, unless someone’s being bloodyminded, relatively simple devices. Their list of features is seldom exhaustive. It’s a sign of just how straightforward passive loudspeakers tend to be that the Denton 1S stands apart simply because of a small rocker switch on the rear of each cabinet.</p><p>Unlike 1974’s original Denton 1, the Denton 1S features a truly coaxial driver arrangement. Here a 25mm soft-dome tweeter sits in the acoustic centre of a 165mm mid/bass driver made from polypropylene. Here, as with any coaxial driver, the idea is to offer superior time-alignment and driver integration.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rZQcN3vrWU8MYE7xxo8R8f" name="Wharfedale Denton 1S speaker" alt="A straight-on frontal shot of the ungridded Wharfedale Denton 1S speaker cabinet." src="https://cdn.mos.cms.futurecdn.net/rZQcN3vrWU8MYE7xxo8R8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With the forward-firing drivers bolstered by a rear-facing bass reflex port, Wharfedale is quoting a frequency response of 50Hz — 20kHz and sensitivity of 88dB — that second figure strongly suggests this speaker will be in no way tricky to drive. Of course, the orientation of the reflex port means that low frequency presence is likely to increase the closer to a rear surface the speaker is positioned — and that’s where the little rocker switches come in.</p><p>It’s described as a ‘brilliance’ control, and its two positions are labelled ‘norm’ and ‘max’. The idea is that setting the switch to ‘max’ will give a 1.5dB boost to the 2 - 4kHz area, which should allow the upper frequencies to hold their own against the emboldened low end in the event that the reflex port is delivering a little too much of a good thing. Of course, it will take the listener roughly no time at all to establish whether or not they think the ‘max’ setting is a good idea or not. </p><ul><li><strong>Features score:  5 / 5</strong></li></ul><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-sound-quality"><span>Wharfedale Denton 1S review: Sound quality</span></h3><ul><li><strong>Detailed, energetic and rhythmically coherent sound</strong></li><li><strong>Great imaging and stereo focus</strong></li><li><strong>Ultimately sound fractionally small-scale</strong></li></ul><p>Owners of loft apartments, aircraft hangars and the like, look away now. There’s a huge amount to enjoy about the way the Wharfedale Denton 1S perform, but when it comes to outright scale, the ability to fill an authentically large space with sound, there are better options around that cost a similar amount of money.</p><p>Everyone else, though, should read on.</p><p>No matter the source of music, no matter if it’s as straightforward as <em>Looped</em> by Kiasmos or as relatively complex as <em>Re-make/Re-model</em> by Roxy Music, the Denton 1S get an immediate handle on it. They’re a generously entertaining listen, vigorous in a nicely controlled manner, and carry enough detail along with them to make sure you’re as informed as you are stimulated.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QPrEdFoWvoSJK3gdmTmN8f" name="Wharfedale Denton 1S" alt="A detailed close-up shot focused directly on the coaxial driver unit of the Wharfedale Denton 1S." src="https://cdn.mos.cms.futurecdn.net/QPrEdFoWvoSJK3gdmTmN8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That coaxial driver arrangement works a treat inasmuch as the imaging and stereo focus the speakers are capable of is completely convincing. There’s a unity and a togetherness about the way the Wharfedale present recordings that’s never less than enjoyable and periodically absorbing. In combination with their spirited and enthusiastic attitude, it makes for a genuine sense of performance — even if you’re listening to a recording that was never a performance in the first place. And while the soundstage isn’t the largest, it’s properly defined and rigorously organised. </p><p>The tonal balance is, fractionally, on the warmer side of neutral — but as long as the system that’s powering the speakers isn’t overtly toasty then it really shouldn’t be an issue. Frequency response, too, is just slightly titled. There’s a tiny suggestion of emphasis on the lowest frequencies, but again this is only likely to be a concern if the speakers are powered by a bass-centric set-up. Anyway, low-end control is confident and the Wharfedale express rhythms with real coherence as a result. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tFg8zGpSr7ocaCTnVwWN8f" name="Wharfedale Denton 1S mag grille" alt="A three-quarter perspective view of the Wharfedale Denton 1S speaker with the grille in place, mounted on a dedicated stand." src="https://cdn.mos.cms.futurecdn.net/tFg8zGpSr7ocaCTnVwWN8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Midrange resolution is impressive too, and there’s real eloquence to the way the Denton 1S handle voices. Detail retrieval, which is impressive across the board, really comes to the fore here — the character and attitude imbued in a vocal performance, as well as information regarding timbre and technique, are made apparent. And at the top of the frequency range, the Wharfedale attack with determination — but there’s plenty of substance, as well as brilliance, to treble sounds, and never any suggestion of edginess or hardness.</p><p>The attention to detail extends as far as the dynamic of harmonic variation, and there’s a fair amount of capacity where the broader dynamics of volume or intensity are concerned. When the charge into the last chorus or the massed orchestral crescendo kicks in, the Denton 1S track it faithfully — and they do so without altering their sonic characteristics in the slightest.  </p><p>And you don’t need a brute of an amplifier to enjoy all of these admirable attributes. The Wharfedale are in no way tricky to drive; even a modestly priced amplifier with unremarkable power numbers should have no problem getting the best from these speakers. And ‘the best’ is, on a pound-for-pound basis, at least on a par with the very best around.  </p><ul><li><strong>Sound quality score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-design"><span>Wharfedale Denton 1S review: Design</span></h3><ul><li><strong>330 x 236 x 229mm (HxWxD)</strong></li><li><strong>Magnetically attached grilles</strong></li><li><strong>Choice of three finishes</strong></li></ul><p>The coaxial driver means the Denton 1S should be just as happy (and effective) positioned on its side as it is standing upright. And the fact that Wharfedale has provided an integrated fitting for a wall bracket suggests the company thinks the speaker will perform successfully if it’s wall-mounted too. Cabinet depth of 229mm (which obviously increases with the pair of speaker cable binding posts at the rear) doesn’t automatically shout ‘wall-mount!’ to me, though, I have to admit.</p><p>Mind you, no matter where you position the Wharfedale they look good. The cabinet features the same curves and the same recessed front baffle as the original Denton 1 — in white, especially, there’s more than a hint of that late-60s / early-70s futurism that started years previously with the likes of  Dieter Rams and Stanley Kubrick. Unlike the original model, though, which was made from moulded polyurethane that looked and felt super-modern but was a bit of a disaster in acoustic terms, the Denton 1S is made from bonded and braced fibreboard. Less modern, more effective.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tabsFtG7SUuuMa5WHxPX8f" name="Wharfedale Denton 1S rear" alt="A straight-on view of the Wharfedale Denton 1S speaker's rear panel." src="https://cdn.mos.cms.futurecdn.net/tabsFtG7SUuuMa5WHxPX8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That recessed front baffle allows the magnetically attached grilles to almost sit within the cabinet, and they’re flush with the top, bottom and side panels when they’re in position. Both the grille and the front baffle features a quite assertive stylised ‘W’ logo that lets you know you’re in the presence of a ‘Heritage’ Wharfedale design. </p><p>The compulsory options of black and white are joined by a third finish — the deep-ish blue of my review sample. Each of the available finishes looks good, no two ways about it, but the dimensions and the shape of the Denton 1S could quite easily lend themselves to quite a few other colours. It works for Dali and Cambridge, and I see no reason why Wharfedale shouldn’t produce the Denton 1S in some livelier finishes than are currently on offer.     </p><ul><li><strong>Design score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-usability-and-setup"><span>Wharfedale Denton 1S review: Usability and setup</span></h3><ul><li><strong>Attach some speaker cable running from an amplifier</strong></li><li><strong>Position the speakers to your satisfaction</strong></li><li><strong>Experiment with grille and ‘brilliance’ switch</strong></li></ul><p>Just as with ‘features’, there’s really not too much to get your head around here. You’ll decide to position your speakers on dedicated stands, or on wall-brackets, or on a shelf… no matter where you want them, though, they’ll need to be connected to an amplifier via a couple of lengths of speaker cable.</p><p>After they’re positioned and running, you have just a couple of chances to have some input into the way they sound. The sonic difference between ‘grille on’ and ‘grille off’ is, quite honestly, less significant than the visual difference — but you will most definitely have a preference as to whether you prefer your ‘brilliance’ switch at ‘norm’ or ‘max’.</p><ul><li><strong>Usability and setup score: 5 / 5</strong></li></ul><h3 class="article-body__section" id="section-wharfedale-denton-1s-review-value"><span>Wharfedale Denton 1S review: Value</span></h3><p>It’s very hard indeed to argue against the notion that there’s great value for money on offer here. The Wharfedale Denton 1S are properly made, expertly finished, visually interesting (everything’s relative, after all), intriguing on a technological level and, most importantly of all, sound engaging and alert. Unless you crave absolutely as much sonic scale as this sort of money can buy, there’s an awful lot to enjoy and even admire here.</p><ul><li><strong>Value score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-should-i-buy-the-wharfedale-denton-1s"><span>Should I buy the Wharfedale Denton 1S?</span></h3><h2 id="buy-it-if-10">Buy it if...</h2><div class="product"><p><strong>You like a bit of positional flexibility</strong><br />Portrait or landscape, speaker stand or shelf… even the wall isn’t completely off limits.</p></div><div class="product"><p><strong>‘Modern retro’ is your thing</strong><br />Wharfedale has managed to take the spirit of the original design without turning it into a pastiche.</p></div><div class="product"><p><strong>You enjoy lively and informative sound</strong><br />There’s no shortage of finesse here, but the Wharfedale are predominantly interested in a good time.</p></div><h2 id="don-39-t-buy-it-if-7">Don't buy it if...</h2><div class="product"><p><strong>You want to fill a particularly big space with sound</strong><br />The soundstage the speakers create doesn’t escape the confines of the cabinets quite as fully as it might</p></div><div class="product"><p><strong>You enjoy vibrant interior decor</strong><br />All three of the available finishes are nice enough, but none are a match for the vivacity of the Denton 1S sound</p></div><h3 class="article-body__section" id="section-wharfedale-denton-1s-also-consider"><span>Wharfedale Denton 1S : Also consider</span></h3><div class="product"><p><strong>DALI Sonik 1</strong><br />The DALI Sonik 1 are usefully smaller and usefully more affordable than the Wharfedale Denton 1S - and in their own way, they’re just as successful when it comes to performance. They can get overconfident at the top of the frequency range in a way the 1S simply don’t, though… Read our full <a href="https://www.techradar.com/audio/speakers/dali-sonik-1-review" data-dimension112="b9cd81c4-d6b3-11f1-a40d-71e75b473893" data-action="Deal Block" data-label="DALI Sonik 1 review." data-dimension48="DALI Sonik 1 review." data-dimension25="">DALI Sonik 1 review.</a></p></div><div class="product"><p><strong>Bowers &amp; Wilkins 606 S3</strong><br />Spend a little more than Wharfedale is asking and the 606 S3 by Bowers &amp; Wilkins come into range. They’re a brilliantly refined, detailed and punchy listen - but in visual terms they’re made to look a little pedestrian by the Denton 1S. Read our full <a href="https://www.techradar.com/audio/speakers/bowers-and-wilkins-607-s3-review" data-dimension112="b9cd823c-d6b3-11f1-8e38-4fbe98d1f3d9" data-action="Deal Block" data-label="Bowers &amp; Wilkins 606 S3 review" data-dimension48="Bowers &amp; Wilkins 606 S3 review" data-dimension25="">Bowers &amp; Wilkins 606 S3 review</a>.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-wharfedale-denton-1s"><span>How I tested the Wharfedale Denton 1S</span></h3><p>With the Wharfedale Denton 1S on a pair of Blok Axis stands, I connect them to my reference system: Cambridge Edge W power amplifier, Eversolo DAC-Z10 pre-amplifier, Technics SL1300G turntable (with Goldring 1022 cartridge and preamplified by a Chord Huei), Arcam ST25 network streamer and Rega Apollo CD player — so I was able to listen to music from many storage formats and at a wide variety of resolutions. And then in an effort to up the ‘retro’ credentials just a little, I replaced the pre- and power amplifier with an A&amp;R Cambridge A60 integrated amplifier from 1976.</p><ul><li><em>First reviewed: October 2026</em></li><li><a href="https://www.techradar.com/news/how-we-test">Read TechRadar's review guarantee</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Bambu Lab H3C 3D printer review ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It was inevitable that there would be a successor to the <a href="https://www.techradar.com/pro/bambulab-h2c-3d-printer-review" target="_blank">Bambu Lab H2C</a>, which was no small machine; however, the Bambu Lab H3C takes scale and ability to the next level, although the innovative Vortek Hotend Change System is no more.</p><p> Like the H2C, there’s the multi-tool functionality, but as you’ll see from the images, the system is all new, with dedicated tools in the Swaptek Tool Changer rather than the Vortek hotend-changing system, so something closer to the Bondtech INDX tool changers.</p><p>An interesting update is the ability to print with different-sized nozzles, so a fine 0.2 mm for fine detail, going to a 0.8 mm for infill and areas where speed is preferable to fine finishes. What I have discovered through the month that I’ve had the printer so far is that this is an evolution of the 3D printing process, refining the techniques and while this technology and its application are still being ironed out, the full potential is apparent.</p><p>Adding to the multi-diameter printing is the advanced TPU handling. This essentially enables you to print with thicker 2.85 mm filament using the PrintTool hotend. As the filament is thicker, it supports softer TPU, and again, there’s a learning process behind its use. It’s not quite as simple as popping it in and letting it go, but it is a step in the right direction.</p><p>Sitting on top of the machine is the new AMS 3H filament management system that holds up to nine filaments, with two slots enabling integrated drying and bypass feeds for specialist materials.</p><p>I’ll admit, as the boxes kept arriving and the H3C started to take shape on the workbench, the machine did seem to dominate the space. However, after squeezing in the H2C next to it, while the new AMS gives a visual impression of scale, the footprint of the two machines is much the same.</p><p>The big question for me at the start of this test was whether this new machine and design was a direct replacement for the H2C or something altogether new. It certainly initially looks far more complex, but then, as I became more familiar with the machine, the full tool changer design, once assembled, did seem,  a little more simplistic and certainly more reliable as I pushed the print times and complexities.</p><p>One point to note is that throughout the test, while I had the machine and seemingly every accessory that I could need to go with it, the actual official machine specifications and final tweaking of the software were still to be released. </p><p>What Bambu did supply was a few test models and an extensive set of instructions about how to tackle each of the main new features. There was also a set of complex models that I used to start the test before deviating to some of my own, and then back to the supplied models to finish the test.</p><p>I’ll cover more of those tests in the performance section, but what interested me was using this printer for a real practical task. This is, after all, a business-class machine, although the price will put this just in range of the keen enthusiast as well.</p><p>The main project for this test was to print and build a set of speakers from <a href="https://printyourspeakers.com/" target="_blank">Print Your Speakers</a>, with the Supersonic MK3 kit fitting the bill for this test. Essentially, a solid PLA outer with TPU to add damping to the infill, and then a switch of nozzle sizes for the fine detail of the outer wall and a thicker nozzle for the inner walls.</p><p>This is where the learning curve of this machine and the Bambu Lab software really comes into play, and while that learning curve is steep.</p><p>As the test ran on, the potential of this machine started to grow. While multi-filament and tool changer machines now dominate and Bambu Lab’s lead in the field was quickly fading, especially with the <a href="https://www.techradar.com/pro/prusa-core-one-indx-8-tool-3d-printer-review" target="_blank">Original Prusa CORE One INDX,</a> of which the H3C’s new system bears more than a passing resemblance. But with support for 2.85 mm TPU and multiple other materials, it now pushes them back out in front and truly offers something unique, although there are still a few refinements needed.</p><h2 class="article-body__section" id="section-bambu-lab-h3c-price-and-availability"><span>Bambu Lab H3C: Price and availability</span></h2><p>The H3C will be available to purchase from the <a href="https://bambulab.com/h3c" target="_blank">Bambu Lab website</a> from 3 November 2026, following the official launch. Unlike the H2C, there is just one configuration available at launch, with the AMS 3H and all nine PrintTools included.</p><ul><li><strong>H3C AMS Combo:</strong> $2,499 / £2,199</li><li><strong>Combo + PLA Palette + TPU:</strong> $2,589 /£2,269</li><li><strong>Combo + PLA Palette + TPU + Bambu Station (Enclosed) + E1 Air Purifier:</strong></li><li>$3,049 / £2,699</li><li><strong>Combo + PLA Palette + TPU + Bambu Station (Open):</strong> $2,799 / £2,469</li></ul><h2 class="article-body__section" id="section-bambu-lab-h3c-design"><span>Bambu Lab H3C: Design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rJATUFtNsjxrvafDRXU25B" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/rJATUFtNsjxrvafDRXU25B-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">BambuLab H2C specifications</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Print Technology: </strong>Fused Filament Fabrication (FFF)<br /><strong>Build Area: </strong>330 × 320 × 325 mm<br /><strong>Minimum Layer Resolution: </strong>To be confirmed<br /><strong>Maximum Layer Resolution:</strong> To be confirmed<br /><strong>Dimensions:</strong> 493 × 571 × 587 mm<br /><strong>Weight: </strong>36.28 kg (including AMS 3H)<br /><strong>Bed:</strong> Heated, up to 120°C<br /><strong>Print Surface: </strong>Textured PEI plate<br /><strong>Software: </strong>Bambu Studio<br /><strong>Materials: </strong>PLA, PETG, TPU, ABS, ASA, PA, PC, PPA, PPS and other supported materials<br /><strong>Print Speed: </strong>Maximum toolhead speed of 1,400 mm/s</p></div></div><p>The Bambu Lab H3C is a 3D printer on another scale, and whilst it doesn’t look that much larger than the H2C initially, once you start to work with it and try to move it around the workshop, you suddenly realise that its colossal 36.28 kg weight and physical dimensions of 493 × 571 × 587 mm make it more of a two-person lift than something you’re able to handle on your own.</p><p>That would explain why Bambu Lab also sent a special trolley along with the machine, so it’s easy to access and move around the workshop. The issue at the moment is that there are so many 3D printers coming out that my workshop doesn’t have any space, so this will be something that I will manoeuvre the printer onto once I can find a pathway through the workshop to get the two sections to meet.</p><p>As it was, I decided to set this machine up in the photo area, and I’ve already manoeuvred the H2C next to it so that I can do a side-by-side comparison on size and scale, however, again this left little room as the the scale of these machine is rapidly increasing.</p><p>As I first lifted the H3C into position, the two machines looked roughly the same size, but as I started to add the huge new AMS 3H on top, I realised that this was an altogether different proposition.</p><p>As I unpacked the machine, it was obvious that Bambu Lab had taken a completely different direction to multi tool head printing compared with the H2C, and the H3C has something more akin to the INDX tool changer. You can definitely see the similarities. As I went through the initial setup, what was surprising here was just how easy and straightforward it was, and whilst the machine was large, the actual placing of the AMS on top and positioning all of the nozzles wasn’t at all difficult. </p><p>The only thing that you do need to make sure of is that there are nine tools included: eight with 0.4 mm PrintTools for 1.75 mm filament and one dedicated 0.4 mm PrintTool for 2.85 mm filament. Careful reference to the instructions as you’re setting up is essential to make sure that this nozzle goes in the right place.</p><p>Before taking a closer look at this new system, it’s worth pointing out that the AMS 3H is quite an evolution on the AMS 2, sitting on top of the machine and really integrating more closely with the design compared with the add-on box of the AMS 2. This, I know, will please a lot of print farms, which, whilst generally fans of the Bambu Lab machines, find the AMS 2 is often a weak point and the part that they have to replace most often. One point here is that, of those nine slots, there’s a separate section within the rack which enables just two of those nine slots to be actively dried.</p><p>As we’ve seen before, you can also add more AMS units, enabling up to 24-colour printing, up from the nine possible out of the box.</p><p>Once I got everything set up and installed, which, to be honest, didn’t take too long, it was then time to connect the machine to the local network via Wi-Fi 6. As ever, this was as straightforward and simple as with all other Bambu Lab machines. One of the surprises is that a machine of this size and scale, especially aimed at the professional market, doesn’t feature an Ethernet port. </p><p>The other point here is that as soon as it connected, it ran through a series of updates before then going through the calibration process. So, while the machine itself is really well designed and easy to set up, the software updating and full calibration process can take up to an hour, which is slightly infuriating when I was quite excited to see what this machine was capable of doing.</p><p>After the Wi-Fi connection, calibration and everything else had been run through, it was time to connect through the Bambu Studio software, and again, a few clicks through the beta release that we were given, enabled me to connect quickly to the printer. </p><p>However, as always, before running through my own prints and some of those others that had been supplied to fully test out this new machine’s abilities, I ran through the standard test prints on the machine. These are the usual 3D Benchy and variants, alongside scrapers and a few other bits and bobs, as expected. It ran through all of those prints flawlessly, and then it was time to cross over to Bambu Studio.</p><p>Bambu Lab actually supplied some very interesting test models, which I go into in the performance section, but before I went into these multi-filament, multicolour designs, I decided to test out some of my more standard prints. This just enabled me to double-check the calibration and also try out a few different materials.</p><p>There are two built-in 1080p cameras, with an optional Bird’s Eye camera available as well. The chamber heats up to 65°C, with a 120°C heated bed and a 350°C maximum nozzle temperature.</p><p>Leaving the machine just to run through those few prints, I was able to step back and take a proper look at the machine, and it is an evolution of what we’ve seen with the other H series printers, just slightly larger. Again, this is a steel chassis, which gives it structural support and also makes it insanely heavy to lift around the workshop. </p><p>The outer is plastic, with a grey and black exterior that looks stylish, just in the same vein as we’ve seen with the other Bambu Lab hardware. On the front, you’ve got a big viewing window so that you can see what’s going on with the print, and whilst the top-mounted AMS 3H does stop you from looking down into the machine, it's integrated rather than being a separate unit, which I personally really like.</p><p>As we’ve seen before, there’s a really nice 5-inch colour touchscreen, with an 854 × 480 display resolution, and this is very responsive, giving me full access to all the functions and settings. However, it is getting more complex, especially with those nine toolheads. It does take a little bit of extra time just to orientate yourself with all of those different settings.</p><p>Across the front is the main feature of this new 3D printer, obviously the new nine-toolhead rack, and what’s interesting here is that the rack raises and lowers, so if you do want to see what’s going on on the print bed, it’s far easier than with some of the other multiple systems of this style out there. At all times, however, you can see where the influence of the Prusa CORE One INDX version has influenced Bambu Lab’s slight change of direction, although they’ve taken that style of design in a slightly different direction.</p><p>The rack features nine individual PrintTool docking positions, and these all automatically dock with tool alignment and offset compensation. What’s interesting here is that there are dedicated filament paths for each PrintTool, meaning that each works completely independently, and there are integrated filament cutters within the PrintTools, again just to help speed things up. When it comes to the extruder and internal mechanisms, they all use hardened steel, with hardened-steel extruder gears and nozzles rated at HRC 55+.</p><p>As ever, we see a flexible steel build plate, and this is a decent size, with a 330 × 320 × 325 mm build volume enabling you to tackle all sorts of projects, especially with the huge material support this new printer offers.</p><h2 class="article-body__section" id="section-bambu-lab-h3c-features"><span>Bambu Lab H3C: Features</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="G33mTyaPxChdNbxmryWifA" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/G33mTyaPxChdNbxmryWifA-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>It’s difficult to do a quick run-through of the features because, over the H2C, things have really progressed, and the new Swaptek nine-tool changing system is a real evolution of design. You can’t help feeling it’s heavily influenced by the INDX system that we’ve seen from Bondtech and featured on the latest Prusa CORE One machines.</p><p>However, over that system, there are plenty of changes, and it’s obviously got the Bambu Lab spin, with automatic tool changes that happen in under six seconds. There’s also active preheating that essentially anticipates the upcoming tool changes and heats the next nozzle in advance, making complex models slightly faster to print than on some of those other systems.</p><p>One of the features that I noticed early on, and one of the issues with other systems of this style, is that quite often the tool rack gets in the way of being able to see the print area. However, once that new tool is selected, the tool rack actually retracts upwards so that you get a good clear view of the print area, and it also helps to keep the filament tubes out of the way.</p><p>Feeding all of those nine new toolheads is the redesign of the AMS system, known as the AMS 3H, that manages the filaments in an integrated box that sits on top of the machine. Like the AMS 2, it's a sealed storage option and helps protect the filaments inside from moisture. </p><p>Again, as we’ve seen in the past, it has automatic filament loading and routing that works exceptionally well, and with RFID built in, as long as you’re using Bambu Lab’s own materials, they’ll be automatically recognised and synced with the software, making the whole process that much easier. </p><p>One of the surprises is that only two of those nine slots are actively dried, so if you do have filaments that are more prone to moisture than others, then they should sit in those two. There’s a cover that sits over the top, so it’s pretty easy to see which two those are.</p><p>As ever, there are also expansion options, so if you have other AMS systems and you want to plug them in, the H3C supports additional AMS units for up to 24-colour printing.</p><p>One of the new additions is the FlexFeed extruder that supports both 1.75 mm and 2.85 mm filament, and there’s also a dedicated 2.85 mm filament path for flexible materials such as TPU. While TPU for AMS can just be used directly on the machine, as I discovered when I printed speakers with files from Print Your Speakers, when it came to printing other softer TPU, you have to use one of the bypass feed ports and quickly change part of the installation and feed to the toolheads. </p><p>The first time you do it, it takes a little bit of time and working out, but essentially, the soft TPU needs to go into one of the slots that enables active drying. TPU is hygroscopic and collects water like a sponge, so ensuring that it’s nice and dry before it goes through the system is just going to improve and help with the quality of the print. </p><p>You then feed that through into the 2.85 mm supporting toolhead, but rather than running through the filament feed tube, you bypass the tube, cutting just a small length that goes into the toolhead and then directly into the extruder. This just helps with the smooth movement of the TPU filament through the system. This means that it can actually cope with TPU all the way down to 75A, perfect for some of the projects that Bambu Lab supplied.</p><p>Using TPU in the system is not uncommon, but you still have to reconfigure the system slightly. Bambu Lab has made that slightly easier, and of course, you also have the ability to print with multiple materials and multiple colours. </p><p>But what impressed me the most is that with the Bambu Lab PLA palette, which is a new range of filaments, you can print with CMYKW to enable colour mixing using cyan, magenta, yellow, black and white filaments. The end results, as you’re seeing in some of the sample pictures, are quite amazing, enabling far more colourful and complex prints than has previously been possible.</p><p>But it’s not just about multiple colour-mixing filaments. You can also use a huge amount of engineering materials because of the hardened nozzles and the actively heated chamber, so utilising ABS, ASA, PA, PC and carbon-filled composites is all perfectly possible.</p><p>Further supporting the flexibility over the way you print is that there are multiple nozzle sizes, including 0.2, 0.4, 0.6 and 0.8 mm. But what makes a difference here is that you can optimise it to work using those different nozzles in one print. That means you can speed up the printing of the interior support structure with, say, a 0.6 or 0.8 mm nozzle and get that fine-quality finish on the exterior with a 0.2 or 0.4 mm nozzle. This is something very new.</p><p>There’s also been a range of feature enhancements for speed, with a maximum toolhead speed of 1,400 mm/s and acceleration of 25,000 mm/s². To keep up with that high-speed printing, the hotend flow rate of 40 mm³/s is also impressive, although these run to Bambu Lab’s own test conditions rather than what you’re actually going to see in the real world.</p><p>Something which I haven’t really been able to look at in any depth is the CraftTool support, and we’re starting to see Bambu Lab not only promote their machines for 3D printing but for other craft uses. This is what really made the H2D such an interesting machine. Potentially, in the near future, the CraftTools will enable automatic switching between compatible printing and crafting tools, so there will be blade cutting, drawing and debossing, but I’ll bring you more on that when I’ve been able to look at it properly.</p><p>As I mentioned in the Design section, Bambu Lab and, actually, quite a few of the other manufacturers are starting to take filtration seriously, and here we’ve got the H11 HEPA filter, granulated coconut-shell activated-carbon filter and an integrated chamber exhaust and circulation system. Bambu Lab actually even provided an air filter with the machine, which has been very handy, especially in quite a crowded workshop.</p><p>When it comes to features, the H3C is one of the most feature-packed printers to have come onto the market yet, but with all of those features comes an added level of complexity that could cause issues in the long run, and the only way to discover those is to ensure that, over the month of having this machine, it has been running almost constantly.</p><h2 class="article-body__section" id="section-bambu-lab-h3c-performance"><span>Bambu Lab H3C: Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Fw3KiZzWMtZcTfZN9Zf3vA" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/Fw3KiZzWMtZcTfZN9Zf3vA-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>As these 3D printers get more complex and the models that they’re able to produce become increasingly more elaborate, mixing not only colours but materials, the time it takes to fully test one of these machines is rapidly increasing.</p><p>Thankfully, Bambu Lab recognises that whilst machines are speeding up, when it comes to fully testing some of those mixed-filament options, it doesn’t just take hours; it takes days for each print to be produced. In order for you to run through all of the test prints provided, including rerouting different filaments, that all takes a considerable amount of time. </p><p>But thankfully, I’ve had this printer for almost six weeks, and through that time, there have only been brief periods where it has remained dormant. Otherwise, filament after filament has gone through, producing everything from pinhole cameras out of carbon-filled filament through to some quite incredible desktop speakers, thanks to the guys at printyourspeakers.com, and of course, the extremely elaborate models that the guys at Bambu Lab provided to test out this printer.</p><p>Before I go into that, I’ll just quickly run through the setup process of the machine, as whilst this machine looks extremely complex, the actual setup process is typically Bambu. Essentially, with the machine arriving in two boxes, the machine and a separate box for the AMS, it only took about half an hour before the machine was sitting proudly on the workbench, looking ready to produce its first print.</p><p>The instructions are pretty clearly laid out, and as you’d expect, the large 5-inch touchscreen gives you all the information you need. Once everything is plugged in and connected, you then simply load the filament, and it’s pretty much set to go. However, as always, that complexity comes with a large extra step. </p><p>First, you download and install the firmware, which all ran through nice and quickly, but then it was on to the full setup calibration. Whilst it doesn’t actually take any involvement from yourself other than clicking a couple of buttons, it does take about an hour, and when you have a machine of this size and potential in front of you, that wait is slightly agonising but unfortunately essential.</p><p>Once the machine had run through its copious amount of checks and all the nozzles had been calibrated, it was time to run through the first set of prints, and here I had three different options. Firstly, those pre-installed on the machine in the 64 GB internal storage; the second was my usual test prints; and the third was the additional files that Bambu Lab had provided to fully test out the system.</p><p>I opted for the quick run of those prints in storage just to check whether the calibration had worked and everything was printing correctly, and sure enough, print after print came off the print bed without issue, mixing the colours beautifully into pretty good-quality standard prints. All of these that I started with initially were PLA and mainly ends of reels from previous reviews.</p><p>Then it was on to my own test prints, and again, the accuracy and precision of the printer really stood out, and I was also impressed with the relative speed. One of the big points here is that the tool-changing system, as I saw with the INDX, vastly increases print speeds when compared with the H2C, which is a machine that I actively always have set up and running. </p><p>The speeds with this new system are again slightly faster. A quick test of those print speeds on the H3C, printing the two-tone tree frog in large, took two hours and three minutes, with about eight minutes taken for the preparation time and the rest on the actual model printing. This compared with almost three hours on the H2C, and whilst it was far faster on the preparation and checks at just under six minutes, the print time was closer to two hours and 50 minutes. Finally, comparing it with the H2D, surprisingly, it put in a similar time to the H2C.</p><p>As I ran through the test, the speed of the machine was the first thing that really stood out, and with a relatively large print bed as well, I was able to print large projects with absolute ease. Support structures went in nice and easily, and I always use PLA support, although as I started to venture into Bambu Lab’s own models, I realised the standard PLA support was just not delicate enough for what was needed, and PVA support, which could be washed away, would have been a better option.</p><p>Through my own models, there were quite a few different projects that I wanted to really give a go. The first was a pinhole camera that I had designed for some lectures and was small. It's a good way to test out dimensional accuracy, as I had to drop in a brass-sheet pinhole lens that I had designed and make it tripod-mountable, with brass inserts used for the screw thread.</p><p>As the box also had to be lightproof, dimensional accuracy due to the fitting and removing of a lightproof back was also essential, and using a carbon-filled filament with solid infill just ensured that the whole box would stay lightproof. I also had to feature a sliding shutter mechanism that would cover the brass aperture, so again, quality of surface printing as well as dimensional accuracy was absolutely essential.</p><p>After running several iterations of the design, I came up with the final product and tested it in the studio with success, producing small prints onto photographic paper through a 0.3 mm aperture. The quality of the print and success of the project just highlighted the first bit of flexibility with this machine and its design.</p><p>The next was to call on somebody with a lot more experience with high-quality and precision engineering 3D design, and the guys at Print Your Speakers provided me with the Supersonic MK3 desktop speaker kit to give this new printer a go. There were several angles that I wanted to fully test that no other printer would be able to do.</p><p>The first was obviously to print speakers using PLA for the outer, but then rather than having PLA infill, I wanted it to be TPU in order to help absorb some of the sound. I also wanted to be able to swap between nozzle sizes, all of which took a little bit of experimentation, and at present this is an area of the systems use that I will have to come back to, as at the moment I haven't had any success. I then tested a straight PLA box against the PLA and TPU mixed box, and the difference in audio quality was apparent, with a far deeper sound from the more advanced material-mix option.</p><p>Having now tried a variety of different materials and options through the machine, I was pretty confident about setting off with some of Bambu Lab’s own models to fully test out its abilities. The first was the FROSTSPINE Dragon Bust 1015, which used a variety of materials and took a while to organise the different materials that were needed into the AMS and configure the system. </p><p>Printing this started to point out the big difference between the old Bambu Lab multi-filament AMS systems and this new iteration. It's far more complex, and along with the printing guides that helped guide you through the setup, there’s definitely a greater skill required to get the most out of this machine. </p><p>It took two or three initial attempts before that model rattled off the print bed, taking several days to complete. I then moved on to the hummingbird frame, which was a simple multi-filament PLA mix, and here I really started to see the full potential, being able to mix the colours to create colours that weren’t directly available from a single filament but only once they were blended together, and the results were spectacular. </p><p>The only thing was that I accidentally used PLA support rather than PVA support, so once the final model printed, which took several days, it was going to be a long process to break away all of that support. The intricacy and delicacy of many of the models that you’re now able to print on this machine far exceed what you’ve been able to do before.</p><p>Through this whole process, the one thing that became apparent was that this is a far more hands-on machine, and there is an obvious learning curve, especially working with all the different toolheads, nozzle sizes, bypass filament feeds and potentially additional CraftTools. This is a very feature-enhanced workshop machine at a price that will appeal to both enthusiasts and professionals.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="e9HT7b5TX22c2xZAobjFuC" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/e9HT7b5TX22c2xZAobjFuC-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><h2 class="article-body__section" id="section-bambu-lab-h3c-final-verdict"><span>Bambu Lab H3C: Final verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BYW7QGVXBZD54JNQnHGu4B" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/BYW7QGVXBZD54JNQnHGu4B-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>In those six weeks of testing, I feel like I’ve only just started to scrape the surface of what’s possible, but there are several key points that I’ve learnt through this test. The first is that if you just want to get straight into printing, then there are cheaper machines out there which will enable you to do that. So if you only print with up to four filaments, which most people do, then the complexity of this machine might be just a little bit above what you need.</p><p>But then, as you start to embrace all its options and capabilities, and if you’re willing to sit down and learn about how to mix materials, how to use those different nozzle sizes together and obviously all those different filament types, then you have a 3D printer that is really quite different from anything that’s come before and sets the tone for what’s coming up in the future.</p><p>Whilst there are more than passing similarities with the INDX system, what Bambu Lab has done here is to evolve what it had done with its previous multi-filament systems and, with this new option, create something that is far more advanced.</p><p>With that increasing complexity come its own issues, and through the process of this review, I did have occasions where I had to rerun the full calibration as one of the nozzles wasn’t quite sitting right. Then there’s the whole bypass reconfiguration of the filament feed, which does get quite complex, but once you’ve done it once, you basically allocate one toolhead to TPU, still leaving you with eight for all other filaments.</p><p>The options and possibilities for this machine are huge, and through this review, I’ve just been incredibly impressed with the overall quality. Each firmware update has fixed some of the issues that I was having early on, such as the RFID not recognising filament reels and, for some reason, the auto-feed system suddenly not auto-feeding. But after the update, those issues were fixed.</p><p>I also had, as you might be able to see on the speaker set, a slight issue with surface finish, but then that’s because I was experimenting with some of those more advanced features, and this was the first time that I had configured the whole process myself in the software. Later, small models printed with much better quality, but again, this is all part of that learning process. As it stands, this printer is a definite evolution of what’s possible and an exciting glimpse into the future of 3D printing.</p><h2 class="article-body__section" id="section-should-i-buy-the-bambu-lab-h3c-3d-printer"><span>Should I buy the Bambu Lab H3C 3D printer?</span></h2><h2 id="buy-it-if-11">Buy it if...</h2><div class="product"><p><strong>You want to print with multiple materials and nozzle sizes.</strong></p><p>The H3C enables you to combine different materials and nozzle diameters in a single print, something that would be difficult or impossible to produce on more standard 3D printers.</p><p><strong>You want faster, more efficient multicolour printing.</strong></p><p>With nine PrintTools and material changes taking under six seconds, the H3C reduces the time swapping filaments.</p></div><h2 id="don-39-t-buy-it-if-8">Don't buy it if...</h2><div class="product"><p><strong>You just want a straightforward 3D printer.</strong></p><p>The H3C has a steep learning curve, especially when mixing materials and nozzle sizes. For standard PLA printing, there are simpler, cheaper options.</p><p><strong>You have limited space or a tight budget.</strong></p><p>At £2,199 and over 36 kg, the H3C is a substantial investment unless you'll regularly use its advanced features.</p></div><p><em>For more models, I've tested the </em><a href="https://www.techradar.com/best/best-3d-printers" target="_blank"><em>best 3D printers</em></a><em> you can get right now. </em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/pro/bambu-lab-h3c-3d-printer-review</link>
                                                                            <description>
                            <![CDATA[ The Bambu Lab H3C is a nine-filament 3D printer with multi-diameter and multi-material printing, giving greater speed and flexibility than I’ve seen before. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hHQCvLeAniKNRqYHiJna27</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NDQ74FxTgjdgghunKQ3r4B-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Nov 2026 14:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Pro]]></category>
                                                                                                                    <dc:creator><![CDATA[ Alastair Jennings ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ &lt;p&gt;Alastair is a photographer, filmmaker and tech writer who has been working in the publishing industry since the late 1990s. For more than 25 years he has covered photography, video and technology across Future&#039;s photography, technology and gaming brands, and worked on many of the company&#039;s launch titles. Based in the south of England, Alastair now runs a photography and video production company and lectures in TV and film. When not on set or in the classroom, Alastair can usually be found prototyping and prop building with the aid of 3D printing as well as advising companies on social video strategy and creative workflows which gives him the tech insight behind the reviews.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/NDQ74FxTgjdgghunKQ3r4B-1920-80.jpg">
                                                            <media:credit><![CDATA[Alastair Jennings]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Bambu Lab H3C]]></media:description>                                                            <media:text><![CDATA[Bambu Lab H3C]]></media:text>
                                <media:title type="plain"><![CDATA[Bambu Lab H3C]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NDQ74FxTgjdgghunKQ3r4B-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It was inevitable that there would be a successor to the <a href="https://www.techradar.com/pro/bambulab-h2c-3d-printer-review" target="_blank">Bambu Lab H2C</a>, which was no small machine; however, the Bambu Lab H3C takes scale and ability to the next level, although the innovative Vortek Hotend Change System is no more.</p><p> Like the H2C, there’s the multi-tool functionality, but as you’ll see from the images, the system is all new, with dedicated tools in the Swaptek Tool Changer rather than the Vortek hotend-changing system, so something closer to the Bondtech INDX tool changers.</p><p>An interesting update is the ability to print with different-sized nozzles, so a fine 0.2 mm for fine detail, going to a 0.8 mm for infill and areas where speed is preferable to fine finishes. What I have discovered through the month that I’ve had the printer so far is that this is an evolution of the 3D printing process, refining the techniques and while this technology and its application are still being ironed out, the full potential is apparent.</p><p>Adding to the multi-diameter printing is the advanced TPU handling. This essentially enables you to print with thicker 2.85 mm filament using the PrintTool hotend. As the filament is thicker, it supports softer TPU, and again, there’s a learning process behind its use. It’s not quite as simple as popping it in and letting it go, but it is a step in the right direction.</p><p>Sitting on top of the machine is the new AMS 3H filament management system that holds up to nine filaments, with two slots enabling integrated drying and bypass feeds for specialist materials.</p><p>I’ll admit, as the boxes kept arriving and the H3C started to take shape on the workbench, the machine did seem to dominate the space. However, after squeezing in the H2C next to it, while the new AMS gives a visual impression of scale, the footprint of the two machines is much the same.</p><p>The big question for me at the start of this test was whether this new machine and design was a direct replacement for the H2C or something altogether new. It certainly initially looks far more complex, but then, as I became more familiar with the machine, the full tool changer design, once assembled, did seem,  a little more simplistic and certainly more reliable as I pushed the print times and complexities.</p><p>One point to note is that throughout the test, while I had the machine and seemingly every accessory that I could need to go with it, the actual official machine specifications and final tweaking of the software were still to be released. </p><p>What Bambu did supply was a few test models and an extensive set of instructions about how to tackle each of the main new features. There was also a set of complex models that I used to start the test before deviating to some of my own, and then back to the supplied models to finish the test.</p><p>I’ll cover more of those tests in the performance section, but what interested me was using this printer for a real practical task. This is, after all, a business-class machine, although the price will put this just in range of the keen enthusiast as well.</p><p>The main project for this test was to print and build a set of speakers from <a href="https://printyourspeakers.com/" target="_blank">Print Your Speakers</a>, with the Supersonic MK3 kit fitting the bill for this test. Essentially, a solid PLA outer with TPU to add damping to the infill, and then a switch of nozzle sizes for the fine detail of the outer wall and a thicker nozzle for the inner walls.</p><p>This is where the learning curve of this machine and the Bambu Lab software really comes into play, and while that learning curve is steep.</p><p>As the test ran on, the potential of this machine started to grow. While multi-filament and tool changer machines now dominate and Bambu Lab’s lead in the field was quickly fading, especially with the <a href="https://www.techradar.com/pro/prusa-core-one-indx-8-tool-3d-printer-review" target="_blank">Original Prusa CORE One INDX,</a> of which the H3C’s new system bears more than a passing resemblance. But with support for 2.85 mm TPU and multiple other materials, it now pushes them back out in front and truly offers something unique, although there are still a few refinements needed.</p><h2 class="article-body__section" id="section-bambu-lab-h3c-price-and-availability"><span>Bambu Lab H3C: Price and availability</span></h2><p>The H3C will be available to purchase from the <a href="https://bambulab.com/h3c" target="_blank">Bambu Lab website</a> from 3 November 2026, following the official launch. Unlike the H2C, there is just one configuration available at launch, with the AMS 3H and all nine PrintTools included.</p><ul><li><strong>H3C AMS Combo:</strong> $2,499 / £2,199</li><li><strong>Combo + PLA Palette + TPU:</strong> $2,589 /£2,269</li><li><strong>Combo + PLA Palette + TPU + Bambu Station (Enclosed) + E1 Air Purifier:</strong></li><li>$3,049 / £2,699</li><li><strong>Combo + PLA Palette + TPU + Bambu Station (Open):</strong> $2,799 / £2,469</li></ul><h2 class="article-body__section" id="section-bambu-lab-h3c-design"><span>Bambu Lab H3C: Design</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rJATUFtNsjxrvafDRXU25B" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/rJATUFtNsjxrvafDRXU25B-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">BambuLab H2C specifications</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Print Technology: </strong>Fused Filament Fabrication (FFF)<br /><strong>Build Area: </strong>330 × 320 × 325 mm<br /><strong>Minimum Layer Resolution: </strong>To be confirmed<br /><strong>Maximum Layer Resolution:</strong> To be confirmed<br /><strong>Dimensions:</strong> 493 × 571 × 587 mm<br /><strong>Weight: </strong>36.28 kg (including AMS 3H)<br /><strong>Bed:</strong> Heated, up to 120°C<br /><strong>Print Surface: </strong>Textured PEI plate<br /><strong>Software: </strong>Bambu Studio<br /><strong>Materials: </strong>PLA, PETG, TPU, ABS, ASA, PA, PC, PPA, PPS and other supported materials<br /><strong>Print Speed: </strong>Maximum toolhead speed of 1,400 mm/s</p></div></div><p>The Bambu Lab H3C is a 3D printer on another scale, and whilst it doesn’t look that much larger than the H2C initially, once you start to work with it and try to move it around the workshop, you suddenly realise that its colossal 36.28 kg weight and physical dimensions of 493 × 571 × 587 mm make it more of a two-person lift than something you’re able to handle on your own.</p><p>That would explain why Bambu Lab also sent a special trolley along with the machine, so it’s easy to access and move around the workshop. The issue at the moment is that there are so many 3D printers coming out that my workshop doesn’t have any space, so this will be something that I will manoeuvre the printer onto once I can find a pathway through the workshop to get the two sections to meet.</p><p>As it was, I decided to set this machine up in the photo area, and I’ve already manoeuvred the H2C next to it so that I can do a side-by-side comparison on size and scale, however, again this left little room as the the scale of these machine is rapidly increasing.</p><p>As I first lifted the H3C into position, the two machines looked roughly the same size, but as I started to add the huge new AMS 3H on top, I realised that this was an altogether different proposition.</p><p>As I unpacked the machine, it was obvious that Bambu Lab had taken a completely different direction to multi tool head printing compared with the H2C, and the H3C has something more akin to the INDX tool changer. You can definitely see the similarities. As I went through the initial setup, what was surprising here was just how easy and straightforward it was, and whilst the machine was large, the actual placing of the AMS on top and positioning all of the nozzles wasn’t at all difficult. </p><p>The only thing that you do need to make sure of is that there are nine tools included: eight with 0.4 mm PrintTools for 1.75 mm filament and one dedicated 0.4 mm PrintTool for 2.85 mm filament. Careful reference to the instructions as you’re setting up is essential to make sure that this nozzle goes in the right place.</p><p>Before taking a closer look at this new system, it’s worth pointing out that the AMS 3H is quite an evolution on the AMS 2, sitting on top of the machine and really integrating more closely with the design compared with the add-on box of the AMS 2. This, I know, will please a lot of print farms, which, whilst generally fans of the Bambu Lab machines, find the AMS 2 is often a weak point and the part that they have to replace most often. One point here is that, of those nine slots, there’s a separate section within the rack which enables just two of those nine slots to be actively dried.</p><p>As we’ve seen before, you can also add more AMS units, enabling up to 24-colour printing, up from the nine possible out of the box.</p><p>Once I got everything set up and installed, which, to be honest, didn’t take too long, it was then time to connect the machine to the local network via Wi-Fi 6. As ever, this was as straightforward and simple as with all other Bambu Lab machines. One of the surprises is that a machine of this size and scale, especially aimed at the professional market, doesn’t feature an Ethernet port. </p><p>The other point here is that as soon as it connected, it ran through a series of updates before then going through the calibration process. So, while the machine itself is really well designed and easy to set up, the software updating and full calibration process can take up to an hour, which is slightly infuriating when I was quite excited to see what this machine was capable of doing.</p><p>After the Wi-Fi connection, calibration and everything else had been run through, it was time to connect through the Bambu Studio software, and again, a few clicks through the beta release that we were given, enabled me to connect quickly to the printer. </p><p>However, as always, before running through my own prints and some of those others that had been supplied to fully test out this new machine’s abilities, I ran through the standard test prints on the machine. These are the usual 3D Benchy and variants, alongside scrapers and a few other bits and bobs, as expected. It ran through all of those prints flawlessly, and then it was time to cross over to Bambu Studio.</p><p>Bambu Lab actually supplied some very interesting test models, which I go into in the performance section, but before I went into these multi-filament, multicolour designs, I decided to test out some of my more standard prints. This just enabled me to double-check the calibration and also try out a few different materials.</p><p>There are two built-in 1080p cameras, with an optional Bird’s Eye camera available as well. The chamber heats up to 65°C, with a 120°C heated bed and a 350°C maximum nozzle temperature.</p><p>Leaving the machine just to run through those few prints, I was able to step back and take a proper look at the machine, and it is an evolution of what we’ve seen with the other H series printers, just slightly larger. Again, this is a steel chassis, which gives it structural support and also makes it insanely heavy to lift around the workshop. </p><p>The outer is plastic, with a grey and black exterior that looks stylish, just in the same vein as we’ve seen with the other Bambu Lab hardware. On the front, you’ve got a big viewing window so that you can see what’s going on with the print, and whilst the top-mounted AMS 3H does stop you from looking down into the machine, it's integrated rather than being a separate unit, which I personally really like.</p><p>As we’ve seen before, there’s a really nice 5-inch colour touchscreen, with an 854 × 480 display resolution, and this is very responsive, giving me full access to all the functions and settings. However, it is getting more complex, especially with those nine toolheads. It does take a little bit of extra time just to orientate yourself with all of those different settings.</p><p>Across the front is the main feature of this new 3D printer, obviously the new nine-toolhead rack, and what’s interesting here is that the rack raises and lowers, so if you do want to see what’s going on on the print bed, it’s far easier than with some of the other multiple systems of this style out there. At all times, however, you can see where the influence of the Prusa CORE One INDX version has influenced Bambu Lab’s slight change of direction, although they’ve taken that style of design in a slightly different direction.</p><p>The rack features nine individual PrintTool docking positions, and these all automatically dock with tool alignment and offset compensation. What’s interesting here is that there are dedicated filament paths for each PrintTool, meaning that each works completely independently, and there are integrated filament cutters within the PrintTools, again just to help speed things up. When it comes to the extruder and internal mechanisms, they all use hardened steel, with hardened-steel extruder gears and nozzles rated at HRC 55+.</p><p>As ever, we see a flexible steel build plate, and this is a decent size, with a 330 × 320 × 325 mm build volume enabling you to tackle all sorts of projects, especially with the huge material support this new printer offers.</p><h2 class="article-body__section" id="section-bambu-lab-h3c-features"><span>Bambu Lab H3C: Features</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="G33mTyaPxChdNbxmryWifA" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/G33mTyaPxChdNbxmryWifA-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>It’s difficult to do a quick run-through of the features because, over the H2C, things have really progressed, and the new Swaptek nine-tool changing system is a real evolution of design. You can’t help feeling it’s heavily influenced by the INDX system that we’ve seen from Bondtech and featured on the latest Prusa CORE One machines.</p><p>However, over that system, there are plenty of changes, and it’s obviously got the Bambu Lab spin, with automatic tool changes that happen in under six seconds. There’s also active preheating that essentially anticipates the upcoming tool changes and heats the next nozzle in advance, making complex models slightly faster to print than on some of those other systems.</p><p>One of the features that I noticed early on, and one of the issues with other systems of this style, is that quite often the tool rack gets in the way of being able to see the print area. However, once that new tool is selected, the tool rack actually retracts upwards so that you get a good clear view of the print area, and it also helps to keep the filament tubes out of the way.</p><p>Feeding all of those nine new toolheads is the redesign of the AMS system, known as the AMS 3H, that manages the filaments in an integrated box that sits on top of the machine. Like the AMS 2, it's a sealed storage option and helps protect the filaments inside from moisture. </p><p>Again, as we’ve seen in the past, it has automatic filament loading and routing that works exceptionally well, and with RFID built in, as long as you’re using Bambu Lab’s own materials, they’ll be automatically recognised and synced with the software, making the whole process that much easier. </p><p>One of the surprises is that only two of those nine slots are actively dried, so if you do have filaments that are more prone to moisture than others, then they should sit in those two. There’s a cover that sits over the top, so it’s pretty easy to see which two those are.</p><p>As ever, there are also expansion options, so if you have other AMS systems and you want to plug them in, the H3C supports additional AMS units for up to 24-colour printing.</p><p>One of the new additions is the FlexFeed extruder that supports both 1.75 mm and 2.85 mm filament, and there’s also a dedicated 2.85 mm filament path for flexible materials such as TPU. While TPU for AMS can just be used directly on the machine, as I discovered when I printed speakers with files from Print Your Speakers, when it came to printing other softer TPU, you have to use one of the bypass feed ports and quickly change part of the installation and feed to the toolheads. </p><p>The first time you do it, it takes a little bit of time and working out, but essentially, the soft TPU needs to go into one of the slots that enables active drying. TPU is hygroscopic and collects water like a sponge, so ensuring that it’s nice and dry before it goes through the system is just going to improve and help with the quality of the print. </p><p>You then feed that through into the 2.85 mm supporting toolhead, but rather than running through the filament feed tube, you bypass the tube, cutting just a small length that goes into the toolhead and then directly into the extruder. This just helps with the smooth movement of the TPU filament through the system. This means that it can actually cope with TPU all the way down to 75A, perfect for some of the projects that Bambu Lab supplied.</p><p>Using TPU in the system is not uncommon, but you still have to reconfigure the system slightly. Bambu Lab has made that slightly easier, and of course, you also have the ability to print with multiple materials and multiple colours. </p><p>But what impressed me the most is that with the Bambu Lab PLA palette, which is a new range of filaments, you can print with CMYKW to enable colour mixing using cyan, magenta, yellow, black and white filaments. The end results, as you’re seeing in some of the sample pictures, are quite amazing, enabling far more colourful and complex prints than has previously been possible.</p><p>But it’s not just about multiple colour-mixing filaments. You can also use a huge amount of engineering materials because of the hardened nozzles and the actively heated chamber, so utilising ABS, ASA, PA, PC and carbon-filled composites is all perfectly possible.</p><p>Further supporting the flexibility over the way you print is that there are multiple nozzle sizes, including 0.2, 0.4, 0.6 and 0.8 mm. But what makes a difference here is that you can optimise it to work using those different nozzles in one print. That means you can speed up the printing of the interior support structure with, say, a 0.6 or 0.8 mm nozzle and get that fine-quality finish on the exterior with a 0.2 or 0.4 mm nozzle. This is something very new.</p><p>There’s also been a range of feature enhancements for speed, with a maximum toolhead speed of 1,400 mm/s and acceleration of 25,000 mm/s². To keep up with that high-speed printing, the hotend flow rate of 40 mm³/s is also impressive, although these run to Bambu Lab’s own test conditions rather than what you’re actually going to see in the real world.</p><p>Something which I haven’t really been able to look at in any depth is the CraftTool support, and we’re starting to see Bambu Lab not only promote their machines for 3D printing but for other craft uses. This is what really made the H2D such an interesting machine. Potentially, in the near future, the CraftTools will enable automatic switching between compatible printing and crafting tools, so there will be blade cutting, drawing and debossing, but I’ll bring you more on that when I’ve been able to look at it properly.</p><p>As I mentioned in the Design section, Bambu Lab and, actually, quite a few of the other manufacturers are starting to take filtration seriously, and here we’ve got the H11 HEPA filter, granulated coconut-shell activated-carbon filter and an integrated chamber exhaust and circulation system. Bambu Lab actually even provided an air filter with the machine, which has been very handy, especially in quite a crowded workshop.</p><p>When it comes to features, the H3C is one of the most feature-packed printers to have come onto the market yet, but with all of those features comes an added level of complexity that could cause issues in the long run, and the only way to discover those is to ensure that, over the month of having this machine, it has been running almost constantly.</p><h2 class="article-body__section" id="section-bambu-lab-h3c-performance"><span>Bambu Lab H3C: Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Fw3KiZzWMtZcTfZN9Zf3vA" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/Fw3KiZzWMtZcTfZN9Zf3vA-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>As these 3D printers get more complex and the models that they’re able to produce become increasingly more elaborate, mixing not only colours but materials, the time it takes to fully test one of these machines is rapidly increasing.</p><p>Thankfully, Bambu Lab recognises that whilst machines are speeding up, when it comes to fully testing some of those mixed-filament options, it doesn’t just take hours; it takes days for each print to be produced. In order for you to run through all of the test prints provided, including rerouting different filaments, that all takes a considerable amount of time. </p><p>But thankfully, I’ve had this printer for almost six weeks, and through that time, there have only been brief periods where it has remained dormant. Otherwise, filament after filament has gone through, producing everything from pinhole cameras out of carbon-filled filament through to some quite incredible desktop speakers, thanks to the guys at printyourspeakers.com, and of course, the extremely elaborate models that the guys at Bambu Lab provided to test out this printer.</p><p>Before I go into that, I’ll just quickly run through the setup process of the machine, as whilst this machine looks extremely complex, the actual setup process is typically Bambu. Essentially, with the machine arriving in two boxes, the machine and a separate box for the AMS, it only took about half an hour before the machine was sitting proudly on the workbench, looking ready to produce its first print.</p><p>The instructions are pretty clearly laid out, and as you’d expect, the large 5-inch touchscreen gives you all the information you need. Once everything is plugged in and connected, you then simply load the filament, and it’s pretty much set to go. However, as always, that complexity comes with a large extra step. </p><p>First, you download and install the firmware, which all ran through nice and quickly, but then it was on to the full setup calibration. Whilst it doesn’t actually take any involvement from yourself other than clicking a couple of buttons, it does take about an hour, and when you have a machine of this size and potential in front of you, that wait is slightly agonising but unfortunately essential.</p><p>Once the machine had run through its copious amount of checks and all the nozzles had been calibrated, it was time to run through the first set of prints, and here I had three different options. Firstly, those pre-installed on the machine in the 64 GB internal storage; the second was my usual test prints; and the third was the additional files that Bambu Lab had provided to fully test out the system.</p><p>I opted for the quick run of those prints in storage just to check whether the calibration had worked and everything was printing correctly, and sure enough, print after print came off the print bed without issue, mixing the colours beautifully into pretty good-quality standard prints. All of these that I started with initially were PLA and mainly ends of reels from previous reviews.</p><p>Then it was on to my own test prints, and again, the accuracy and precision of the printer really stood out, and I was also impressed with the relative speed. One of the big points here is that the tool-changing system, as I saw with the INDX, vastly increases print speeds when compared with the H2C, which is a machine that I actively always have set up and running. </p><p>The speeds with this new system are again slightly faster. A quick test of those print speeds on the H3C, printing the two-tone tree frog in large, took two hours and three minutes, with about eight minutes taken for the preparation time and the rest on the actual model printing. This compared with almost three hours on the H2C, and whilst it was far faster on the preparation and checks at just under six minutes, the print time was closer to two hours and 50 minutes. Finally, comparing it with the H2D, surprisingly, it put in a similar time to the H2C.</p><p>As I ran through the test, the speed of the machine was the first thing that really stood out, and with a relatively large print bed as well, I was able to print large projects with absolute ease. Support structures went in nice and easily, and I always use PLA support, although as I started to venture into Bambu Lab’s own models, I realised the standard PLA support was just not delicate enough for what was needed, and PVA support, which could be washed away, would have been a better option.</p><p>Through my own models, there were quite a few different projects that I wanted to really give a go. The first was a pinhole camera that I had designed for some lectures and was small. It's a good way to test out dimensional accuracy, as I had to drop in a brass-sheet pinhole lens that I had designed and make it tripod-mountable, with brass inserts used for the screw thread.</p><p>As the box also had to be lightproof, dimensional accuracy due to the fitting and removing of a lightproof back was also essential, and using a carbon-filled filament with solid infill just ensured that the whole box would stay lightproof. I also had to feature a sliding shutter mechanism that would cover the brass aperture, so again, quality of surface printing as well as dimensional accuracy was absolutely essential.</p><p>After running several iterations of the design, I came up with the final product and tested it in the studio with success, producing small prints onto photographic paper through a 0.3 mm aperture. The quality of the print and success of the project just highlighted the first bit of flexibility with this machine and its design.</p><p>The next was to call on somebody with a lot more experience with high-quality and precision engineering 3D design, and the guys at Print Your Speakers provided me with the Supersonic MK3 desktop speaker kit to give this new printer a go. There were several angles that I wanted to fully test that no other printer would be able to do.</p><p>The first was obviously to print speakers using PLA for the outer, but then rather than having PLA infill, I wanted it to be TPU in order to help absorb some of the sound. I also wanted to be able to swap between nozzle sizes, all of which took a little bit of experimentation, and at present this is an area of the systems use that I will have to come back to, as at the moment I haven't had any success. I then tested a straight PLA box against the PLA and TPU mixed box, and the difference in audio quality was apparent, with a far deeper sound from the more advanced material-mix option.</p><p>Having now tried a variety of different materials and options through the machine, I was pretty confident about setting off with some of Bambu Lab’s own models to fully test out its abilities. The first was the FROSTSPINE Dragon Bust 1015, which used a variety of materials and took a while to organise the different materials that were needed into the AMS and configure the system. </p><p>Printing this started to point out the big difference between the old Bambu Lab multi-filament AMS systems and this new iteration. It's far more complex, and along with the printing guides that helped guide you through the setup, there’s definitely a greater skill required to get the most out of this machine. </p><p>It took two or three initial attempts before that model rattled off the print bed, taking several days to complete. I then moved on to the hummingbird frame, which was a simple multi-filament PLA mix, and here I really started to see the full potential, being able to mix the colours to create colours that weren’t directly available from a single filament but only once they were blended together, and the results were spectacular. </p><p>The only thing was that I accidentally used PLA support rather than PVA support, so once the final model printed, which took several days, it was going to be a long process to break away all of that support. The intricacy and delicacy of many of the models that you’re now able to print on this machine far exceed what you’ve been able to do before.</p><p>Through this whole process, the one thing that became apparent was that this is a far more hands-on machine, and there is an obvious learning curve, especially working with all the different toolheads, nozzle sizes, bypass filament feeds and potentially additional CraftTools. This is a very feature-enhanced workshop machine at a price that will appeal to both enthusiasts and professionals.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="e9HT7b5TX22c2xZAobjFuC" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/e9HT7b5TX22c2xZAobjFuC-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><h2 class="article-body__section" id="section-bambu-lab-h3c-final-verdict"><span>Bambu Lab H3C: Final verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BYW7QGVXBZD54JNQnHGu4B" name="Bambu Lab H3C" alt="Bambu Lab H3C" src="https://cdn.mos.cms.futurecdn.net/BYW7QGVXBZD54JNQnHGu4B-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Alastair Jennings)</span></figcaption></figure><p>In those six weeks of testing, I feel like I’ve only just started to scrape the surface of what’s possible, but there are several key points that I’ve learnt through this test. The first is that if you just want to get straight into printing, then there are cheaper machines out there which will enable you to do that. So if you only print with up to four filaments, which most people do, then the complexity of this machine might be just a little bit above what you need.</p><p>But then, as you start to embrace all its options and capabilities, and if you’re willing to sit down and learn about how to mix materials, how to use those different nozzle sizes together and obviously all those different filament types, then you have a 3D printer that is really quite different from anything that’s come before and sets the tone for what’s coming up in the future.</p><p>Whilst there are more than passing similarities with the INDX system, what Bambu Lab has done here is to evolve what it had done with its previous multi-filament systems and, with this new option, create something that is far more advanced.</p><p>With that increasing complexity come its own issues, and through the process of this review, I did have occasions where I had to rerun the full calibration as one of the nozzles wasn’t quite sitting right. Then there’s the whole bypass reconfiguration of the filament feed, which does get quite complex, but once you’ve done it once, you basically allocate one toolhead to TPU, still leaving you with eight for all other filaments.</p><p>The options and possibilities for this machine are huge, and through this review, I’ve just been incredibly impressed with the overall quality. Each firmware update has fixed some of the issues that I was having early on, such as the RFID not recognising filament reels and, for some reason, the auto-feed system suddenly not auto-feeding. But after the update, those issues were fixed.</p><p>I also had, as you might be able to see on the speaker set, a slight issue with surface finish, but then that’s because I was experimenting with some of those more advanced features, and this was the first time that I had configured the whole process myself in the software. Later, small models printed with much better quality, but again, this is all part of that learning process. As it stands, this printer is a definite evolution of what’s possible and an exciting glimpse into the future of 3D printing.</p><h2 class="article-body__section" id="section-should-i-buy-the-bambu-lab-h3c-3d-printer"><span>Should I buy the Bambu Lab H3C 3D printer?</span></h2><h2 id="buy-it-if-11">Buy it if...</h2><div class="product"><p><strong>You want to print with multiple materials and nozzle sizes.</strong></p><p>The H3C enables you to combine different materials and nozzle diameters in a single print, something that would be difficult or impossible to produce on more standard 3D printers.</p><p><strong>You want faster, more efficient multicolour printing.</strong></p><p>With nine PrintTools and material changes taking under six seconds, the H3C reduces the time swapping filaments.</p></div><h2 id="don-39-t-buy-it-if-8">Don't buy it if...</h2><div class="product"><p><strong>You just want a straightforward 3D printer.</strong></p><p>The H3C has a steep learning curve, especially when mixing materials and nozzle sizes. For standard PLA printing, there are simpler, cheaper options.</p><p><strong>You have limited space or a tight budget.</strong></p><p>At £2,199 and over 36 kg, the H3C is a substantial investment unless you'll regularly use its advanced features.</p></div><p><em>For more models, I've tested the </em><a href="https://www.techradar.com/best/best-3d-printers" target="_blank"><em>best 3D printers</em></a><em> you can get right now. </em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've spent a week with Apple's new iPad mini, and the OLED upgrade is everything I'd hoped for ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-one-minute-review"><span>Apple iPad mini 8.5-inch (2026) review: One-minute review</span></h3><p>It's been a long time coming, but Apple has finally addressed more than a few people's wish lists with its latest-generation iPad mini. Yes, it's still the smallest iPad in terms of display size, not price, but this upgrade is really about the sum of its parts.</p><p>The jump to OLED is the headline upgrade, and paired with a thinner, lighter build and plenty of performance under the hood, it makes a big, big difference. The 8.5-inch Super Retina XDR display is an absolute joy to use; whether I'm watching a film, playing a game, editing photos, or just scrolling through iPadOS, everything looks fantastic. </p><p>If you've been holding out for an OLED iPad mini, this is the upgrade you've been waiting for. It's a major improvement, even without ProMotion, and the improved refresh responsiveness makes everyday scrolling and swiping feel that much more seamless.</p><p>The design is another big part of the story. At just 5.33mm thick and 254g, the iPad mini is deceptively slim and light. The mini was already the iPad I find easiest to take pretty much anywhere, but this new model is even more comfortable to hold and use for longer stretches. And while it might look familiar, there are some meaningful changes beyond the thinner build. The new IP67 rating adds welcome water and dust resistance, giving the mini more durability for everyday use, and giving you peace of mind if you're sharing it with family members.</p><p>It also packs plenty of power. The A20 Pro chip makes multitasking, photo editing, gaming, and even some of Apple's newer AI features, which demand a fair bit of power, feel effortless. Battery life has been solid in my testing, too, getting close to Apple's 10-hour claim, while the N1 chip brings Wi-Fi 7, Bluetooth 6, and Thread connectivity. If you opt for the Cellular model, you also get Apple's C2 modem.</p><p>Of course, all of this comes at a price. The iPad mini starts at $699, so it's certainly not the cheapest iPad in Apple's lineup. The model I've been testing is the 512GB Wi-Fi and Cellular version with the optional nano-texture display, which comes in at $1,099. That's a considerable investment for a tablet this size, but the mini has never really been about offering the lowest entry price. It's for people who want this particular screen size and the portability that comes with it, and Apple has now managed to squeeze a whole lot more value into this little package.</p><p>There are still a couple of things I'd like to see, most notably ProMotion and a more exciting selection of colors. But those small issues don't take away from how much I enjoy using this iPad. The OLED display makes a world of difference, the slimmer build is even better, and the combination of performance, battery life, and added durability makes this a seriously capable little tablet. If you're already a fan of the iPad mini, you'll love a lot about this generation.</p><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-specs"><span>Apple iPad mini 8.5-inch (2026) review: Specs</span></h3><div ><table><caption>iPad mini 8.5-inch (2026) specs</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>iPad mini (2026)</strong></p></td></tr><tr><td class="firstcol " ><p>Starting price</p></td><td  ><p>$699 / £699 / AU$1,099</p></td></tr><tr><td class="firstcol " ><p>Operating system</p></td><td  ><p>iPadOS 27</p></td></tr><tr><td class="firstcol " ><p>Chipset</p></td><td  ><p>A20 Pro</p></td></tr><tr><td class="firstcol " ><p>Storage</p></td><td  ><p>128GB / 256GB / 512GB </p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>8.5-inch Super Retina XDR display (OLED 2316 x 1512)</p></td></tr><tr><td class="firstcol " ><p>Cameras</p></td><td  ><p>12MP wide main, 12MP ultra-wide front</p></td></tr><tr><td class="firstcol " ><p>Battery</p></td><td  ><p>18.9Wh</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Wi-Fi 7, Bluetooth 6, and Thread from Apple N1. 5G Sub-6Ghz and Gigabit LTE on Cellular models with Apple C2.</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>255g (Wi-Fi) / 263g (Cellular)</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>195.3mm x 132.6mm x 5.4mm</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-pricing-and-availability"><span>Apple iPad mini 8.5-inch (2026) review: Pricing and availability</span></h3><p>Apple's new iPad mini starts at $699 / £699 / AU$1,099 for the Wi-Fi model, or $849 / £849 / AU$1,349 if you want Wi-Fi and Cellular. Apple began taking preorders on October 28, ahead of the tablet's official launch on November 6, 2026.</p><p>You can configure your iPad mini with 128GB, 256GB, or 512GB of storage. If you want Apple's nano-texture display, you'll need to choose either the 256GB or 512GB model, and that adds $100 / £100 / AU$200 to the price. Apple also includes a polishing cloth in the box with nano-texture models.</p><ul><li><strong>Value score: 4 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-design"><span>Apple iPad mini 8.5-inch (2026) review: Design</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yp7aL3hLeZPGi4Wgs4vSpZ" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/yp7aL3hLeZPGi4Wgs4vSpZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Super light and thin</strong></li><li><strong>This makes for more of an upgrade than you might expect from reading the specs</strong></li><li><strong>Still the most portable iPad in the lineup</strong></li></ul><p>The new iPad mini is really, really thin — almost deceptively so — and won't weigh your hand down at all. At just 5.33mm thick and 254g, it's noticeably slimmer and lighter than the previous generation, which measured 6.35mm and weighed 295g.</p><p>The iPad mini has always been the most portable tablet in Apple's lineup, offering much of the full-size iPad experience in a much smaller package. That's still true here, but the latest model takes that portability even further. It's easy to hold in one hand while scrolling, throw into a bag for a trip to the cafe, and take pretty much anywhere. It's genuinely pocketable when you're wearing a jacket, and, interestingly, weighs less than an iPhone Duo.</p><p>The overall design hasn't changed dramatically, and that's not necessarily a bad thing. The slimmer build brings it even closer to offering that 'sheet-of-glass' look and feel, while also making it more comfortable to hold for longer viewing sessions. The display is larger, too, thanks to the slimmer bezels, so you're getting more screen without sacrificing that compact form factor.</p><p>On the front, Apple has moved the 12MP Center Stage camera so it's on the top edge when you're holding the mini in landscape orientation, aligning it with the rest of the iPad lineup. There's still no Face ID; Touch ID is built into the power button instead, and it works quickly to unlock the tablet and authorize purchases. The separate volume buttons sit nearby, with their orientation changing depending on how you're holding the iPad.</p><p>Flip it around and you'll find the centered Apple logo, rear camera, and Adaptive True Tone flash. The USB-C port is on the bottom when you're holding the mini in portrait mode, and a microphone sits near the Center Stage camera. </p><p>One thing you might notice is what's missing here: the speaker grilles. Apple has done away with those cutouts as part of its new Acoustic Audio system, which I'll get into more in the Audio section below. It makes for a much cleaner look, and the change also makes IP67 water and dust resistance possible — a first for the iPad mini, and a welcome addition. I've tested it with a little water, and the iPad stands up just fine; it's nice to know you can take it to the beach or use it in the rain. It's also some useful added durability for a tablet the whole family could easily use.</p><p>The one area where I'm a little less enthusiastic is the choice of colors. The A17 Pro iPad mini came in Blue and Purple, while here you can choose between Starlight and Midnight. I've been testing Midnight, which has a very dark blue look, but it does show fingerprints on the rear. Paired with Apple's new TechWoven Folio, though, it makes for a nice-looking setup.</p><ul><li><strong>Design score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-display"><span>Apple iPad mini 8.5-inch (2026) review: Display</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j9oug3RrGbusY6mHtDdmFa" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/j9oug3RrGbusY6mHtDdmFa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>OLED display is a terrific addition</strong></li><li><strong>Content looks exceptionally great here, with rich blacks and vibrant colors</strong></li><li><strong>Nano-texture pairs really well with OLED and lets you use the iPad mini in any light</strong></li></ul><p>It feels like we've been asking Apple to bring an OLED display to the iPad mini for years — it's certainly been a wish of mine — and Apple finally delivered this year. Whether you're coming from the previous-generation iPad mini or older model, this is pretty close to a night-and-day experience.</p><p>The 8.5-inch Super Retina XDR display is an absolute joy to use. It's OLED, so blacks are properly inky, colors really pop, and everything looks fantastic. It's a great tablet for running through some tasks, drawing with the Apple Pencil, FaceTiming with family and friends, and especially for watching content.</p><p>Admittedly, it's only 0.2 inches larger than the previous display, so you're not getting much extra usable space. But the visuals are much more vibrant, everything looks crisper, and it's a more immersive view. At this size, it's made a real difference in my iPad mini experience.</p><p>I found myself editing photos in Pixelmator Pro and Apple's Photos app, drawing in Procreate, and playing games like <em>Mini Metro</em> and <em>Mini Motorways</em> to see how quickly visuals render and how much colors can pop. Watching films like <em>Toy Story 5</em> or <em>Moana</em> on Disney+ was a blast, too, and the same goes for catching up on <em>Ted Lasso</em> on Apple TV. HDR content, in particular, benefits from the OLED panel, with more pronounced contrast and colors that really jump off the screen. This is a fantastic little movie-watching tablet.</p><p>The new mini also gets a brightness boost, with peak brightness reaching 1,200 nits for HDR and 600 nits in everyday use, up from 500 nits on the previous generation. You'll notice that difference indoors and outdoors, especially when watching HDR content. And when you're using the iPad mini outside, that extra brightness paired with NanoTexture makes a big difference.</p><p>Which brings us to the optional nano-texture upgrade. Available on the 256GB and 512GB models, it costs an extra $100 / £100 / AU$200, and adds Apple's proprietary, etched coating over the Super Retina XDR display. It's incredibly effective at reducing glare from both natural and artificial light sources, as well as reflections on the screen. Apple has brought this technology to several other products, including the iPad Pro, MacBooks, iMacs, and Studio Displays, and there's also a slightly different implementation on the iPhone Duo.</p><p>I've found nano-texture particularly useful in direct sunlight. It effectively mutes reflections and cuts down glare, making the display much easier to see when you're out and about. It also gives the screen a more paper-like feel, which makes using either the Apple Pencil Pro or Apple Pencil USB-C particularly nice. I've found myself bringing the iPad mini along to cafes and meetings to take notes, and its size makes it feel a little like carrying a classic Moleskine notebook.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jAHuzpfNrRXUoYet8HUaNa" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/jAHuzpfNrRXUoYet8HUaNa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>It's not a cheap upgrade, and I haven't tested the standard glass and nano-texture versions side by side. But paired with a more portable iPad than the Air or Pro, and one that now has extra durability, it makes the mini even more enjoyable to use when you're out and about.</p><p>Another benefit of the move from LCD to OLED is better display responsiveness, even if the display here doesn't quite reach the 120Hz standard of ProMotion. Apple describes this as sub-pixel millisecond control, and in everyday use, scrolling and swiping feel a little more seamless than on the previous generation, and it does make the display feel that bit more fluid.</p><p>It's not, however, ProMotion. The iPad mini is still limited to a 60Hz refresh rate, rather than the super-smooth 120Hz you'll find on Apple's Pro models. As I've said in previous iPhone and iPad reviews, if you're not coming from a device with a higher refresh rate, you probably won't miss it. It's an odd omission here, especially at this starting price, but I've still found the iPad mini responsive in use, with no noticeable issues in everyday use.</p><p>All in all, the move to OLED makes a big difference. The new mini is a joy to watch content on, and even using iPadOS feels better on this display.</p><ul><li><strong>Display score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-cameras"><span>Apple iPad mini 8.5-inch (2026) review: Cameras</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s7wb7a3kTpQvQBhNRrGcUZ" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/s7wb7a3kTpQvQBhNRrGcUZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>A welcome move for the front-facing camera</strong></li><li><strong>Still a 12MP main camera on the back</strong></li></ul><p>Like every other iPad in Apple's lineup, and most that came before it, the iPad mini has two cameras. Around the back is a 12MP wide camera paired with an Adaptive True Tone flash. It's nearly identical to the main camera on the previous-generation iPad mini, and if you do choose to take photos with the mini — and it's probably the most acceptable iPad for that — you'll get some good shots. I wouldn't expect it to rival an iPhone 18 Pro or even an iPhone Air, though.</p><p>The real upgrade is the camera built into the bezel around the front display. It's now a 12MP Center Stage camera, positioned centrally on the side of the iPad when you're using it in portrait mode, so that when you're holding it horizontally, it's in the right place for video calls. And when you pair the iPad mini with Apple's Folio Case or a third-party alternative, that's generally how you'll have it positioned when propped up.</p><p>Performance here is great for video calls, whether you're using Apple's own FaceTime or jumping into a Webex meeting, Slack huddle, or a Zoom or WhatsApp call. I looked clear and stayed in focus, but as someone who likes to walk and talk, I particularly appreciated Center Stage. As I moved around, the camera and onboard software worked together to keep me in the shot, using smart panning and zooming to follow my movements.</p><ul><li><strong>Cameras score: 4 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-software"><span>Apple iPad mini 8.5-inch (2026) review: Software</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PcVChpaLT6mC4mqMhbPaNa" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/PcVChpaLT6mC4mqMhbPaNa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Runs iPadOS 27 out of the box</strong></li><li><strong>Full multitasking with windows is great on this form factor</strong></li><li><strong>Support for two Apple Pencil models</strong></li></ul><p>The iPad mini is running iPadOS 27 out of the box, which certainly brings a lot more to the table than previous versions, particularly anything before iPadOS 26. For starters, the iPad mini supports the new Siri AI beta if you opt in and are in an eligible region. You also get the full windowed app experience that Apple introduced with iPadOS 26.</p><p>That means you can have several apps open at once, switch between them, and layer windows on top of each other. The mini's 8.5-inch display isn't the largest canvas for this kind of multitasking, but it feels surprisingly expansive, and can handle several apps at once.</p><p>Multitasking felt fast, and I often found myself using the iPad mini for more than just one thing at a time, ranging from streaming content or gaming to productivity tasks like emailing and web browsing. I also used it for creative pursuits, including journaling, drawing, and photo editing, as well as simply settling in with a good read.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jyJeUZFwWERz6cJt2JM7Ha" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/jyJeUZFwWERz6cJt2JM7Ha-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>What I really love about the size here is that, this iPad's name notwithstanding, this is not an especially small display. At 8.5 inches it's closer to the size of a classic notebook or book, so it actually feels pretty expansive, especially when you're working between different apps. Some days, though, I connected a keyboard and trackpad and plugged the iPad mini into an external display to give myself another window to work with.</p><p>That's a particularly welcome addition, because the mini is no longer limited to simply mirroring its display on an external monitor. You can also extend your workspace, which opens up even more possibilities for multitasking and getting things done.</p><p>I found myself pulling images and other assets from Photos, Files, and Messages, then dropping them straight into Pixelmator Pro. Moving between apps and juggling different windows felt effortless, and it's a good example of what the iPad mini can help you do beyond the usual browsing, streaming, and reading.</p><p>Of course, a lot of that comes down to the hardware under the hood. I'll touch on this more in the next section, but the iPad mini runs Apple's A20 Pro chip, from the same family of processors as those powering the iPhone 18 Pro, iPhone 18 Pro Max, and iPhone Duo. However, performance differs depending on which storage configuration you choose, so it's worth looking a little closer.</p><ul><li><strong>Software score: 4 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-performance"><span>Apple iPad mini 8.5-inch (2026) review: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YdyvRxRoL8wLLbCKCwRfPa" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/YdyvRxRoL8wLLbCKCwRfPa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>A20 Pro is very, very fast</strong></li><li><strong>Plenty of a runway for demanding tasks</strong></li><li><strong>You'll need to pay more for the best version of the chip</strong></li></ul><p>As I mentioned above, the iPad mini runs Apple's A20 Pro chip, but there's a tale of two chips here. I've been testing the 512GB model with Wi-Fi and Cellular, which gets the full-fat version of Apple's latest silicon.</p><p>If you opt for the 128GB or 256GB configurations, you get a five-core CPU (two super cores and three efficiency cores), a seven-core GPU, and a 16-core Neural Engine. The 512GB version, meanwhile, comes equipped with a six-core CPU (two super cores and four efficiency cores), the same seven-core GPU, and a Dual 16-core Neural Engine. That's the same chip configuration as in the iPhone 18 Pro, iPhone 18 Pro Max and iPhone Duo, while the lower-storage models get a slightly more binned-down version.</p><p>I don't suspect those extra CPU cores will make a night-and-day difference for most everyday tasks. You might see more of a benefit with particularly processor-intensive workloads or when running more AI locally on-device, but for the vast majority of people even the lower-storage iPad minis should feel plenty fast.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:806px;"><p class="vanilla-image-block" style="padding-top:55.09%;"><img id="9AMyfDsoBuwkCsSLYZ9A7L" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/9AMyfDsoBuwkCsSLYZ9A7L-1920-80.gif" mos="" align="middle" fullscreen="" width="806" height="444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>This is the second generation of iPad mini to get a Pro chip option, and it enables the tablet to tackle higher-performance tasks with ease. In Geekbench 7, my review unit scored 3,998 in single-core tests and 11,485 for multi-core. In Geekbench 6, it scored 4,720 and 12,697, respectively. Those are very impressive results, particularly compared with the scores for the previous-generation iPad mini, which scored 2,829 in single-core and 6,938 in multi-core in Geekbench 6.</p><p>Those are impressive numbers on paper, and in real-world testing over the past seven days, the iPad mini has been a champ. Apps open incredibly quickly, photo edits happen without a hitch, and even more demanding tasks, like using the Super Resolution option in Pixelmator Pro, and other power-hungry image upscaling tools, felt effortless. Everything feels very, very responsive, and I haven't found myself waiting around for the iPad mini to catch up.</p><p>I also put the Apple Intelligence features through their paces, including Clean Up and Expand Images in Photos, alongside multimodal requests with the new Siri AI beta. I tried a few third-party apps with AI-powered features, too. These are the kinds of tasks where having Apple's latest silicon and Neural Engine come into play, and the iPad mini handled my testing without any noticeable slowdown.</p><ul><li><strong>Performance score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-battery-connectivity"><span>Apple iPad mini 8.5-inch (2026) review: Battery &amp; connectivity</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Q2NwgugjEWGY6po8jWTY7a" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/Q2NwgugjEWGY6po8jWTY7a-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>A lot of mileage for a mini iPad</strong></li><li><strong>Impressive results in our battery test</strong></li><li><strong>Apple's C2 modem serves up faster connectivity</strong></li></ul><p>Apple continues to promise all-day battery life with the iPad mini: up to 10 hours of web browsing over Wi-Fi or video, and up to nine hours of web browsing over a cellular data connection. Inside is an 18.9-watt-hour rechargeable lithium-polymer battery, and in my testing I've found it lasts close to 10 hours, depending on what I'm doing.</p><p>That's a pretty good result, especially considering the upgraded display. I suspect the OLED panel is more efficient, and paired with the A20 Pro, it makes for a nice combination. In Future PLC's lab battery test, the new iPad mini lasted an impressive 14 hours and 24 minutes. That's a substantial improvement over the previous generation, which managed 10 hours and 36 minutes in the same test.</p><p>Connectivity also gets a meaningful upgrade. The iPad mini features Apple's N1 chip, which supports Wi-Fi 7, Bluetooth 6, and Thread. If you opt for the Cellular model you'll also get Apple's C2 modem, which the company says offers up to 50% faster speeds compared to its previous modem.</p><p>I've been testing the cellular connection on Verizon's network in the US, with access to 5G, and it's performed pretty well. Throughout New Jersey, I tracked download speeds ranging from 600 to 1,200Mbps, with upload speeds around 35 to 62Mbps. That's plenty for streaming, downloading files, browsing, and staying connected when I'm away from Wi-Fi.</p><ul><li><strong>Battery and connectivity score: 4 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-should-you-buy-it"><span>Apple iPad mini 8.5-inch (2026) review: Should you buy it?</span></h3><div ><table><caption>Apple iPad mini 8.5-inch (2026) review scorecard</caption><tbody><tr><td class="firstcol " ><p>Attributes</p></td><td  ><p>Notes</p></td><td  ><p>Rating</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Even with the price increase, you're getting a lot of tablet for your money.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Thinner and lighter, but keeps the classic, ultraportable design the iPad mini is known for.</p></td><td  ><p>4.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>OLED finally arrives on an iPad mini, and the display is excellent, even without ProMotion.</p></td><td  ><p>4.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Cameras</p></td><td  ><p>CenterStage is in the right spot for the front-facing camera, and makes the iPad mini even better for video calls.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Software</p></td><td  ><p>iPadOS 27 is still feature-packed, offering true multitasking support, and the iPad mini takes full advantage of this software.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The A20 Pro makes light work of pretty much every task.</p></td><td  ><p>4.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Battery and connectivity</p></td><td  ><p>Plenty of battery life, with some welcome connectivity upgrades.</p></td><td  ><p>4 / 5 </p></td></tr></tbody></table></div><h2 id="buy-it-if-12">Buy it if...</h2><div class="product"><p><strong>You've been waiting for a better screen</strong><br />The jump to OLED makes a significant difference for both viewing content and day-to-day use — combined with iPadOS, this display shines.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="f89a843c-d6eb-11f1-8951-1119202bcff8" data-action="Deal Block" data-label="You've been waiting for a better screenThe jump to OLED makes a significant difference for both viewing content and day-to-day use — combined with iPadOS, this display shines." data-dimension48="You've been waiting for a better screenThe jump to OLED makes a significant difference for both viewing content and day-to-day use — combined with iPadOS, this display shines." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You want an ultraportable iPad that doesn't skimp on performance</strong><br />With one of Apple's newest chips and a super-slim, premium build, the iPad mini feels responsive and comfortable to hold for long periods — this will remain a powerful iPad for years to come.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="f89a8496-d6eb-11f1-b347-f5cdd89cf725" data-action="Deal Block" data-label="You want an ultraportable iPad that doesn't skimp on performanceWith one of Apple's newest chips and a super-slim, premium build, the iPad mini feels responsive and comfortable to hold for long periods — this will remain a powerful iPad for years to come." data-dimension48="You want an ultraportable iPad that doesn't skimp on performanceWith one of Apple's newest chips and a super-slim, premium build, the iPad mini feels responsive and comfortable to hold for long periods — this will remain a powerful iPad for years to come." data-dimension25="">View Deal</a></p></div><h2 id="don-39-t-buy-it-if-9">Don't buy it if...</h2><div class="product"><p><strong>You don't want to break the bank</strong><br />The iPad mini starts at $699 / £699 / AU$1,099, and upgrades can quickly put that price over $1,000 / £1,000 / AU$1,450.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="f89a8554-d6eb-11f1-8cec-87d522e09ca2" data-action="Deal Block" data-label="You don't want to break the bankThe iPad mini starts at $699 / £699 / AU$1,099, and upgrades can quickly put that price over $1,000 / £1,000 / AU$1,450." data-dimension48="You don't want to break the bankThe iPad mini starts at $699 / £699 / AU$1,099, and upgrades can quickly put that price over $1,000 / £1,000 / AU$1,450." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-how-i-tested"><span>Apple iPad mini 8.5-inch (2026) review: How I tested</span></h3><div  class="fancy-box"><div class="fancy_box-title">Why you can trust TechRadar</div><div class="fancy_box_body"><p class="fancy-box__body-text">☑️ <strong>100s of tablets </strong>reviewed<br />☑️ <strong>15 years</strong> of product testing<br />☑️ Over <strong>16,000 products</strong> reviewed in total<br />☑️ Nearly <strong>200,000 hours</strong> testing tech</p></div></div><p>I've been using iPads since the original launched, so I've seen Apple's smallest tablet evolve quite a bit over the years. I've been testing the 512GB Wi-Fi and Cellular version of the iPad mini (8th Generation with A20 Pro) in Midnight, with the optional NanoTexture finish, for the past seven days.</p><p>During that time, I've put it through its paces with a range of apps across entertainment, creative, and productivity, while also exploring many of the features in iPadOS 27. I've also used it with Apple's new TechWoven Folio, alongside both the Apple Pencil USB-C and Apple Pencil Pro, to get a feel for how well the mini works for everyday use, creativity, and getting things done.</p><p><em>First reviewed: November 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/tablets/ipad-mini/ipad-mini-a20-pro-review</link>
                                                                            <description>
                            <![CDATA[ I've spent a week testing Apple's latest iPad mini, and its long-awaited OLED upgrade makes a world of difference. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ADFkZt5JMGNxLgsFELqTFn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LD3XATN3nc48gzTffNKfyG-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Nov 2026 14:00:00 +0000</pubDate>                                                                                                                                <updated>Tue, 03 Nov 2026 21:08:09 +0000</updated>
                                                                                                                                            <category><![CDATA[iPad Mini]]></category>
                                                    <category><![CDATA[iPad]]></category>
                                                    <category><![CDATA[Tablets]]></category>
                                                                                                <author><![CDATA[ jacob.krol@futurenet.com (Jacob Krol) ]]></author>                    <dc:creator><![CDATA[ Jacob Krol ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hKSCqxtWYDuUtwZseV9E3C-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jacob Krol is the US Managing Editor for News at TechRadar overseeing the daily rollout of content and coordinating with various section leads. He joined TechRadar in May of 2024 and is based out of New York City. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Prior to joining TechRadar, Jacob was Senior Editor, Technology and Commerce at TheStreet focusing on covering the latest products in the consumer tech space from how to pre-order to finding the best deals with reviews, analysis, and features in between. Before that, Jacob was a founding member at CNN Underscored, building and growing the electronics section. He also assisted in building out social media channels, programming the homepage, and establishing protocols for testing various products for one-off reviews and best-of guides. Prior to starting at CNN, Jacob was a Tech Writer at Mashable focusing on news, reviews, and evergreen content. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;He has experience covering major players in the space like Apple, Samsung, Google, and Microsoft as well as testing products like smartphones, tablets, smartwatches, smart home gadgets, speakers, earbuds, headphones, TVs, and more futuristic tech like smart glasses.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Jacob received a Bachelor of Arts in Media &amp; Communication cum laude with a minor in Innovation and Entrepreneurship from Muhlenberg College. During his time on campus, he interned at CNET, Fox News, CNN, and CNBC, while also running his own tech blog, NJTechReviews, which he founded in 2010.&lt;/p&gt;&lt;p&gt;When not playing with a new gadget or breaking down the latest news, you can find Jacob listening to Bruce Springsteen, posting on TikTok, building a Lego set, watching a Star Wars show, or playing with his family dogs, Georgia and Charlie.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/LD3XATN3nc48gzTffNKfyG-1920-80.jpg">
                                                            <media:credit><![CDATA[Jacob Krol/Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Apple iPad mini 2026 review]]></media:description>                                                            <media:text><![CDATA[Apple iPad mini 2026 review]]></media:text>
                                <media:title type="plain"><![CDATA[Apple iPad mini 2026 review]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LD3XATN3nc48gzTffNKfyG-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-one-minute-review"><span>Apple iPad mini 8.5-inch (2026) review: One-minute review</span></h3><p>It's been a long time coming, but Apple has finally addressed more than a few people's wish lists with its latest-generation iPad mini. Yes, it's still the smallest iPad in terms of display size, not price, but this upgrade is really about the sum of its parts.</p><p>The jump to OLED is the headline upgrade, and paired with a thinner, lighter build and plenty of performance under the hood, it makes a big, big difference. The 8.5-inch Super Retina XDR display is an absolute joy to use; whether I'm watching a film, playing a game, editing photos, or just scrolling through iPadOS, everything looks fantastic. </p><p>If you've been holding out for an OLED iPad mini, this is the upgrade you've been waiting for. It's a major improvement, even without ProMotion, and the improved refresh responsiveness makes everyday scrolling and swiping feel that much more seamless.</p><p>The design is another big part of the story. At just 5.33mm thick and 254g, the iPad mini is deceptively slim and light. The mini was already the iPad I find easiest to take pretty much anywhere, but this new model is even more comfortable to hold and use for longer stretches. And while it might look familiar, there are some meaningful changes beyond the thinner build. The new IP67 rating adds welcome water and dust resistance, giving the mini more durability for everyday use, and giving you peace of mind if you're sharing it with family members.</p><p>It also packs plenty of power. The A20 Pro chip makes multitasking, photo editing, gaming, and even some of Apple's newer AI features, which demand a fair bit of power, feel effortless. Battery life has been solid in my testing, too, getting close to Apple's 10-hour claim, while the N1 chip brings Wi-Fi 7, Bluetooth 6, and Thread connectivity. If you opt for the Cellular model, you also get Apple's C2 modem.</p><p>Of course, all of this comes at a price. The iPad mini starts at $699, so it's certainly not the cheapest iPad in Apple's lineup. The model I've been testing is the 512GB Wi-Fi and Cellular version with the optional nano-texture display, which comes in at $1,099. That's a considerable investment for a tablet this size, but the mini has never really been about offering the lowest entry price. It's for people who want this particular screen size and the portability that comes with it, and Apple has now managed to squeeze a whole lot more value into this little package.</p><p>There are still a couple of things I'd like to see, most notably ProMotion and a more exciting selection of colors. But those small issues don't take away from how much I enjoy using this iPad. The OLED display makes a world of difference, the slimmer build is even better, and the combination of performance, battery life, and added durability makes this a seriously capable little tablet. If you're already a fan of the iPad mini, you'll love a lot about this generation.</p><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-specs"><span>Apple iPad mini 8.5-inch (2026) review: Specs</span></h3><div ><table><caption>iPad mini 8.5-inch (2026) specs</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>iPad mini (2026)</strong></p></td></tr><tr><td class="firstcol " ><p>Starting price</p></td><td  ><p>$699 / £699 / AU$1,099</p></td></tr><tr><td class="firstcol " ><p>Operating system</p></td><td  ><p>iPadOS 27</p></td></tr><tr><td class="firstcol " ><p>Chipset</p></td><td  ><p>A20 Pro</p></td></tr><tr><td class="firstcol " ><p>Storage</p></td><td  ><p>128GB / 256GB / 512GB </p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>8.5-inch Super Retina XDR display (OLED 2316 x 1512)</p></td></tr><tr><td class="firstcol " ><p>Cameras</p></td><td  ><p>12MP wide main, 12MP ultra-wide front</p></td></tr><tr><td class="firstcol " ><p>Battery</p></td><td  ><p>18.9Wh</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Wi-Fi 7, Bluetooth 6, and Thread from Apple N1. 5G Sub-6Ghz and Gigabit LTE on Cellular models with Apple C2.</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>255g (Wi-Fi) / 263g (Cellular)</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>195.3mm x 132.6mm x 5.4mm</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-pricing-and-availability"><span>Apple iPad mini 8.5-inch (2026) review: Pricing and availability</span></h3><p>Apple's new iPad mini starts at $699 / £699 / AU$1,099 for the Wi-Fi model, or $849 / £849 / AU$1,349 if you want Wi-Fi and Cellular. Apple began taking preorders on October 28, ahead of the tablet's official launch on November 6, 2026.</p><p>You can configure your iPad mini with 128GB, 256GB, or 512GB of storage. If you want Apple's nano-texture display, you'll need to choose either the 256GB or 512GB model, and that adds $100 / £100 / AU$200 to the price. Apple also includes a polishing cloth in the box with nano-texture models.</p><ul><li><strong>Value score: 4 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-design"><span>Apple iPad mini 8.5-inch (2026) review: Design</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yp7aL3hLeZPGi4Wgs4vSpZ" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/yp7aL3hLeZPGi4Wgs4vSpZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Super light and thin</strong></li><li><strong>This makes for more of an upgrade than you might expect from reading the specs</strong></li><li><strong>Still the most portable iPad in the lineup</strong></li></ul><p>The new iPad mini is really, really thin — almost deceptively so — and won't weigh your hand down at all. At just 5.33mm thick and 254g, it's noticeably slimmer and lighter than the previous generation, which measured 6.35mm and weighed 295g.</p><p>The iPad mini has always been the most portable tablet in Apple's lineup, offering much of the full-size iPad experience in a much smaller package. That's still true here, but the latest model takes that portability even further. It's easy to hold in one hand while scrolling, throw into a bag for a trip to the cafe, and take pretty much anywhere. It's genuinely pocketable when you're wearing a jacket, and, interestingly, weighs less than an iPhone Duo.</p><p>The overall design hasn't changed dramatically, and that's not necessarily a bad thing. The slimmer build brings it even closer to offering that 'sheet-of-glass' look and feel, while also making it more comfortable to hold for longer viewing sessions. The display is larger, too, thanks to the slimmer bezels, so you're getting more screen without sacrificing that compact form factor.</p><p>On the front, Apple has moved the 12MP Center Stage camera so it's on the top edge when you're holding the mini in landscape orientation, aligning it with the rest of the iPad lineup. There's still no Face ID; Touch ID is built into the power button instead, and it works quickly to unlock the tablet and authorize purchases. The separate volume buttons sit nearby, with their orientation changing depending on how you're holding the iPad.</p><p>Flip it around and you'll find the centered Apple logo, rear camera, and Adaptive True Tone flash. The USB-C port is on the bottom when you're holding the mini in portrait mode, and a microphone sits near the Center Stage camera. </p><p>One thing you might notice is what's missing here: the speaker grilles. Apple has done away with those cutouts as part of its new Acoustic Audio system, which I'll get into more in the Audio section below. It makes for a much cleaner look, and the change also makes IP67 water and dust resistance possible — a first for the iPad mini, and a welcome addition. I've tested it with a little water, and the iPad stands up just fine; it's nice to know you can take it to the beach or use it in the rain. It's also some useful added durability for a tablet the whole family could easily use.</p><p>The one area where I'm a little less enthusiastic is the choice of colors. The A17 Pro iPad mini came in Blue and Purple, while here you can choose between Starlight and Midnight. I've been testing Midnight, which has a very dark blue look, but it does show fingerprints on the rear. Paired with Apple's new TechWoven Folio, though, it makes for a nice-looking setup.</p><ul><li><strong>Design score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-display"><span>Apple iPad mini 8.5-inch (2026) review: Display</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j9oug3RrGbusY6mHtDdmFa" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/j9oug3RrGbusY6mHtDdmFa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>OLED display is a terrific addition</strong></li><li><strong>Content looks exceptionally great here, with rich blacks and vibrant colors</strong></li><li><strong>Nano-texture pairs really well with OLED and lets you use the iPad mini in any light</strong></li></ul><p>It feels like we've been asking Apple to bring an OLED display to the iPad mini for years — it's certainly been a wish of mine — and Apple finally delivered this year. Whether you're coming from the previous-generation iPad mini or older model, this is pretty close to a night-and-day experience.</p><p>The 8.5-inch Super Retina XDR display is an absolute joy to use. It's OLED, so blacks are properly inky, colors really pop, and everything looks fantastic. It's a great tablet for running through some tasks, drawing with the Apple Pencil, FaceTiming with family and friends, and especially for watching content.</p><p>Admittedly, it's only 0.2 inches larger than the previous display, so you're not getting much extra usable space. But the visuals are much more vibrant, everything looks crisper, and it's a more immersive view. At this size, it's made a real difference in my iPad mini experience.</p><p>I found myself editing photos in Pixelmator Pro and Apple's Photos app, drawing in Procreate, and playing games like <em>Mini Metro</em> and <em>Mini Motorways</em> to see how quickly visuals render and how much colors can pop. Watching films like <em>Toy Story 5</em> or <em>Moana</em> on Disney+ was a blast, too, and the same goes for catching up on <em>Ted Lasso</em> on Apple TV. HDR content, in particular, benefits from the OLED panel, with more pronounced contrast and colors that really jump off the screen. This is a fantastic little movie-watching tablet.</p><p>The new mini also gets a brightness boost, with peak brightness reaching 1,200 nits for HDR and 600 nits in everyday use, up from 500 nits on the previous generation. You'll notice that difference indoors and outdoors, especially when watching HDR content. And when you're using the iPad mini outside, that extra brightness paired with NanoTexture makes a big difference.</p><p>Which brings us to the optional nano-texture upgrade. Available on the 256GB and 512GB models, it costs an extra $100 / £100 / AU$200, and adds Apple's proprietary, etched coating over the Super Retina XDR display. It's incredibly effective at reducing glare from both natural and artificial light sources, as well as reflections on the screen. Apple has brought this technology to several other products, including the iPad Pro, MacBooks, iMacs, and Studio Displays, and there's also a slightly different implementation on the iPhone Duo.</p><p>I've found nano-texture particularly useful in direct sunlight. It effectively mutes reflections and cuts down glare, making the display much easier to see when you're out and about. It also gives the screen a more paper-like feel, which makes using either the Apple Pencil Pro or Apple Pencil USB-C particularly nice. I've found myself bringing the iPad mini along to cafes and meetings to take notes, and its size makes it feel a little like carrying a classic Moleskine notebook.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jAHuzpfNrRXUoYet8HUaNa" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/jAHuzpfNrRXUoYet8HUaNa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>It's not a cheap upgrade, and I haven't tested the standard glass and nano-texture versions side by side. But paired with a more portable iPad than the Air or Pro, and one that now has extra durability, it makes the mini even more enjoyable to use when you're out and about.</p><p>Another benefit of the move from LCD to OLED is better display responsiveness, even if the display here doesn't quite reach the 120Hz standard of ProMotion. Apple describes this as sub-pixel millisecond control, and in everyday use, scrolling and swiping feel a little more seamless than on the previous generation, and it does make the display feel that bit more fluid.</p><p>It's not, however, ProMotion. The iPad mini is still limited to a 60Hz refresh rate, rather than the super-smooth 120Hz you'll find on Apple's Pro models. As I've said in previous iPhone and iPad reviews, if you're not coming from a device with a higher refresh rate, you probably won't miss it. It's an odd omission here, especially at this starting price, but I've still found the iPad mini responsive in use, with no noticeable issues in everyday use.</p><p>All in all, the move to OLED makes a big difference. The new mini is a joy to watch content on, and even using iPadOS feels better on this display.</p><ul><li><strong>Display score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-cameras"><span>Apple iPad mini 8.5-inch (2026) review: Cameras</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s7wb7a3kTpQvQBhNRrGcUZ" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/s7wb7a3kTpQvQBhNRrGcUZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>A welcome move for the front-facing camera</strong></li><li><strong>Still a 12MP main camera on the back</strong></li></ul><p>Like every other iPad in Apple's lineup, and most that came before it, the iPad mini has two cameras. Around the back is a 12MP wide camera paired with an Adaptive True Tone flash. It's nearly identical to the main camera on the previous-generation iPad mini, and if you do choose to take photos with the mini — and it's probably the most acceptable iPad for that — you'll get some good shots. I wouldn't expect it to rival an iPhone 18 Pro or even an iPhone Air, though.</p><p>The real upgrade is the camera built into the bezel around the front display. It's now a 12MP Center Stage camera, positioned centrally on the side of the iPad when you're using it in portrait mode, so that when you're holding it horizontally, it's in the right place for video calls. And when you pair the iPad mini with Apple's Folio Case or a third-party alternative, that's generally how you'll have it positioned when propped up.</p><p>Performance here is great for video calls, whether you're using Apple's own FaceTime or jumping into a Webex meeting, Slack huddle, or a Zoom or WhatsApp call. I looked clear and stayed in focus, but as someone who likes to walk and talk, I particularly appreciated Center Stage. As I moved around, the camera and onboard software worked together to keep me in the shot, using smart panning and zooming to follow my movements.</p><ul><li><strong>Cameras score: 4 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-software"><span>Apple iPad mini 8.5-inch (2026) review: Software</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PcVChpaLT6mC4mqMhbPaNa" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/PcVChpaLT6mC4mqMhbPaNa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>Runs iPadOS 27 out of the box</strong></li><li><strong>Full multitasking with windows is great on this form factor</strong></li><li><strong>Support for two Apple Pencil models</strong></li></ul><p>The iPad mini is running iPadOS 27 out of the box, which certainly brings a lot more to the table than previous versions, particularly anything before iPadOS 26. For starters, the iPad mini supports the new Siri AI beta if you opt in and are in an eligible region. You also get the full windowed app experience that Apple introduced with iPadOS 26.</p><p>That means you can have several apps open at once, switch between them, and layer windows on top of each other. The mini's 8.5-inch display isn't the largest canvas for this kind of multitasking, but it feels surprisingly expansive, and can handle several apps at once.</p><p>Multitasking felt fast, and I often found myself using the iPad mini for more than just one thing at a time, ranging from streaming content or gaming to productivity tasks like emailing and web browsing. I also used it for creative pursuits, including journaling, drawing, and photo editing, as well as simply settling in with a good read.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jyJeUZFwWERz6cJt2JM7Ha" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/jyJeUZFwWERz6cJt2JM7Ha-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>What I really love about the size here is that, this iPad's name notwithstanding, this is not an especially small display. At 8.5 inches it's closer to the size of a classic notebook or book, so it actually feels pretty expansive, especially when you're working between different apps. Some days, though, I connected a keyboard and trackpad and plugged the iPad mini into an external display to give myself another window to work with.</p><p>That's a particularly welcome addition, because the mini is no longer limited to simply mirroring its display on an external monitor. You can also extend your workspace, which opens up even more possibilities for multitasking and getting things done.</p><p>I found myself pulling images and other assets from Photos, Files, and Messages, then dropping them straight into Pixelmator Pro. Moving between apps and juggling different windows felt effortless, and it's a good example of what the iPad mini can help you do beyond the usual browsing, streaming, and reading.</p><p>Of course, a lot of that comes down to the hardware under the hood. I'll touch on this more in the next section, but the iPad mini runs Apple's A20 Pro chip, from the same family of processors as those powering the iPhone 18 Pro, iPhone 18 Pro Max, and iPhone Duo. However, performance differs depending on which storage configuration you choose, so it's worth looking a little closer.</p><ul><li><strong>Software score: 4 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-performance"><span>Apple iPad mini 8.5-inch (2026) review: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YdyvRxRoL8wLLbCKCwRfPa" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/YdyvRxRoL8wLLbCKCwRfPa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>A20 Pro is very, very fast</strong></li><li><strong>Plenty of a runway for demanding tasks</strong></li><li><strong>You'll need to pay more for the best version of the chip</strong></li></ul><p>As I mentioned above, the iPad mini runs Apple's A20 Pro chip, but there's a tale of two chips here. I've been testing the 512GB model with Wi-Fi and Cellular, which gets the full-fat version of Apple's latest silicon.</p><p>If you opt for the 128GB or 256GB configurations, you get a five-core CPU (two super cores and three efficiency cores), a seven-core GPU, and a 16-core Neural Engine. The 512GB version, meanwhile, comes equipped with a six-core CPU (two super cores and four efficiency cores), the same seven-core GPU, and a Dual 16-core Neural Engine. That's the same chip configuration as in the iPhone 18 Pro, iPhone 18 Pro Max and iPhone Duo, while the lower-storage models get a slightly more binned-down version.</p><p>I don't suspect those extra CPU cores will make a night-and-day difference for most everyday tasks. You might see more of a benefit with particularly processor-intensive workloads or when running more AI locally on-device, but for the vast majority of people even the lower-storage iPad minis should feel plenty fast.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:806px;"><p class="vanilla-image-block" style="padding-top:55.09%;"><img id="9AMyfDsoBuwkCsSLYZ9A7L" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/9AMyfDsoBuwkCsSLYZ9A7L-1920-80.gif" mos="" align="middle" fullscreen="" width="806" height="444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><p>This is the second generation of iPad mini to get a Pro chip option, and it enables the tablet to tackle higher-performance tasks with ease. In Geekbench 7, my review unit scored 3,998 in single-core tests and 11,485 for multi-core. In Geekbench 6, it scored 4,720 and 12,697, respectively. Those are very impressive results, particularly compared with the scores for the previous-generation iPad mini, which scored 2,829 in single-core and 6,938 in multi-core in Geekbench 6.</p><p>Those are impressive numbers on paper, and in real-world testing over the past seven days, the iPad mini has been a champ. Apps open incredibly quickly, photo edits happen without a hitch, and even more demanding tasks, like using the Super Resolution option in Pixelmator Pro, and other power-hungry image upscaling tools, felt effortless. Everything feels very, very responsive, and I haven't found myself waiting around for the iPad mini to catch up.</p><p>I also put the Apple Intelligence features through their paces, including Clean Up and Expand Images in Photos, alongside multimodal requests with the new Siri AI beta. I tried a few third-party apps with AI-powered features, too. These are the kinds of tasks where having Apple's latest silicon and Neural Engine come into play, and the iPad mini handled my testing without any noticeable slowdown.</p><ul><li><strong>Performance score: 4.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-battery-connectivity"><span>Apple iPad mini 8.5-inch (2026) review: Battery &amp; connectivity</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Q2NwgugjEWGY6po8jWTY7a" name="Apple iPad mini 2026 review" alt="Apple iPad mini 2026 review" src="https://cdn.mos.cms.futurecdn.net/Q2NwgugjEWGY6po8jWTY7a-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jacob Krol/Future)</span></figcaption></figure><ul><li><strong>A lot of mileage for a mini iPad</strong></li><li><strong>Impressive results in our battery test</strong></li><li><strong>Apple's C2 modem serves up faster connectivity</strong></li></ul><p>Apple continues to promise all-day battery life with the iPad mini: up to 10 hours of web browsing over Wi-Fi or video, and up to nine hours of web browsing over a cellular data connection. Inside is an 18.9-watt-hour rechargeable lithium-polymer battery, and in my testing I've found it lasts close to 10 hours, depending on what I'm doing.</p><p>That's a pretty good result, especially considering the upgraded display. I suspect the OLED panel is more efficient, and paired with the A20 Pro, it makes for a nice combination. In Future PLC's lab battery test, the new iPad mini lasted an impressive 14 hours and 24 minutes. That's a substantial improvement over the previous generation, which managed 10 hours and 36 minutes in the same test.</p><p>Connectivity also gets a meaningful upgrade. The iPad mini features Apple's N1 chip, which supports Wi-Fi 7, Bluetooth 6, and Thread. If you opt for the Cellular model you'll also get Apple's C2 modem, which the company says offers up to 50% faster speeds compared to its previous modem.</p><p>I've been testing the cellular connection on Verizon's network in the US, with access to 5G, and it's performed pretty well. Throughout New Jersey, I tracked download speeds ranging from 600 to 1,200Mbps, with upload speeds around 35 to 62Mbps. That's plenty for streaming, downloading files, browsing, and staying connected when I'm away from Wi-Fi.</p><ul><li><strong>Battery and connectivity score: 4 / 5</strong></li></ul><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-should-you-buy-it"><span>Apple iPad mini 8.5-inch (2026) review: Should you buy it?</span></h3><div ><table><caption>Apple iPad mini 8.5-inch (2026) review scorecard</caption><tbody><tr><td class="firstcol " ><p>Attributes</p></td><td  ><p>Notes</p></td><td  ><p>Rating</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Even with the price increase, you're getting a lot of tablet for your money.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Thinner and lighter, but keeps the classic, ultraportable design the iPad mini is known for.</p></td><td  ><p>4.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>OLED finally arrives on an iPad mini, and the display is excellent, even without ProMotion.</p></td><td  ><p>4.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Cameras</p></td><td  ><p>CenterStage is in the right spot for the front-facing camera, and makes the iPad mini even better for video calls.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Software</p></td><td  ><p>iPadOS 27 is still feature-packed, offering true multitasking support, and the iPad mini takes full advantage of this software.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The A20 Pro makes light work of pretty much every task.</p></td><td  ><p>4.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Battery and connectivity</p></td><td  ><p>Plenty of battery life, with some welcome connectivity upgrades.</p></td><td  ><p>4 / 5 </p></td></tr></tbody></table></div><h2 id="buy-it-if-12">Buy it if...</h2><div class="product"><p><strong>You've been waiting for a better screen</strong><br />The jump to OLED makes a significant difference for both viewing content and day-to-day use — combined with iPadOS, this display shines.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="f89a843c-d6eb-11f1-8951-1119202bcff8" data-action="Deal Block" data-label="You've been waiting for a better screenThe jump to OLED makes a significant difference for both viewing content and day-to-day use — combined with iPadOS, this display shines." data-dimension48="You've been waiting for a better screenThe jump to OLED makes a significant difference for both viewing content and day-to-day use — combined with iPadOS, this display shines." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You want an ultraportable iPad that doesn't skimp on performance</strong><br />With one of Apple's newest chips and a super-slim, premium build, the iPad mini feels responsive and comfortable to hold for long periods — this will remain a powerful iPad for years to come.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="f89a8496-d6eb-11f1-b347-f5cdd89cf725" data-action="Deal Block" data-label="You want an ultraportable iPad that doesn't skimp on performanceWith one of Apple's newest chips and a super-slim, premium build, the iPad mini feels responsive and comfortable to hold for long periods — this will remain a powerful iPad for years to come." data-dimension48="You want an ultraportable iPad that doesn't skimp on performanceWith one of Apple's newest chips and a super-slim, premium build, the iPad mini feels responsive and comfortable to hold for long periods — this will remain a powerful iPad for years to come." data-dimension25="">View Deal</a></p></div><h2 id="don-39-t-buy-it-if-9">Don't buy it if...</h2><div class="product"><p><strong>You don't want to break the bank</strong><br />The iPad mini starts at $699 / £699 / AU$1,099, and upgrades can quickly put that price over $1,000 / £1,000 / AU$1,450.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="f89a8554-d6eb-11f1-8cec-87d522e09ca2" data-action="Deal Block" data-label="You don't want to break the bankThe iPad mini starts at $699 / £699 / AU$1,099, and upgrades can quickly put that price over $1,000 / £1,000 / AU$1,450." data-dimension48="You don't want to break the bankThe iPad mini starts at $699 / £699 / AU$1,099, and upgrades can quickly put that price over $1,000 / £1,000 / AU$1,450." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-apple-ipad-mini-8-5-inch-2026-review-how-i-tested"><span>Apple iPad mini 8.5-inch (2026) review: How I tested</span></h3><div  class="fancy-box"><div class="fancy_box-title">Why you can trust TechRadar</div><div class="fancy_box_body"><p class="fancy-box__body-text">☑️ <strong>100s of tablets </strong>reviewed<br />☑️ <strong>15 years</strong> of product testing<br />☑️ Over <strong>16,000 products</strong> reviewed in total<br />☑️ Nearly <strong>200,000 hours</strong> testing tech</p></div></div><p>I've been using iPads since the original launched, so I've seen Apple's smallest tablet evolve quite a bit over the years. I've been testing the 512GB Wi-Fi and Cellular version of the iPad mini (8th Generation with A20 Pro) in Midnight, with the optional NanoTexture finish, for the past seven days.</p><p>During that time, I've put it through its paces with a range of apps across entertainment, creative, and productivity, while also exploring many of the features in iPadOS 27. I've also used it with Apple's new TechWoven Folio, alongside both the Apple Pencil USB-C and Apple Pencil Pro, to get a feel for how well the mini works for everyday use, creativity, and getting things done.</p><p><em>First reviewed: November 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ RedMagic 12 Pro review: unmatched performance at a higher price than ever ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-redmagic-12-pro-one-minute-review"><span>RedMagic 12 Pro: One-minute review</span></h2><p>RedMagic has produced yet another phenomenally high-performing phone in the RedMagic 12 Pro, but it no longer screams ‘bargain’ in the way the series used to.</p><p>Its design has been slightly slimmed down and lightened up, though it remains a whole hunk of a phone with a slightly gauche look. Mind you, that visible liquid cooling system meets the approval of our inner 13-year-old.</p><p>The phone’s display is brighter and faster than that of the <a href="https://www.techradar.com/phones/redmagic-11-pro-review">RedMagic 11 Pro</a>, and provides one of the cleanest media experiences thanks to the lack of a selfie notch — though that omission leads to issues elsewhere.</p><p>As one of the first phones released with Qualcomm’s Snapdragon 8 Elite Extreme Gen 6, the RedMagic 12 Pro is just about as fast as you could hope for, though it may not be able to sustain peak performance quite as well as its predecessors.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="r4LRBU4eRn3nFswvsutDX6" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/r4LRBU4eRn3nFswvsutDX6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Battery life is the biggest improvement here, thanks to a massive increase in capacity. This is a phone that could potentially last you days, provided you don’t hit the games too hard, with 80W charging (both wired and wireless) getting you up to speed relatively swiftly.</p><p>But for all of these improvements, RedMagic has fallen into a familiar and oh-so-2026 trap. In raising the price of the 12 Pro by such a considerable amount (£170 / $250 / €200), it no longer feels like the total bargain this series built its reputation on.</p><p>Don’t get us wrong, £799 is a very good price for a phone that performs and lasts as long as this, especially in this hiked-up climate. But we’re still talking about a flagship(ish) price here, which can only draw extra attention to the phone’s failings.</p><p>For all the subtle progress elsewhere, that’s most typified by a camera system that’s as mediocre as ever. Selfies, especially, continue to be a total write-off on the RedMagic 12 Pro thanks to that aforementioned hidden front camera.</p><p>Elsewhere, a paltry two-year OS update promise further dents the brand’s formerly unimpeachable sense of value.</p><p>The RedMagic 12 Pro is the most capable gaming phone on the market, but the previous-generation RedMagic 11 Pro remains a much better buy while stocks last.</p><h2 class="article-body__section" id="section-redmagic-12-pro-review-price-and-availability"><span>RedMagic 12 Pro review: Price and availability</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="922wtGcBnUWVPB6ZQaFBg7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/922wtGcBnUWVPB6ZQaFBg7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Released on November 18, 2026</strong></li><li><strong>Priced from $899 / £799 (around AU$1,290)</strong></li><li><strong>Another big price bump</strong></li><li><strong>Available globally</strong></li></ul><p>Open sales for the RedMagic 12 Pro commence on November 18, 2026. Availability is global, including the UK, US, Australia, and much of Europe.</p><p>Following an industry-wide trend, the phone is significantly more expensive than its predecessors. With a starting price of $899 / £799 (around AU$1,290 — RedMagic lists the 'global' price of the 12 Pro in US dollars) for 12GB of RAM and 256GB of storage, it’s a considerable $250 / £170 (around AU$360) more expensive than the RedMagic 11 Pro.</p><p>This represents the second major price rise in a year for the brand. The <a href="https://www.techradar.com/phones/redmagic-11s-pro-review">RedMagic 11S Pro</a> only launched in June, and at a lower starting price of $849 / £709 (around AU$1,220).</p><p>You’ll pay a lot more for models with higher RAM and storage, too: $999 / £889 (around AU$1,430) for 16GB/512GB, and $1,199 / £1,059 (around AU$1,720) for 16GB/1TB.</p><ul><li><strong>Value score: 3.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-specs"><span>RedMagic 12 Pro review: Specs</span></h2><div ><table><caption>RedMagic 12 Pro specs </caption><thead><tr><th class="firstcol empty" ></th><th  ></th></tr></thead><tbody><tr><td class="firstcol " ><p>Dimensions:</p></td><td  ><p>163.03 x 75.96 x 8.55mm</p></td></tr><tr><td class="firstcol " ><p>Weight:</p></td><td  ><p>223g</p></td></tr><tr><td class="firstcol " ><p>Display:</p></td><td  ><p>6.85-inch 1.5K (1216 x 2688) up to 185Hz BOE AMOLED</p></td></tr><tr><td class="firstcol " ><p>Chipset:</p></td><td  ><p>Qualcomm Snapdragon 8 Elite Extreme Gen 6</p></td></tr><tr><td class="firstcol " ><p>RAM:</p></td><td  ><p>12GB / 16GB</p></td></tr><tr><td class="firstcol " ><p>Storage:</p></td><td  ><p>256GB / 512GB / 1TB</p></td></tr><tr><td class="firstcol " ><p>OS:</p></td><td  ><p>Android 17 with RedMagic OS 12</p></td></tr><tr><td class="firstcol " ><p>Primary camera:</p></td><td  ><p>50MP Samsung OV50J 1/1.56-inch sensor w/ OIS</p></td></tr><tr><td class="firstcol " ><p>Ultra-wide camera:</p></td><td  ><p>50MP Samsung OV50D40 1/2.87-inch sensor</p></td></tr><tr><td class="firstcol " ><p>Macro camera:</p></td><td  ><p>NA</p></td></tr><tr><td class="firstcol " ><p>Front Camera:</p></td><td  ><p>16MP under-display</p></td></tr><tr><td class="firstcol " ><p>Battery:</p></td><td  ><p>8,400mAh</p></td></tr><tr><td class="firstcol " ><p>Charging:</p></td><td  ><p>80W wired, 80W wireless</p></td></tr><tr><td class="firstcol " ><p>Colors:</p></td><td  ><p>Nightfreeze, Subzero</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-redmagic-12-pro-review-design"><span>RedMagic 12 Pro review: Design</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/oXUqzSdKAGQvxoMjN4xhQ7-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jab7FQE9RA58SdyX62RqG7-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><ul><li><strong>Extended liquid cooling system</strong></li><li><strong>Confusing IP68/IP69 and IPX8 certification</strong></li><li><strong>Dedicated gaming mode button and capacitive shoulder buttons</strong></li><li><strong>Improved speakers</strong></li></ul><p>RedMagic’s current design language dates back to the RedMagic 8 Pro in late 2022. That was the first RedMagic phone to feature the brand's now-signature flattened-out look, as replete with right angles as it was with semi-transparent elements and RGB lighting.</p><p>The RedMagic 12 Pro broadly follows that trend, but there have been a few minor tweaks and refinements in the years since the 8 Pro hit shelves.</p><p>It remains a big lump of a phone, measuring 163.03 x 75.96 x 8.55mm and weighing 223g. Compared to last year’s model, however, the 12 Pro is 7g lighter and 0.35mm thinner, together with a fractionally smaller footprint.</p><p>I’m somewhat perplexed by the RedMagic 12 Pro’s level of dust resistance. New to this year’s model is the claim of full IP68 and IP69 certification, which is genuine flagship-grade. However, this comes accompanied by the following small print, which I’ll quote directly from the press materials: “IP68 and IP69 ratings apply to the device, while the cooling fan area is rated IPX8 due to its independent airflow channel design.”</p><p>So the 12 Pro is completely dustproof... until you get to the open vents on either edge of the phone. Thanks for that, RedMagic.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vmmzbRY5ypJfiDgQUrJpi6-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aF26TfRuoTpK7tyuWqkFJ7-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Those vents do, admittedly, form part of the most extensive cooling system around, leading to a physical fan that spins at a higher 25,500rpm (up from 24,000rpm). This is paired with an even more extensive liquid cooling system, which now winds its way around much more of the RedMagic 12 Pro, drawing heat away from core components.</p><p>The lava lamp look of this liquid cooling system continues to fascinate, with tiny clear globules winding their way around a brilliant blue pathway. It’s more tasteful than the blingy RGB LED lighting, which can be configured around the cooling fan, shoulder buttons, and to a lesser extent the cooling goop itself.</p><p>The right edge of the phone continues to be crammed with elements, with a set of capacitive shoulder buttons joining the volume rocker and circular power button. One new element sees the old slider switch giving way to another push button.</p><p>It serves the same purpose, granting access to RedMagic’s custom gaming UI. But you’ll now need to press and hold the button rather than simply flicking a switch. </p><p>It’s less satisfying and intuitive to use, but on the plus side, it now functions much better as a remappable ‘Magic Key’. Repurposing it as a camera or flashlight shortcut feels more natural now.</p><p>RedMagic has bolstered the audio output of the 12 Pro’s Dolby Atmos-certified stereo speakers. You now get a pair of 1115E speakers — they're more balanced and fuller-sounding, although they lack the low-end kick of the speakers on something like the <a href="https://www.techradar.com/phones/poco-phones/poco-f9-ultra-review">Poco F9 Ultra</a>.</p><ul><li><strong>Design score: 3.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-display"><span>RedMagic 12 Pro review: Display</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uzpDASXhjTkyLxktLacxq7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/uzpDASXhjTkyLxktLacxq7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>6.85-inch OLED display</strong></li><li><strong>185Hz refresh rate</strong></li><li><strong>1,900 nits maximum brightness</strong></li></ul><p>RedMagic has kept the basic dimensions of the 12 Pro Display consistent with its recent antecedents — it’s another large 6.85-inch OLED panel with a 2,688 x 1,216 (1.5K) resolution.</p><p>Improvements have been made, however, starting with a move to a new BOE X11 panel material, which has a higher maximum brightness of 1,900 nits (up from 1,800 nits). </p><p>It can also hit a higher 185Hz refresh rate, compared to the RedMagic 11 Pro’s 144Hz. Not many games will be able to hit the kind of elevated frame rates to make the most of that spec, but it makes more sense on this gaming-focused phone than any other.</p><p>As always, I found RedMagic's default color profile to be a little too punchy, but a quick rummage around in the Settings menu — and a switch to the Standard mode — saw to that particular problem. </p><p>Ultimately, the RedMagic 12 Pro's display has all of the key strengths we’ve grown accustomed to with the brand. Its large size and unobstructed view — there’s no selfie notch to get in the way of gaming or video content — set it apart from most other phones and make it a great choice for media playback.</p><ul><li><strong>Display score: 4 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-cameras"><span>RedMagic 12 Pro review: cameras</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YiUVUpLzURD4wHMBBBYMQ7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/YiUVUpLzURD4wHMBBBYMQ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>50MP main camera with OIS</strong></li><li><strong>Mediocre 50MP ultra-wide</strong></li><li><strong>No more macro</strong></li><li><strong>16MP in-display selfie camera remains awful</strong></li></ul><p>RedMagic phones have never been particularly impressive in the camera department. We’ve always accepted this fact, albeit somewhat begrudgingly, because of the brand’s tight gaming focus and aggressive pricing.</p><p>The RedMagic 12 Pro’s cameras don't improve matters, and they're a little harder to defend given the phone's price bump. </p><p>Its camera system is led by a 1/1.56” 50MP OmniVision OV50J sensor. Image quality in good lighting is fine, though it's nothing you can’t get (or even improve upon) with a decent mid-range phone like the <a href="https://www.techradar.com/phones/google-pixel-phones/google-pixel-10a-review">Google Pixel 10a</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="kS6MyRCR8tqJHU3SBFweZ7" name="RedMagic 12 Pro camera samples" alt="RedMagic 12 Pro camera samples" src="https://cdn.mos.cms.futurecdn.net/kS6MyRCR8tqJHU3SBFweZ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1920" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Night shots, meanwhile, reveal noisy skies and a distinct lack of detail pulled from the shadows.</p><p>Portrait shots are weirdly horrendous, with an oddly fake-looking bokeh effect made worse by a terribly imprecise edge blur around the subject.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6iheoMJrY3zJWHE5A6dQt6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/EDXGGbXS7yAM8pktnhNxu6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>You’re not going to hear me complaining about the loss of the RedMagic 11 Pro’s 2MP macro camera, but it’s technically another cut.</p><p>With no dedicated telephoto, zoomed shots are forced to crop in on that main sensor. The results look somewhat soft even at 2x, becoming noticeably grainy at 3x, and downright unusable at 10x.</p><p>There’s also a humble 50MP ultra-wide camera with a 1/2.87" OmniVision OV50D40 sensor. It yields slightly better results in terms of sharpness, though the tone is noticeably cooler and the exposure falls short of the main camera's equivalent.</p><p>Matters degrade further with the RedMagic 12 Pro's 16MP front camera, which once again suffers badly from its positioning under the phone’s display. While this positioning is an advantage for clean media playback, it renders selfies a fuzzy mess, producing sickly skin tones and smudged details. They’re a write-off.</p><div class="looped-video"><video class="lazyload-in-view lazyloading" data-src="https://cdn.mos.cms.futurecdn.net/EZV2SJYG4mMqGVqYhXAKbV/VID_20261025_123251%20(1).mp4" autoplay="" loop="" muted="" playsinline="" src="https://cdn.mos.cms.futurecdn.net/EZV2SJYG4mMqGVqYhXAKbV/VID_20261025_123251%20(1).mp4"></video></div><p>Video, at least, is moderately impressive on the RedMagic 12 Pro, with support for 4K/120fps enabling reasonably high-quality slo-mo footage. You take your wins where you can get them.</p><p>I get that photography isn’t the focus here, but the simple point is that a $899 / £799 smartphone should be taking better pictures in late 2026. </p><ul><li><strong>Camera score: 2.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-redmagic-12-pro-review-camera-samples"><span>RedMagic 12 Pro review: camera samples</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GRWTQZaDcJukxQnuRZx5Y7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qe6HPjcUTeZeFyhmy4PPZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZgmdHLKuxhnwVgKu72LZv6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sjQ3fGsqmxRS3bg5uPoZu6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7djv4NcbqPAnWwPwWHdqk5-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/f27uETC6omC6VQx9NB4GL7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HJ4JUhmuGyz5FXtJy7mWa8-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TQCFSYMn5ezR3f2F5M4bWh-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kpcjSEi9oJMVUShNGjRaF7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5hpUM2YHg4Fnz7tx6zUjb5-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DrzHUwyX46Lw6jMZDJfiY7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wyWXDRfQBtcMi75XABPJZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CUJnt5CCoPVgf32WoYX7F7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SGzSgMHsdf89RjdHvcpZ27-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JcyszhpZFJUgA8jhuZs7q5-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/i4qnAUrFf7o6yRMYV4TtZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GrteCgWBb82zKS3HMUZnZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cs42bQst5p9zrQXxCXBVx6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BNzoPDGWrrss33JnTNGRe7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MpvVVMXMuUsFVeY7biuGZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zp9SQMJVWLEunMbsD9ShLh-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-redmagic-12-pro-review-performance"><span>RedMagic 12 Pro review: performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fveFjMeVzKN4jKJ5ktvAQ7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/fveFjMeVzKN4jKJ5ktvAQ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Snapdragon 8 Elite Extreme Gen 6 chipset</strong></li><li><strong>12GB or 16GB, or 24GB of RAM</strong></li><li><strong>Extended liquid and active cooling system</strong></li></ul><p>The RedMagic 12 Pro is one of the first phones on the market to use Qualcomm’s new <a href="https://www.techradar.com/phones/android/qualcomm-just-announced-the-snapdragon-8-elite-gen-6-and-8-elite-extreme-gen-6-for-next-gen-android-phones-heres-how-and-why-the-two-chipsets-differ-and-which-phones-could-be-supported">Snapdragon 8 Elite Extreme Gen 6</a> chipset. While this 2nm chip is the fastest Android chip on the market at the time of writing, it doesn’t bring about a seismic shift in performance.</p><p>Benchmark tests suggest that the RedMagic 12 Pro is barely any faster than the RedMagic 11 Pro and RedMagic 11S Pro (which share the same chip) in CPU terms, according to Geekbench 6.</p><p>GPU tests point to a much bigger improvement in GPU terms, with Geekbench 6 GPU scores that are between 16 and 28% faster, depending on the test.</p><p>That’s good to hear from a gaming-focused smartphone. Less positive were my 3DMark stress tests, which suggest the RedMagic 12 Pro is worse than its predecessors when it comes to sustained load.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/AugUj8zfgARuLBKVpjZ2b7-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GefLCyMspDz5eBbiU4sQa6-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Its peaks were higher, but its lower scores towards the end of the 20-minute WildLife Extreme Stress Test were quite a bit lower. This resulted in a stability score of 54% compared to 66% on the RedMagic 11 Pro.</p><p>Putting aside the possibility that this is a simple driver issue, it would suggest that, while the RedMagic 12 Pro is capable of running faster than its predecessors, it’s not capable of maintaining that flat-out speed quite as well. That’s surprising, given RedMagic has packed in an even more extensive liquid cooling system, plus a large vapor chamber and a faster cooling fan.</p><p>Benchmarks aside, the RedMagic 12 Pro performs impeccably in demanding games, running <em>Wuthering Waves</em> at relatively smooth frame rates with high graphical settings.</p><p>Ultimately, if you’re after the fastest-performing Android phone on the market right now, you won’t do any better than the RedMagic 12 Pro. Viewed from this angle, that $899 / £799 asking price doesn’t seem so bad at all.</p><ul><li><strong>Performance score: 4.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-software"><span>RedMagic 12 Pro review: software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9uGZ4fZp9oh4qAS4Najbx6" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/9uGZ4fZp9oh4qAS4Najbx6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Fluid yet bland Android 17-based UI</strong></li><li><strong>Game Space gaming UI</strong></li><li><strong>Two Android updates</strong></li><li><strong>Five years of security updates in Europe, three in the US</strong></li></ul><p>One of RedMagic’s main weaknesses has always been software, and some credit is due in this department on the RedMagic 12 Pro.</p><p>The company has cleaned up its act considerably, to the point where RedMagic OS 12 looks and feels much like most other custom Android UIs from Chinese manufacturers.</p><p>Instances of random Chinese text and troublesome bugs are now relatively rare — though I did observe a slight glitch with the DisneyPlus app in picture-in-picture mode. Gone, too, are the ugly screen-dominating widgets.</p><p>What’s left is slightly bland and generic, and relatively free of frills or flair, but it works quickly and reliably. Google Feed is placed to the left of the home screen, in all its increasingly AI- and ad-blighted glory.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9gsNzTmRCcwxfVEMfoKyz6" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/9gsNzTmRCcwxfVEMfoKyz6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>RedMagic OS still has a bit of a bloatware problem. There are unwanted preinstallations for Booking.com, TikTok, Instagram, and AliExpress, as well as three rubbish games and a duplicate web browser app. But none of that is particularly unusual.</p><p>More problematic is the relatively poor level of software support. RedMagic promises a mere two full Android OS updates and up to five years of security updates for Europe. The US only gets three years of the latter.</p><p>As ever, the unique selling point here is Game Space UI. Long-press the red button, and this interface will offer you a hub for running, tweaking, and optimizing your games. It’ll also let you crank up the processor or map those capacitive buttons to specific controls within games via a drag-out overlay.</p><p>It’s all very busy and nerdy, but that’s just what the doctor ordered with a gaming phone of this caliber.</p><ul><li><strong>Software score: 3 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-battery-life"><span>RedMagic 12 Pro review: Battery life</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tpaXchmi7Am7LCWFvnNJd7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/tpaXchmi7Am7LCWFvnNJd7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Huge 8,400mAh battery</strong></li><li><strong>Multi-day usage</strong></li><li><strong>Comprehensive 80W wired and wireless charging</strong></li></ul><p>RedMagic has managed to massively increase the size of the 12 Pro’s battery, despite its slimmed-down chassis. It now runs on a massive 8,400mAh cell, up from 7,500mAh in the RedMagic 11 Pro and its subsequent S variant.</p><p>If you don’t stretch the phone's legs with too many high-end games or a lot of 4K video recording, you could well get through three full days before needing to recharge. On one day of light-to-moderate usage, with 3 hours 40 minutes of screen-on time (and no gaming), I was still left with 72% in the tank.</p><p>This hefty battery is, of course, built to allow you to incorporate a couple of hours of heavy-duty 3D gaming into your day, but even then, you should be able to get through a full day without running too low.</p><p>When it comes time to recharge, 80W wired and wireless charging keeps things reasonably rapid. It’s not hugely impressive, but given that large capacity, a 50% charge in 30 minutes seems pretty good.</p><p>A full charge from empty took me about 72 minutes.</p><p>Do note, however, that I was able to use a compatible Nubia charger, and that no such provision comes in the box.</p><ul><li><strong>Battery score: 5 / 5</strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-redmagic-12-pro"><span>Should you buy the RedMagic 12 Pro?</span></h2><div ><table><caption>RedMagic 11 Pro scorecard</caption><thead><tr><th class="firstcol " ><p>Attributes</p></th><th  ><p>Notes</p></th><th  ><p>Rating</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design</p></td><td  ><p>RedMagic has slimmed its design down a little, and the visible liquid cooling system is fascinating, but this is still a big old phone.</p></td><td  ><p>3.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>The 12 Pro offers a big, bright, unblemished view of media, with a rapid 185Hz maximum refresh rate and no annoying notch to get in the way.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The Snapdragon 8 Elite Extreme Gen 6 ensures this is one of the fastest Android phones around, though there are indications that sustained performance has dropped off a tad.</p></td><td  ><p>4.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Camera</p></td><td  ><p>RedMagic has streamlined its camera offering to pretty middling dual 50MP set-up and a terrible 16MP selfie camera, which isn’t really good enough give the new higher price tag.</p></td><td  ><p>2.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Battery</p></td><td  ><p>With a huge new 8,400mAh cell, the RedMagic 12 Pro’s stamina is seriously impressive, while 80W wired and wireless charging is more than sufficient.</p></td><td  ><p>5 / 5</p></td></tr><tr><td class="firstcol " ><p>Software</p></td><td  ><p>Redmagic OS 12 is cleaner and less annoying than it’s ever been, but it’s still rather functional and drab, and software support is limited.</p></td><td  ><p>3 / 5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Consecutive price rises over the past year mean that the RedMagic 12 Pro is far from the bargain that the RedMagic 11 Pro was, though it still offers a lot of bang for your buck.</p></td><td  ><p>3.5 / 5</p></td></tr></tbody></table></div><h2 id="buy-it-if-13">Buy it if...</h2><div class="product"><p><strong>You want the fastest phone around</strong><br />With the Snapdragon 8 Elite Extreme Gen 6, liquid cooling, and plenty of RAM, the RedMagic 12 Pro is as fast as they come.</p></div><div class="product"><p><strong>You want a fluid, unobstructed viewing experience</strong><br />Thanks to a 185Hz maximum refresh rate and no notch, this phone offers an extremely clean media viewing experience.</p></div><div class="product"><p><strong>You want the fun to last</strong><br />RedMagic has ramped up the battery capacity again to 8,400mAh, which can last for days of normal use.</p></div><h2 id="don-39-t-buy-it-if-10">Don't buy it if...</h2><div class="product"><p><strong>You remember how much of a bargain RedMagics used to be</strong><br />No manufacturer is immune to price pressures, and the RedMagic 12 Pro costs a massive $250 / £170 more than the RedMagic 11 Pro.</p></div><div class="product"><p><strong>You like taking pictures</strong><br />The RedMagic 12 Pro’s two 50MP rear cameras will just about do a job, but nothing more, while the 16MP selfie camera won’t even do that much.</p></div><div class="product"><p><strong>This is going to be your last phone for a while</strong><br />With only two major Android updates and as little as three years of security updates in the US, this is not a phone that’s in it for the long haul.</p></div><h2 class="article-body__section" id="section-redmagic-12-pro-review-also-consider"><span>RedMagic 12 Pro review: also consider</span></h2><p>RedMagic is the only dedicated gaming phone maker on the market, but there are alternative options to consider.</p><div class="product"><p><strong>RedMagic 11 Pro</strong><br />Given the huge price hike with this year’s model, tracking down the RedMagic 11 Pro or even the RedMagic 11S Pro will prove better value. In truth, the 12 Pro doesn’t offer all that much more in terms of hardware.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/phones/redmagic-11-pro-review#section-redmagic-11-pro-review-display" data-dimension112="d8f4b814-d3c6-11f1-aafd-2587b832915d" data-action="Deal Block" data-label="Read our full RedMagic 11 Pro review" data-dimension48="Read our full RedMagic 11 Pro review" data-dimension25=""><strong>RedMagic 11 Pro review</strong></a></p></div><div class="product"><p><strong>Poco F9 Ultra</strong><br />It too is more expensive than its predecessor, but the Poco F9 Ultra offers a slightly more mainstream-friendly combination of performance and outstanding media playback at a not-extortionate asking price.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/phones/poco-phones/poco-f9-ultra-review" data-dimension112="d8f4b88c-d3c6-11f1-bcd9-d9f829ccf497" data-action="Deal Block" data-label="Read our full Poco F9 Ultra review" data-dimension48="Read our full Poco F9 Ultra review" data-dimension25=""><strong>Poco F9 Ultra review</strong></a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-redmagic-12-pro"><span>How I tested the RedMagic 12 Pro</span></h2><ul><li><strong>Review test period = 2 weeks</strong></li><li><strong>Testing included = Everyday usage, including web browsing, social media, photography, gaming, streaming video, music playback</strong></li><li><strong>Tools used = Geekbench 6, 3DMark, native Android stats, Nubia 80W power adapter</strong></li></ul><div  class="fancy-box"><div class="fancy_box-title">Why you can trust TechRadar</div><div class="fancy_box_body"><p class="fancy-box__body-text">☑️ <strong>100s of smartphones</strong> reviewed<br />☑️ <strong>15 years</strong> of product testing<br />☑️ Over <strong>16,000 products</strong> reviewed in total<br />☑️ Nearly <strong>200,000 hours</strong> testing tech</p></div></div><p>I tested the RedMagic 12 Pro for two weeks, using it as I would any other gaming phone. I played demanding titles like <em>Wuthering Waves</em> for extended periods, watched movies and TV shows on apps like Netflix, and browsed the internet and social media during casual-use days.</p><p>I tested the phone's power credentials using benchmark apps including Geekbench 6 and 3DMark, and used a compatible Nubia 80W power adapter to measure its charging speed.</p><p><em>First reviewed: October 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/phones/redmagic-12-pro-review</link>
                                                                            <description>
                            <![CDATA[ You won’t find a more capable gaming phone than the RedMagic 12 Pro, but familiar pricing pressures bring unflattering scrutiny. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EP7XMnsy3ao5HDXxcaPVcg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DTcbqt36UzNtq4gtUPxte6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 03 Nov 2026 13:43:50 +0000</pubDate>                                                                                                                                <updated>Tue, 03 Nov 2026 13:43:56 +0000</updated>
                                                                                                                                            <category><![CDATA[Phones]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jon Mundy ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/hfZawY6qVTw6QPxEZ9kBah-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jon is a freelance journalist who has been covering tech since the dawn of the smartphone era. He started out full-time on the nascent mobile gaming scene, then had a brief stint in contract publishing, before finding his true calling: working from his home office in Bristol, UK, surrounded by phone packaging and fuelled by an endless supply of high-quality coffee. Besides TechRadar, his words and pictures have appeared in The Telegraph, ShortList, Tech Advisor, Trusted Reviews, Expert Reviews, and more. He largely covers consumer technology, with a particular focus on smartphones and tablets. However, he&#039;s also been known to dabble in the worlds of entertainment and video games. When he&#039;s not working, Jon can probably be found eating out, attending gigs, or watching films.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DTcbqt36UzNtq4gtUPxte6-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The RedMagic 12 Pro being held in the hand]]></media:description>                                                            <media:text><![CDATA[The RedMagic 12 Pro being held in the hand]]></media:text>
                                <media:title type="plain"><![CDATA[The RedMagic 12 Pro being held in the hand]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DTcbqt36UzNtq4gtUPxte6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-redmagic-12-pro-one-minute-review"><span>RedMagic 12 Pro: One-minute review</span></h2><p>RedMagic has produced yet another phenomenally high-performing phone in the RedMagic 12 Pro, but it no longer screams ‘bargain’ in the way the series used to.</p><p>Its design has been slightly slimmed down and lightened up, though it remains a whole hunk of a phone with a slightly gauche look. Mind you, that visible liquid cooling system meets the approval of our inner 13-year-old.</p><p>The phone’s display is brighter and faster than that of the <a href="https://www.techradar.com/phones/redmagic-11-pro-review">RedMagic 11 Pro</a>, and provides one of the cleanest media experiences thanks to the lack of a selfie notch — though that omission leads to issues elsewhere.</p><p>As one of the first phones released with Qualcomm’s Snapdragon 8 Elite Extreme Gen 6, the RedMagic 12 Pro is just about as fast as you could hope for, though it may not be able to sustain peak performance quite as well as its predecessors.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="r4LRBU4eRn3nFswvsutDX6" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/r4LRBU4eRn3nFswvsutDX6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Battery life is the biggest improvement here, thanks to a massive increase in capacity. This is a phone that could potentially last you days, provided you don’t hit the games too hard, with 80W charging (both wired and wireless) getting you up to speed relatively swiftly.</p><p>But for all of these improvements, RedMagic has fallen into a familiar and oh-so-2026 trap. In raising the price of the 12 Pro by such a considerable amount (£170 / $250 / €200), it no longer feels like the total bargain this series built its reputation on.</p><p>Don’t get us wrong, £799 is a very good price for a phone that performs and lasts as long as this, especially in this hiked-up climate. But we’re still talking about a flagship(ish) price here, which can only draw extra attention to the phone’s failings.</p><p>For all the subtle progress elsewhere, that’s most typified by a camera system that’s as mediocre as ever. Selfies, especially, continue to be a total write-off on the RedMagic 12 Pro thanks to that aforementioned hidden front camera.</p><p>Elsewhere, a paltry two-year OS update promise further dents the brand’s formerly unimpeachable sense of value.</p><p>The RedMagic 12 Pro is the most capable gaming phone on the market, but the previous-generation RedMagic 11 Pro remains a much better buy while stocks last.</p><h2 class="article-body__section" id="section-redmagic-12-pro-review-price-and-availability"><span>RedMagic 12 Pro review: Price and availability</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="922wtGcBnUWVPB6ZQaFBg7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/922wtGcBnUWVPB6ZQaFBg7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Released on November 18, 2026</strong></li><li><strong>Priced from $899 / £799 (around AU$1,290)</strong></li><li><strong>Another big price bump</strong></li><li><strong>Available globally</strong></li></ul><p>Open sales for the RedMagic 12 Pro commence on November 18, 2026. Availability is global, including the UK, US, Australia, and much of Europe.</p><p>Following an industry-wide trend, the phone is significantly more expensive than its predecessors. With a starting price of $899 / £799 (around AU$1,290 — RedMagic lists the 'global' price of the 12 Pro in US dollars) for 12GB of RAM and 256GB of storage, it’s a considerable $250 / £170 (around AU$360) more expensive than the RedMagic 11 Pro.</p><p>This represents the second major price rise in a year for the brand. The <a href="https://www.techradar.com/phones/redmagic-11s-pro-review">RedMagic 11S Pro</a> only launched in June, and at a lower starting price of $849 / £709 (around AU$1,220).</p><p>You’ll pay a lot more for models with higher RAM and storage, too: $999 / £889 (around AU$1,430) for 16GB/512GB, and $1,199 / £1,059 (around AU$1,720) for 16GB/1TB.</p><ul><li><strong>Value score: 3.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-specs"><span>RedMagic 12 Pro review: Specs</span></h2><div ><table><caption>RedMagic 12 Pro specs </caption><thead><tr><th class="firstcol empty" ></th><th  ></th></tr></thead><tbody><tr><td class="firstcol " ><p>Dimensions:</p></td><td  ><p>163.03 x 75.96 x 8.55mm</p></td></tr><tr><td class="firstcol " ><p>Weight:</p></td><td  ><p>223g</p></td></tr><tr><td class="firstcol " ><p>Display:</p></td><td  ><p>6.85-inch 1.5K (1216 x 2688) up to 185Hz BOE AMOLED</p></td></tr><tr><td class="firstcol " ><p>Chipset:</p></td><td  ><p>Qualcomm Snapdragon 8 Elite Extreme Gen 6</p></td></tr><tr><td class="firstcol " ><p>RAM:</p></td><td  ><p>12GB / 16GB</p></td></tr><tr><td class="firstcol " ><p>Storage:</p></td><td  ><p>256GB / 512GB / 1TB</p></td></tr><tr><td class="firstcol " ><p>OS:</p></td><td  ><p>Android 17 with RedMagic OS 12</p></td></tr><tr><td class="firstcol " ><p>Primary camera:</p></td><td  ><p>50MP Samsung OV50J 1/1.56-inch sensor w/ OIS</p></td></tr><tr><td class="firstcol " ><p>Ultra-wide camera:</p></td><td  ><p>50MP Samsung OV50D40 1/2.87-inch sensor</p></td></tr><tr><td class="firstcol " ><p>Macro camera:</p></td><td  ><p>NA</p></td></tr><tr><td class="firstcol " ><p>Front Camera:</p></td><td  ><p>16MP under-display</p></td></tr><tr><td class="firstcol " ><p>Battery:</p></td><td  ><p>8,400mAh</p></td></tr><tr><td class="firstcol " ><p>Charging:</p></td><td  ><p>80W wired, 80W wireless</p></td></tr><tr><td class="firstcol " ><p>Colors:</p></td><td  ><p>Nightfreeze, Subzero</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-redmagic-12-pro-review-design"><span>RedMagic 12 Pro review: Design</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/oXUqzSdKAGQvxoMjN4xhQ7-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jab7FQE9RA58SdyX62RqG7-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><ul><li><strong>Extended liquid cooling system</strong></li><li><strong>Confusing IP68/IP69 and IPX8 certification</strong></li><li><strong>Dedicated gaming mode button and capacitive shoulder buttons</strong></li><li><strong>Improved speakers</strong></li></ul><p>RedMagic’s current design language dates back to the RedMagic 8 Pro in late 2022. That was the first RedMagic phone to feature the brand's now-signature flattened-out look, as replete with right angles as it was with semi-transparent elements and RGB lighting.</p><p>The RedMagic 12 Pro broadly follows that trend, but there have been a few minor tweaks and refinements in the years since the 8 Pro hit shelves.</p><p>It remains a big lump of a phone, measuring 163.03 x 75.96 x 8.55mm and weighing 223g. Compared to last year’s model, however, the 12 Pro is 7g lighter and 0.35mm thinner, together with a fractionally smaller footprint.</p><p>I’m somewhat perplexed by the RedMagic 12 Pro’s level of dust resistance. New to this year’s model is the claim of full IP68 and IP69 certification, which is genuine flagship-grade. However, this comes accompanied by the following small print, which I’ll quote directly from the press materials: “IP68 and IP69 ratings apply to the device, while the cooling fan area is rated IPX8 due to its independent airflow channel design.”</p><p>So the 12 Pro is completely dustproof... until you get to the open vents on either edge of the phone. Thanks for that, RedMagic.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vmmzbRY5ypJfiDgQUrJpi6-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aF26TfRuoTpK7tyuWqkFJ7-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Those vents do, admittedly, form part of the most extensive cooling system around, leading to a physical fan that spins at a higher 25,500rpm (up from 24,000rpm). This is paired with an even more extensive liquid cooling system, which now winds its way around much more of the RedMagic 12 Pro, drawing heat away from core components.</p><p>The lava lamp look of this liquid cooling system continues to fascinate, with tiny clear globules winding their way around a brilliant blue pathway. It’s more tasteful than the blingy RGB LED lighting, which can be configured around the cooling fan, shoulder buttons, and to a lesser extent the cooling goop itself.</p><p>The right edge of the phone continues to be crammed with elements, with a set of capacitive shoulder buttons joining the volume rocker and circular power button. One new element sees the old slider switch giving way to another push button.</p><p>It serves the same purpose, granting access to RedMagic’s custom gaming UI. But you’ll now need to press and hold the button rather than simply flicking a switch. </p><p>It’s less satisfying and intuitive to use, but on the plus side, it now functions much better as a remappable ‘Magic Key’. Repurposing it as a camera or flashlight shortcut feels more natural now.</p><p>RedMagic has bolstered the audio output of the 12 Pro’s Dolby Atmos-certified stereo speakers. You now get a pair of 1115E speakers — they're more balanced and fuller-sounding, although they lack the low-end kick of the speakers on something like the <a href="https://www.techradar.com/phones/poco-phones/poco-f9-ultra-review">Poco F9 Ultra</a>.</p><ul><li><strong>Design score: 3.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-display"><span>RedMagic 12 Pro review: Display</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uzpDASXhjTkyLxktLacxq7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/uzpDASXhjTkyLxktLacxq7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>6.85-inch OLED display</strong></li><li><strong>185Hz refresh rate</strong></li><li><strong>1,900 nits maximum brightness</strong></li></ul><p>RedMagic has kept the basic dimensions of the 12 Pro Display consistent with its recent antecedents — it’s another large 6.85-inch OLED panel with a 2,688 x 1,216 (1.5K) resolution.</p><p>Improvements have been made, however, starting with a move to a new BOE X11 panel material, which has a higher maximum brightness of 1,900 nits (up from 1,800 nits). </p><p>It can also hit a higher 185Hz refresh rate, compared to the RedMagic 11 Pro’s 144Hz. Not many games will be able to hit the kind of elevated frame rates to make the most of that spec, but it makes more sense on this gaming-focused phone than any other.</p><p>As always, I found RedMagic's default color profile to be a little too punchy, but a quick rummage around in the Settings menu — and a switch to the Standard mode — saw to that particular problem. </p><p>Ultimately, the RedMagic 12 Pro's display has all of the key strengths we’ve grown accustomed to with the brand. Its large size and unobstructed view — there’s no selfie notch to get in the way of gaming or video content — set it apart from most other phones and make it a great choice for media playback.</p><ul><li><strong>Display score: 4 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-cameras"><span>RedMagic 12 Pro review: cameras</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YiUVUpLzURD4wHMBBBYMQ7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/YiUVUpLzURD4wHMBBBYMQ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>50MP main camera with OIS</strong></li><li><strong>Mediocre 50MP ultra-wide</strong></li><li><strong>No more macro</strong></li><li><strong>16MP in-display selfie camera remains awful</strong></li></ul><p>RedMagic phones have never been particularly impressive in the camera department. We’ve always accepted this fact, albeit somewhat begrudgingly, because of the brand’s tight gaming focus and aggressive pricing.</p><p>The RedMagic 12 Pro’s cameras don't improve matters, and they're a little harder to defend given the phone's price bump. </p><p>Its camera system is led by a 1/1.56” 50MP OmniVision OV50J sensor. Image quality in good lighting is fine, though it's nothing you can’t get (or even improve upon) with a decent mid-range phone like the <a href="https://www.techradar.com/phones/google-pixel-phones/google-pixel-10a-review">Google Pixel 10a</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="kS6MyRCR8tqJHU3SBFweZ7" name="RedMagic 12 Pro camera samples" alt="RedMagic 12 Pro camera samples" src="https://cdn.mos.cms.futurecdn.net/kS6MyRCR8tqJHU3SBFweZ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1920" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Night shots, meanwhile, reveal noisy skies and a distinct lack of detail pulled from the shadows.</p><p>Portrait shots are weirdly horrendous, with an oddly fake-looking bokeh effect made worse by a terribly imprecise edge blur around the subject.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6iheoMJrY3zJWHE5A6dQt6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/EDXGGbXS7yAM8pktnhNxu6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>You’re not going to hear me complaining about the loss of the RedMagic 11 Pro’s 2MP macro camera, but it’s technically another cut.</p><p>With no dedicated telephoto, zoomed shots are forced to crop in on that main sensor. The results look somewhat soft even at 2x, becoming noticeably grainy at 3x, and downright unusable at 10x.</p><p>There’s also a humble 50MP ultra-wide camera with a 1/2.87" OmniVision OV50D40 sensor. It yields slightly better results in terms of sharpness, though the tone is noticeably cooler and the exposure falls short of the main camera's equivalent.</p><p>Matters degrade further with the RedMagic 12 Pro's 16MP front camera, which once again suffers badly from its positioning under the phone’s display. While this positioning is an advantage for clean media playback, it renders selfies a fuzzy mess, producing sickly skin tones and smudged details. They’re a write-off.</p><div class="looped-video"><video class="lazyload-in-view lazyloading" data-src="https://cdn.mos.cms.futurecdn.net/EZV2SJYG4mMqGVqYhXAKbV/VID_20261025_123251%20(1).mp4" autoplay="" loop="" muted="" playsinline="" src="https://cdn.mos.cms.futurecdn.net/EZV2SJYG4mMqGVqYhXAKbV/VID_20261025_123251%20(1).mp4"></video></div><p>Video, at least, is moderately impressive on the RedMagic 12 Pro, with support for 4K/120fps enabling reasonably high-quality slo-mo footage. You take your wins where you can get them.</p><p>I get that photography isn’t the focus here, but the simple point is that a $899 / £799 smartphone should be taking better pictures in late 2026. </p><ul><li><strong>Camera score: 2.5 / 5</strong></li></ul><h3 class="article-body__section" id="section-redmagic-12-pro-review-camera-samples"><span>RedMagic 12 Pro review: camera samples</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GRWTQZaDcJukxQnuRZx5Y7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qe6HPjcUTeZeFyhmy4PPZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZgmdHLKuxhnwVgKu72LZv6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sjQ3fGsqmxRS3bg5uPoZu6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7djv4NcbqPAnWwPwWHdqk5-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/f27uETC6omC6VQx9NB4GL7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HJ4JUhmuGyz5FXtJy7mWa8-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TQCFSYMn5ezR3f2F5M4bWh-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kpcjSEi9oJMVUShNGjRaF7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5hpUM2YHg4Fnz7tx6zUjb5-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DrzHUwyX46Lw6jMZDJfiY7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wyWXDRfQBtcMi75XABPJZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CUJnt5CCoPVgf32WoYX7F7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SGzSgMHsdf89RjdHvcpZ27-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JcyszhpZFJUgA8jhuZs7q5-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/i4qnAUrFf7o6yRMYV4TtZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GrteCgWBb82zKS3HMUZnZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cs42bQst5p9zrQXxCXBVx6-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BNzoPDGWrrss33JnTNGRe7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MpvVVMXMuUsFVeY7biuGZ7-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zp9SQMJVWLEunMbsD9ShLh-1920-80.jpg" alt="RedMagic 12 Pro camera samples" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-redmagic-12-pro-review-performance"><span>RedMagic 12 Pro review: performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fveFjMeVzKN4jKJ5ktvAQ7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/fveFjMeVzKN4jKJ5ktvAQ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Snapdragon 8 Elite Extreme Gen 6 chipset</strong></li><li><strong>12GB or 16GB, or 24GB of RAM</strong></li><li><strong>Extended liquid and active cooling system</strong></li></ul><p>The RedMagic 12 Pro is one of the first phones on the market to use Qualcomm’s new <a href="https://www.techradar.com/phones/android/qualcomm-just-announced-the-snapdragon-8-elite-gen-6-and-8-elite-extreme-gen-6-for-next-gen-android-phones-heres-how-and-why-the-two-chipsets-differ-and-which-phones-could-be-supported">Snapdragon 8 Elite Extreme Gen 6</a> chipset. While this 2nm chip is the fastest Android chip on the market at the time of writing, it doesn’t bring about a seismic shift in performance.</p><p>Benchmark tests suggest that the RedMagic 12 Pro is barely any faster than the RedMagic 11 Pro and RedMagic 11S Pro (which share the same chip) in CPU terms, according to Geekbench 6.</p><p>GPU tests point to a much bigger improvement in GPU terms, with Geekbench 6 GPU scores that are between 16 and 28% faster, depending on the test.</p><p>That’s good to hear from a gaming-focused smartphone. Less positive were my 3DMark stress tests, which suggest the RedMagic 12 Pro is worse than its predecessors when it comes to sustained load.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/AugUj8zfgARuLBKVpjZ2b7-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GefLCyMspDz5eBbiU4sQa6-1920-80.jpg" alt="RedMagic 12 Pro review product images" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Its peaks were higher, but its lower scores towards the end of the 20-minute WildLife Extreme Stress Test were quite a bit lower. This resulted in a stability score of 54% compared to 66% on the RedMagic 11 Pro.</p><p>Putting aside the possibility that this is a simple driver issue, it would suggest that, while the RedMagic 12 Pro is capable of running faster than its predecessors, it’s not capable of maintaining that flat-out speed quite as well. That’s surprising, given RedMagic has packed in an even more extensive liquid cooling system, plus a large vapor chamber and a faster cooling fan.</p><p>Benchmarks aside, the RedMagic 12 Pro performs impeccably in demanding games, running <em>Wuthering Waves</em> at relatively smooth frame rates with high graphical settings.</p><p>Ultimately, if you’re after the fastest-performing Android phone on the market right now, you won’t do any better than the RedMagic 12 Pro. Viewed from this angle, that $899 / £799 asking price doesn’t seem so bad at all.</p><ul><li><strong>Performance score: 4.5 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-software"><span>RedMagic 12 Pro review: software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9uGZ4fZp9oh4qAS4Najbx6" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/9uGZ4fZp9oh4qAS4Najbx6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Fluid yet bland Android 17-based UI</strong></li><li><strong>Game Space gaming UI</strong></li><li><strong>Two Android updates</strong></li><li><strong>Five years of security updates in Europe, three in the US</strong></li></ul><p>One of RedMagic’s main weaknesses has always been software, and some credit is due in this department on the RedMagic 12 Pro.</p><p>The company has cleaned up its act considerably, to the point where RedMagic OS 12 looks and feels much like most other custom Android UIs from Chinese manufacturers.</p><p>Instances of random Chinese text and troublesome bugs are now relatively rare — though I did observe a slight glitch with the DisneyPlus app in picture-in-picture mode. Gone, too, are the ugly screen-dominating widgets.</p><p>What’s left is slightly bland and generic, and relatively free of frills or flair, but it works quickly and reliably. Google Feed is placed to the left of the home screen, in all its increasingly AI- and ad-blighted glory.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9gsNzTmRCcwxfVEMfoKyz6" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/9gsNzTmRCcwxfVEMfoKyz6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>RedMagic OS still has a bit of a bloatware problem. There are unwanted preinstallations for Booking.com, TikTok, Instagram, and AliExpress, as well as three rubbish games and a duplicate web browser app. But none of that is particularly unusual.</p><p>More problematic is the relatively poor level of software support. RedMagic promises a mere two full Android OS updates and up to five years of security updates for Europe. The US only gets three years of the latter.</p><p>As ever, the unique selling point here is Game Space UI. Long-press the red button, and this interface will offer you a hub for running, tweaking, and optimizing your games. It’ll also let you crank up the processor or map those capacitive buttons to specific controls within games via a drag-out overlay.</p><p>It’s all very busy and nerdy, but that’s just what the doctor ordered with a gaming phone of this caliber.</p><ul><li><strong>Software score: 3 / 5</strong></li></ul><h2 class="article-body__section" id="section-redmagic-12-pro-review-battery-life"><span>RedMagic 12 Pro review: Battery life</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tpaXchmi7Am7LCWFvnNJd7" name="RedMagic 12 Pro sample photos" alt="RedMagic 12 Pro review product images" src="https://cdn.mos.cms.futurecdn.net/tpaXchmi7Am7LCWFvnNJd7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Huge 8,400mAh battery</strong></li><li><strong>Multi-day usage</strong></li><li><strong>Comprehensive 80W wired and wireless charging</strong></li></ul><p>RedMagic has managed to massively increase the size of the 12 Pro’s battery, despite its slimmed-down chassis. It now runs on a massive 8,400mAh cell, up from 7,500mAh in the RedMagic 11 Pro and its subsequent S variant.</p><p>If you don’t stretch the phone's legs with too many high-end games or a lot of 4K video recording, you could well get through three full days before needing to recharge. On one day of light-to-moderate usage, with 3 hours 40 minutes of screen-on time (and no gaming), I was still left with 72% in the tank.</p><p>This hefty battery is, of course, built to allow you to incorporate a couple of hours of heavy-duty 3D gaming into your day, but even then, you should be able to get through a full day without running too low.</p><p>When it comes time to recharge, 80W wired and wireless charging keeps things reasonably rapid. It’s not hugely impressive, but given that large capacity, a 50% charge in 30 minutes seems pretty good.</p><p>A full charge from empty took me about 72 minutes.</p><p>Do note, however, that I was able to use a compatible Nubia charger, and that no such provision comes in the box.</p><ul><li><strong>Battery score: 5 / 5</strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-redmagic-12-pro"><span>Should you buy the RedMagic 12 Pro?</span></h2><div ><table><caption>RedMagic 11 Pro scorecard</caption><thead><tr><th class="firstcol " ><p>Attributes</p></th><th  ><p>Notes</p></th><th  ><p>Rating</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Design</p></td><td  ><p>RedMagic has slimmed its design down a little, and the visible liquid cooling system is fascinating, but this is still a big old phone.</p></td><td  ><p>3.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Display</p></td><td  ><p>The 12 Pro offers a big, bright, unblemished view of media, with a rapid 185Hz maximum refresh rate and no annoying notch to get in the way.</p></td><td  ><p>4 / 5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The Snapdragon 8 Elite Extreme Gen 6 ensures this is one of the fastest Android phones around, though there are indications that sustained performance has dropped off a tad.</p></td><td  ><p>4.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Camera</p></td><td  ><p>RedMagic has streamlined its camera offering to pretty middling dual 50MP set-up and a terrible 16MP selfie camera, which isn’t really good enough give the new higher price tag.</p></td><td  ><p>2.5 / 5</p></td></tr><tr><td class="firstcol " ><p>Battery</p></td><td  ><p>With a huge new 8,400mAh cell, the RedMagic 12 Pro’s stamina is seriously impressive, while 80W wired and wireless charging is more than sufficient.</p></td><td  ><p>5 / 5</p></td></tr><tr><td class="firstcol " ><p>Software</p></td><td  ><p>Redmagic OS 12 is cleaner and less annoying than it’s ever been, but it’s still rather functional and drab, and software support is limited.</p></td><td  ><p>3 / 5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Consecutive price rises over the past year mean that the RedMagic 12 Pro is far from the bargain that the RedMagic 11 Pro was, though it still offers a lot of bang for your buck.</p></td><td  ><p>3.5 / 5</p></td></tr></tbody></table></div><h2 id="buy-it-if-13">Buy it if...</h2><div class="product"><p><strong>You want the fastest phone around</strong><br />With the Snapdragon 8 Elite Extreme Gen 6, liquid cooling, and plenty of RAM, the RedMagic 12 Pro is as fast as they come.</p></div><div class="product"><p><strong>You want a fluid, unobstructed viewing experience</strong><br />Thanks to a 185Hz maximum refresh rate and no notch, this phone offers an extremely clean media viewing experience.</p></div><div class="product"><p><strong>You want the fun to last</strong><br />RedMagic has ramped up the battery capacity again to 8,400mAh, which can last for days of normal use.</p></div><h2 id="don-39-t-buy-it-if-10">Don't buy it if...</h2><div class="product"><p><strong>You remember how much of a bargain RedMagics used to be</strong><br />No manufacturer is immune to price pressures, and the RedMagic 12 Pro costs a massive $250 / £170 more than the RedMagic 11 Pro.</p></div><div class="product"><p><strong>You like taking pictures</strong><br />The RedMagic 12 Pro’s two 50MP rear cameras will just about do a job, but nothing more, while the 16MP selfie camera won’t even do that much.</p></div><div class="product"><p><strong>This is going to be your last phone for a while</strong><br />With only two major Android updates and as little as three years of security updates in the US, this is not a phone that’s in it for the long haul.</p></div><h2 class="article-body__section" id="section-redmagic-12-pro-review-also-consider"><span>RedMagic 12 Pro review: also consider</span></h2><p>RedMagic is the only dedicated gaming phone maker on the market, but there are alternative options to consider.</p><div class="product"><p><strong>RedMagic 11 Pro</strong><br />Given the huge price hike with this year’s model, tracking down the RedMagic 11 Pro or even the RedMagic 11S Pro will prove better value. In truth, the 12 Pro doesn’t offer all that much more in terms of hardware.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/phones/redmagic-11-pro-review#section-redmagic-11-pro-review-display" data-dimension112="d8f4b814-d3c6-11f1-aafd-2587b832915d" data-action="Deal Block" data-label="Read our full RedMagic 11 Pro review" data-dimension48="Read our full RedMagic 11 Pro review" data-dimension25=""><strong>RedMagic 11 Pro review</strong></a></p></div><div class="product"><p><strong>Poco F9 Ultra</strong><br />It too is more expensive than its predecessor, but the Poco F9 Ultra offers a slightly more mainstream-friendly combination of performance and outstanding media playback at a not-extortionate asking price.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/phones/poco-phones/poco-f9-ultra-review" data-dimension112="d8f4b88c-d3c6-11f1-bcd9-d9f829ccf497" data-action="Deal Block" data-label="Read our full Poco F9 Ultra review" data-dimension48="Read our full Poco F9 Ultra review" data-dimension25=""><strong>Poco F9 Ultra review</strong></a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-redmagic-12-pro"><span>How I tested the RedMagic 12 Pro</span></h2><ul><li><strong>Review test period = 2 weeks</strong></li><li><strong>Testing included = Everyday usage, including web browsing, social media, photography, gaming, streaming video, music playback</strong></li><li><strong>Tools used = Geekbench 6, 3DMark, native Android stats, Nubia 80W power adapter</strong></li></ul><div  class="fancy-box"><div class="fancy_box-title">Why you can trust TechRadar</div><div class="fancy_box_body"><p class="fancy-box__body-text">☑️ <strong>100s of smartphones</strong> reviewed<br />☑️ <strong>15 years</strong> of product testing<br />☑️ Over <strong>16,000 products</strong> reviewed in total<br />☑️ Nearly <strong>200,000 hours</strong> testing tech</p></div></div><p>I tested the RedMagic 12 Pro for two weeks, using it as I would any other gaming phone. I played demanding titles like <em>Wuthering Waves</em> for extended periods, watched movies and TV shows on apps like Netflix, and browsed the internet and social media during casual-use days.</p><p>I tested the phone's power credentials using benchmark apps including Geekbench 6 and 3DMark, and used a compatible Nubia 80W power adapter to measure its charging speed.</p><p><em>First reviewed: October 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>