1<!doctype html> 2<html lang="en" class="view-grid"> 3 4<head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <title>Dysonâs most overengineered gadget may have a waterproofing problem - Ars Technica</title> 8<link rel="preconnect" href="https://c.arstechnica.com">
9<script> 10 window.snowplowQueue = window.snowplowQueue || []; 11 window.arsSP = { 12 entities: {"site":{"org_id":"4gKgcFGUFUvCGFzHakTPfYp85Yi8","site_env":"production","site_app_version":"multi-tenant","site_data_source":"web","site_section":"tech"},"page":{"has_buy_button":false},"content":{"content_id":"4af9539d99ecd5b3247216bd","content_type":"article","editor_name":"Ken Fisher","author_name":"Jeremy White, wired.com","date_display":"2026-09-24T05:51:15.155Z","content_source":"web","content_len":1,"content_title":"Dyson\u2019s most overengineered gadget may have a waterproofing problem","author_id":"21","date_publish":"2026-09-22T13:33:16.000Z","date_last_modified":"2026-09-22T13:55:34.000Z","onsite_keywords":"dyson|enshittification|syndication|toothbrush","pagination_pages_tot":null,"word_count":996,"content_template":"standard","content_template_type":"mt_article_two_column","content_is_commerce":false},"syndication":{"is_syndication_content":true,"syndication_original_source":"WIRED","syndication_url":"https:\/\/www.wired.com\/story\/dyson-wont-say-whats-wrong-with-the-camerajet-toothbrush\/","syndication_original_content_lang":"en-US"}}, 13 config: {"SNOWPLOW_COLLECTOR":"c.arstechnica.com","AVO_API_KEY":"FTJO6mVPBIzdGhjn2Ruy","APP_ID":"ars-technica","APP_NAME":"ars-technica","APP_ENV":"production","APP_VERSION":"1.0.0","COOKIE_DOMAIN":".arstechnica.com"} 14 }; 15</script>
15<script> 16 (function () { 17 var ChannelWildcard = { 18 ALL: '*', 19 }; 20 21 function KendraEvent(historyLimit) { 22 this.listeners = new Map(); 23 this.eventHistory = []; 24 this.historyLimit = historyLimit || 10; 25 } 26 27 KendraEvent.prototype.broadcast = function (channel, value, options) { 28 var opts = options || {}; 29 var timestamp = Date.now(); 30 31 if (opts.once) { 32 if (channel === ChannelWildcard.ALL) { 33 console.warn("'once: true' is not supported with ChannelWildcard.ALL"); 34 return; 35 } 36 37 var hasBroadcasted = this.eventHistory.some(function (entry) { 38 return entry.channel === channel; 39 }); 40 41 if (hasBroadcasted) { 42 return; 43 } 44 } 45 46 var entry = { 47 timestamp: timestamp, 48 value: value, 49 channel: channel, 50 }; 51 52 this.eventHistory.push(entry); 53 54 if (this.eventHistory.length > this.historyLimit) { 55 this.eventHistory.shift(); 56 } 57 58 if (channel === ChannelWildcard.ALL) { 59 this.listeners.forEach(function (listeners) { 60 listeners.forEach(function (listener) { 61 listener(value); 62 }); 63 }); 64 return; 65 } 66 67 var listeners = this.listeners.get(channel); 68 if (listeners) { 69 listeners.forEach(function (listener) { 70 listener(value); 71 }); 72 } 73 }; 74 75 KendraEvent.prototype.on = function (channel, listener, options) { 76 var opts = options || {}; 77 var channels = Array.isArray(channel) ? channel : [channel]; 78 var event = this; 79 80 channels.forEach(function (registeredChannel) { 81 if (!event.listeners.has(registeredChannel)) { 82 event.listeners.set(registeredChannel, new Set()); 83 } 84 85 event.listeners.get(registeredChannel).add(listener); 86 87 if (opts.emitLast && registeredChannel !== ChannelWildcard.ALL) { 88 var lastValue = event.get(registeredChannel); 89 if (lastValue !== undefined) { 90 listener(lastValue); 91 } 92 } 93 }); 94 95 return { 96 off: function () { 97 channels.forEach(function (registeredChannel) { 98 var listeners = event.listeners.get(registeredChannel); 99 if (listeners) { 100 listeners.delete(listener); 101 } 102 }); 103 }, 104 }; 105 }; 106 107 KendraEvent.prototype.off = function (channel, listener) { 108 var event = this; 109 var channels = Array.isArray(channel) ? channel : [channel]; 110 111 channels.forEach(function (registeredChannel) { 112 var listeners = event.listeners.get(registeredChannel); 113 if (listeners) { 114 listeners.delete(listener); 115 } 116 }); 117 }; 118 119 KendraEvent.prototype.history = function () { 120 return this.eventHistory.slice().sort(function (a, b) { 121 return b.timestamp - a.timestamp; 122 }); 123 }; 124 125 KendraEvent.prototype.get = function (channel) { 126 var history; 127 128 if (channel) { 129 history = this.eventHistory.slice().reverse(); 130 for (var i = 0; i < history.length; i++) { 131 if (history[i].channel === channel) { 132 return history[i].value; 133 } 134 } 135 return undefined; 136 } 137 138 var lastEntry = this.eventHistory[this.eventHistory.length - 1]; 139 return lastEntry && lastEntry.value; 140 }; 141 142 function KendraOrchestrator() { 143 this.registry = {}; 144 } 145 146 KendraOrchestrator.prototype.register = function (key, event) { 147 if (this.registry[key]) { 148 return; 149 } 150 151 this.registry[key] = event; 152 153 if (!Object.prototype.hasOwnProperty.call(this, key)) { 154 Object.defineProperty(this, key, { 155 get: function () { 156 return this.registry[key]; 157 }, 158 enumerable: true, 159 configurable: false, 160 }); 161 } 162 }; 163 164 KendraOrchestrator.prototype.get = function (key) { 165 var event = this.registry[key]; 166 167 if (!event) { 168 throw new Error('Event with key ' + key + ' is not registered.'); 169 } 170 171 return event; 172 }; 173 174 KendraOrchestrator.prototype.delete = function (key) { 175 delete this.registry[key]; 176 delete this[key]; 177 }; 178 179 var kendra = 180 window.Kendra && typeof window.Kendra.register === 'function' 181 ? window.Kendra 182 : new KendraOrchestrator(); 183 184 window.Kendra = kendra; 185 186 if (!kendra.ADS) { 187 kendra.register('ADS', new KendraEvent(50)); 188 } 189 190 if (!kendra.USER_CONTEXT) { 191 kendra.register('USER_CONTEXT', new KendraEvent(5)); 192 } 193 194 window.arsTracking = window.arsTracking || {}; 195 window.arsTracking.initKendra = function () { 196 return window.Kendra; 197 }; 198 window.arsTracking.publishUserContextUpdate = 199 window.arsTracking.publishUserContextUpdate || 200 function (value) { 201 var payload = value || {}; 202 203 window.Kendra.USER_CONTEXT.broadcast('UPDATED', payload); 204 205 if (window.cnBus && typeof window.cnBus.emit === 'function') { 206 window.cnBus.emit('user.context.updated', payload); 207 } 208 }; 209 })(); 210</script>
210 211 212<!-- The SEO Framework by Sybre Waaijer --> 213<meta name="robots" content="max-snippet:-1,max-image-preview:large,max-video-preview:-1" /> 214<link rel="canonical" href="https://www.wired.com/story/dyson-wont-say-whats-wrong-with-the-camerajet-toothbrush/" /> 215<meta name="description" content="Dyson admits a component issue but won't say what's failing in its $500 toothbrush." /> 216<meta property="og:type" content="article" /> 217<meta property="og:locale" content="en_US" /> 218<meta property="og:site_name" content="Ars Technica" /> 219<meta property="og:title" content="Dysonâs most overengineered gadget may have a waterproofing problem" /> 220<meta property="og:description" content="Dyson admits a component issue but won't say what's failing in its $500 toothbrush." /> 221<meta property="og:url" content="https://www.wired.com/story/dyson-wont-say-whats-wrong-with-the-camerajet-toothbrush/" /> 222<meta property="og:image" content="https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1152x648.jpg" /> 223<meta property="og:image:width" content="1152" /> 224<meta property="og:image:height" content="648" /> 225<meta property="og:image:alt" content="Image of Dyson electric toothbrush" /> 226<meta property="article:published_time" content="2026-09-22T13:33:16+00:00" /> 227<meta property="article:modified_time" content="2026-09-22T13:55:34+00:00" /> 228<meta name="twitter:card" content="summary_large_image" /> 229<meta name="twitter:title" content="Dysonâs most overengineered gadget may have a waterproofing problem" /> 230<meta name="twitter:description" content="Dyson admits a component issue but won't say what's failing in its $500 toothbrush." /> 231<meta name="twitter:image" content="https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1152x648.jpg" /> 232<meta name="twitter:image:alt" content="Image of Dyson electric toothbrush" />
233<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://arstechnica.com/#/schema/WebSite","url":"https://arstechnica.com/","name":"Ars Technica","description":"Serving the Technologist since 1998. News, reviews, and analysis.","inLanguage":"en-US","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://arstechnica.com/search/{search_term_string}/"},"query-input":"required name=search_term_string"},"publisher":{"@type":"Organization","@id":"https://arstechnica.com/#/schema/Organization","name":"Ars Technica","url":"https://arstechnica.com/","logo":{"@type":"ImageObject","url":"https://cdn.arstechnica.net/wp-content/uploads/2016/10/cropped-ars-logo-512_480.png","contentUrl":"https://cdn.arstechnica.net/wp-content/uploads/2016/10/cropped-ars-logo-512_480.png","width":512,"height":512,"contentSize":"34417"}}},{"@type":"WebPage","@id":"https://www.wired.com/story/dyson-wont-say-whats-wrong-with-the-camerajet-toothbrush/","url":"https://www.wired.com/story/dyson-wont-say-whats-wrong-with-the-camerajet-toothbrush/","name":"Dysonâs most overengineered gadget may have a waterproofing problem - Ars Technica","description":"Dyson admits a component issue but won't say what's failing in its $500 toothbrush.","inLanguage":"en-US","isPartOf":{"@id":"https://arstechnica.com/#/schema/WebSite"},"breadcrumb":{"@type":"BreadcrumbList","@id":"https://arstechnica.com/#/schema/BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":"https://arstechnica.com/","name":"Ars Technica"},{"@type":"ListItem","position":2,"item":"https://arstechnica.com/gadgets/","name":"Category: Tech"},{"@type":"ListItem","position":3,"name":"Dysonâs most overengineered gadget may have a waterproofing problem"}]},"potentialAction":{"@type":"ReadAction","target":"https://www.wired.com/story/dyson-wont-say-whats-wrong-with-the-camerajet-toothbrush/"},"datePublished":"2026-09-22T13:33:16+00:00","dateModified":"2026-09-22T13:55:34+00:00","author":{"@type":"Person","@id":"https://arstechnica.com/#/schema/Person/a759fc286215ae7dc5c5dc2f812645e8","name":"WIRED","description":"Wired.com is your essential daily guide to what's next, delivering the most original and complete take you'll find anywhere on innovation's impact on technology, science, business and culture. Wired.com's award-winning news reporting..."}}]}</script>
vendor: 1 bytes, line 233
233
234<script type="application/ld+json">{"@context":"https://schema.org","@type":"NewsArticle","mainEntityOfPage":{"@type":"WebPage","@id":"https://www.wired.com/story/dyson-wont-say-whats-wrong-with-the-camerajet-toothbrush/"},"headline":"Dysonâs most overengineered gadget may have a waterproofing problem","image":{"@type":"ImageObject","url":"https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1152x648.jpg","width":1152,"height":648},"datePublished":"2026-09-22T13:33:16+00:00","dateModified":"2026-09-22T13:55:34+00:00","author":{"@type":"Person","name":"WIRED","url":"https://arstechnica.com/author/wired-com/"},"publisher":{"@type":"Organization","name":"Ars Technica","logo":{"@type":"ImageObject","url":"https://cdn.arstechnica.net/wp-content/uploads/2024/10/ars-logo-186x60.png","width":186,"height":60}},"description":"Dyson admits a component issue but won't say what's failing in its $500 toothbrush."}</script>
234 235<!-- / The SEO Framework by Sybre Waaijer | 8.10ms meta | 0.59ms boot --> 236
237<script id="fides-js-loader"> 238 (function() { 239 var fidesHost = 240 "https://privacy.condenastdigital.com/fides.js"; 241 var fidesPropertyId = "FDS-MIKT8M"; 242 var fidesSrc = fidesHost + "?property_id=" + fidesPropertyId + "&"; 243 var searchParams = new URLSearchParams(location.search); 244 var debugRegion = (searchParams.get("ars_debug_region") || "").toLowerCase(); 245 var debugConsentMode = (searchParams.get("ars_debug_consent") || "").toLowerCase(); 246 var isLocalDebugHost = 247 location.hostname === "localhost" || 248 location.hostname === "127.0.0.1" || 249 location.hostname.indexOf("local.") === 0 || 250 location.hostname.indexOf(".local.") !== -1; 251 252 var gtmOptions = { 253 flag_type: "boolean", 254 non_applicable_flag_mode: "include", 255 }; 256 257 function buildDebugConsent(mode) { 258 if (mode === "accept" || mode === "all") { 259 return { 260 essential: true, 261 analytics: true, 262 functional: true, 263 sales_sharing_targeted_advertising: true, 264 social_media: true, 265 audience_measurement: true, 266 }; 267 } 268 269 return { 270 essential: true, 271 analytics: false, 272 functional: false, 273 sales_sharing_targeted_advertising: false, 274 social_media: false, 275 audience_measurement: false, 276 }; 277 } 278 279 function pushDebugFidesEvent(name, consent) { 280 window.dataLayer = window.dataLayer || []; 281 window.dataLayer.push({ 282 event: name, 283 Fides: { 284 consent: consent, 285 timestamp: Math.round(performance.now()), 286 extraDetails: { 287 consentMethod: "ars_debug_region", 288 servingComponent: "banner", 289 }, 290 }, 291 }); 292 } 293 294 function initDebugFides(region, consentMode) { 295 var body = window.document.body; 296 var initialConsentMode = consentMode || (region === "eu" ? "reject" : "accept"); 297 var initialConsent = buildDebugConsent(initialConsentMode); 298 299 window.Fides = { 300 consent: initialConsent, 301 initialized: false, 302 experience: { 303 experience_config: { 304 id: "ars-debug-region-" + region, 305 }, 306 }, 307 gtm: function(options) { 308 window.__arsDebugFidesGtmOptions = options; 309 }, 310 }; 311 312 window.arsDebugFides = { 313 region: region, 314 getConsent: function() { 315 return window.Fides.consent; 316 }, 317 setConsent: function(nextMode) { 318 var nextConsent = buildDebugConsent((nextMode || "").toLowerCase()); 319 window.Fides.consent = nextConsent; 320 pushDebugFidesEvent("FidesUpdated", nextConsent); 321 window.dispatchEvent(new Event("FidesUpdated")); 322 return nextConsent; 323 }, 324 showBanner: function() { 325 pushDebugFidesEvent("FidesUIShown", window.Fides.consent); 326 window.dispatchEvent(new Event("FidesUIShown")); 327 }, 328 }; 329 330 if (body) { 331 body.classList.add("ars-debug-region-" + region); 332 body.dataset.arsDebugRegion = region; 333 } 334 335 window.dispatchEvent(new Event("FidesInitializing")); 336 window.Fides.initialized = true; 337 window.dispatchEvent(new Event("FidesInitialized")); 338 339 if (region === "eu") { 340 window.arsDebugFides.showBanner(); 341 } 342 343 pushDebugFidesEvent("FidesUpdated", initialConsent); 344 window.dispatchEvent(new Event("FidesUpdated")); 345 } 346 347 function insertFidesScript() { 348 addEventListener("FidesInitializing", function() { 349 window.Fides.gtm(gtmOptions); 350 }); 351 addEventListener("FidesInitialized", function() { 352 try { 353 var experience = window.Fides.experience || {}; 354 var config = experience.experience_config || {}; 355 var id = config.id; 356 if (id) { 357 window.document.body.classList.add(id); 358 } 359 } catch (err) { 360 console.warn("Couldn't apply Fides experience ID to body.", err); 361 } 362 }); 363 364 if (isLocalDebugHost && (debugRegion === "eu" || debugRegion === "us")) { 365 initDebugFides(debugRegion, debugConsentMode); 366 return; 367 } 368 369 var fidesPrefix = "fides_"; 370 var fidesSearchParams = new URLSearchParams();
371 searchParams.forEach(function(key, value) { 372 if (key.startsWith(fidesPrefix)) { 373 fidesSearchParams.set( 374 key.replace(fidesPrefix, ""), 375 key === fidesPrefix + "cache_bust" ? Date.now().toString() : value 376 ); 377 } 378 }); 379 var src = fidesSrc + fidesSearchParams.toString(); 380 var script = document.createElement("script"); 381 script.async = false; 382 script.defer = false; 383 script.setAttribute("src", src); 384 script.setAttribute("id", "fides-js"); 385 script.setAttribute("type", "text/javascript"); 386 document.head.appendChild(script); 387 } 388 389 insertFidesScript(); 390 })(); 391</script>
391 392<!-- Google Tag Manager DataLayer -->
393<script> 394 window.dataLayer = window.dataLayer || []; 395 window.dataLayer.push({"event":"data-layer-loaded","user":{"ars_userId":undefined,"amg_userId":undefined,"uID":undefined,"sID":undefined,"loginStatus":false,"subscriberStatus":"none","infinityId":undefined,"registrationSource":undefined,"mdw_cnd_id":undefined,"monthlyVisits":undefined,"accessPaywall":undefined,"view":"grid","theme":"system","show_comments":undefined},"content":{"pageTemplate":"single","pageType":"article|report","contentCategory":"homepage","section":"homepage","subsection":undefined,"contributor":"WIRED","contentID":2173029,"contentLength":1172,"display":"Dyson\u2019s most overengineered gadget may have a waterproofing problem","contentSource":"web","pageAssets":undefined,"uniqueContentCount":undefined,"monthlyContentCount":undefined,"publishDate":"2026-09-22T13:33:16-04:00","modifiedDate":"2026-09-22T13:55:34-04:00","keywords":"dyson|enshittification|syndication|Toothbrush","dataSource":undefined},"marketing":{"campaignName":undefined,"circCampaignId":undefined,"internalCampaignId":undefined,"brand":"Ars Technica","certified_mrc_data":undefined,"condeNastId":undefined},"page":{"pID":undefined,"syndicatorUrl":undefined,"pageURL":"https:\/\/arstechnica.com\/?p=2173029","canonical":"https:\/\/arstechnica.com\/gadgets\/2026\/09\/its-500-toothbrush-disappeared-from-stores-dyson-wont-fully-explain-why\/","canonicalPathName":"\/gadgets\/2026\/09\/its-500-toothbrush-disappeared-from-stores-dyson-wont-fully-explain-why\/"},"search":{"facets":undefined,"searchTerms":undefined},"site":{"appVersion":"1.0.0"}}); 396</script>
396 397<!-- End Google Tag Manager DataLayer --> 398<!-- Google Tag Manager -->
399<script>
vendor: 498 bytes, lines 399-413
399 400 (function(w, d, s, l, i) { 401 w[l] = w[l] || []; 402 w[l].push({ 403 'gtm.start': new Date().getTime(), 404 event: 'gtm.js' 405 }); 406 var f = d.getElementsByTagName(s)[0], 407 j = d.createElement(s), 408 dl = l != 'dataLayer' ? '&l=' + l : ''; 409 j.async = true; 410 j.src = 411 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 412 f.parentNode.insertBefore(j, f); 413 })(window, document, 'script', 'dataLayer', '
413GTM-NLXNPCQ
vendor: 4 bytes, line 413
413');
414</script>
414 415<!-- End Google Tag Manager --> 416<style id="wp-img-auto-sizes-contain-inline-css"> 417img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 418/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 419</style> 420 421<style id="global-styles-inline-css"> 422:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
422--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
422.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 423/*# sourceURL=global-styles-inline-css */ 424</style> 425 426<link rel='stylesheet' id='ep_general_styles-css' href='https://cdn.arstechnica.net/wp-content/mu-plugins/_composer_elasticpress/dist/css/general-styles.css?ver=66295efe92a630617c00' media='all' /> 427<link rel='stylesheet' id='searchterm-highlighting-css' href='https://cdn.arstechnica.net/wp-content/mu-plugins/_composer_elasticpress/dist/css/highlighting-styles.css?ver=252562c4ed9241547293' media='all' /> 428<link rel='stylesheet' id='app/0-css' href='https://cdn.arstechnica.net/wp-content/themes/ars-v9/public/css/app.111084.css' media='all' /> 429<link rel='stylesheet' id='ads/0-css' href='https://cdn.arstechnica.net/wp-content/themes/ars-v9/public/css/ads.01e938.css' media='all' />
430<script id="jquery-core-js" src="https://cdn.arstechnica.net/wp/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 430
430
431<script data-wp-strategy="defer" defer id="aws-waf-challenge-js" src="https://8eb60cfff851.us-east-2.sdk.awswaf.com/8eb60cfff851/3d5d6f3ad3d5/challenge.js"></script>
431 432<meta property="article:published_time" content="2026-09-22T13:33:16+00:00"> 433<meta property="article:modified_time" content="2026-09-22T13:55:34+00:00">
434<script>window.ars = {"subscriber":false,"hasAdFree":false,"hasTrackerFree":false,"loggedIn":false,"level":"GUEST","0":""}</script>
vendor: 1 bytes, line 434
434
435<script> 436 const theme = "system"; 437 let darkMode = false; 438 if (theme === "dark" || (theme === "system" && (window.matchMedia("(prefers-color-scheme: dark)").matches))) { 439 darkMode = true; 440 document.documentElement.classList.add("dark"); 441 } 442 if (theme === "dusk" || (theme === "system" && (window.matchMedia("(prefers-color-scheme: light)").matches))) { 443 darkMode = false; 444 document.documentElement.classList.add("dusk"); 445 } 446 if (theme === "light") { 447 darkMode = false; 448 document.documentElement.classList.add("light"); 449 } 450 window.darkMode = darkMode; 451</script>
vendor: 1 bytes, line 451
451
452<script> 453 const settings = JSON.parse(localStorage.getItem("text-settings")) || {}; 454 const { size = "standard", links = "standard", width = "standard", position="story" } = settings; 455 456 const html = document.querySelector("html"); 457 html.classList.add(`text-settings-size-${size}`); 458 html.classList.add(`text-settings-links-${links}`); 459 html.classList.add(`text-settings-width-${width}`); 460 html.classList.add(`text-settings-position-${position}`); 461</script>
461 462<meta name="twitter:site" content="@arstechnica" /> 463<meta name="twitter:domain" content="arstechnica.com" /> 464<meta property="facebook-domain-verification" content="qptjyerza2q11uv3fe6aay6hbsncr8" /> 465<style>[x-cloak] { display: none !important; }</style> 466<meta name="robots" content="noindex" /> 467<link rel="preconnect" href="https://globalservices.conde.digital"> 468<link rel="preconnect" href="https://player.cnevids.com">
469<script> 470 window.permutiveCohorts = {"cached_until":"2026-09-24T09:46:31+00:00","cohorts":["bzwz","bvfg","bzwm","bvcp","bzyu","bvpz","byfz","bzwl","bzxb","erpu","bzyr","bvgx","bvko","dfaj","bycz","creu","bvom","bzxc","bxzz","bvre","bvqj","bvmj","dqbf","buzk","bzwy","bvpb","bydb","bzes","clgk","bzep","bxxi","bjfa","bzyt","bzyo","bxxe","bzyl","bvvp","byfu","bvnb","butb","bvoe","bzxa","bvch","bvkn","bvox","clgl","bvmp","crer","bvck","bute","epfm","bxzq","byre","bvev","byoo","bvcq","bzyk","bzyp","buzu","bver","bvpv","cret","bvhx","erly","bvrn","bxww","bygc","bzyv","bybh","bvql","bvpt","erpr","bvrb","bvbv","bvep","bvnf","bzeq","bvqu","bzwi","bvoj","busz","bznp","dnlj","bzyq","clgi","bvdx","erls","bvbw","dqbh","bzym","bvpu","cres","bvmr","bvpd","bves","dnli","bzys","dfai","bvia","bvrd","butc","erpv","bvoz","busy","bvqk","clgj","dqbg","bvpw","bzyn","eexy","erpt"],"activations":{"target_dfp":["bzwz","bvfg","bzwm","bvcp","bzyu","bvpz","bzwl","bzxb","erpu","bzyr","bvgx","bvko","dfaj","bycz","bvom","bzxc","bxzz","bvre","bvqj","bvmj","dqbf","buzk","bzwy","bvpb","bydb","bzes","clgk","bzep","bxxi","bjfa","bzyt","bzyo","bxxe","bzyl","bvvp","bvnb","butb","bvoe","bzxa","bvch","bvkn","bvox","clgl","bvmp","bvck","bute","bxzq","bvev","bvcq","bzyk","bzyp","buzu","bver","bvpv","bvhx","bvrn","bxww","bzyv","bybh","bvql","bvpt","erpr","bvrb","bvbv","bvep","bvnf","bzeq","bvqu","bzwi","bvoj","busz","bznp","bzyq","clgi","bvdx","bvbw","dqbh","bzym","bvpu","bvmr","bvpd","bves","dnli","bzys","dfai","bvia","bvrd","butc","erpv","bvoz","busy","bvqk","clgj","dqbg","bvpw","bzyn","eexy","erpt"]},"contextual_data":{"classifications":{"categories":[],"keywords":[],"entities":[],"sentiment":[],"emotion":[],"concepts":[]}},"gam":["bzwz","bvfg","bzwm","bvcp","bzyu","bvpz","bzwl","bzxb","erpu","bzyr","bvgx","bvko","dfaj","bycz","bvom","bzxc","bxzz","bvre","bvqj","bvmj","dqbf","buzk","bzwy","bvpb","bydb","bzes","clgk","bzep","bxxi","bjfa","bzyt","bzyo","bxxe","bzyl","bvvp","bvnb","butb","bvoe","bzxa","bvch","bvkn","bvox","clgl","bvmp","bvck","bute","bxzq","bvev","bvcq","bzyk","bzyp","buzu","bver","bvpv","bvhx","bvrn","bxww","bzyv","bybh","bvql","bvpt","erpr","bvrb","bvbv","bvep","bvnf","bzeq","bvqu","bzwi","bvoj","busz","bznp","bzyq","clgi","bvdx","bvbw","dqbh","bzym","bvpu","bvmr","bvpd","bves","dnli","bzys","dfai","bvia","bvrd","butc","erpv","bvoz","busy","bvqk","clgj","dqbg","bvpw","bzyn","eexy","erpt"],"xandr":[],"config":{"time_to_wait_for_consent_in_millis":4000}}; 471 window.permutiveContextInfo = {"pageProperties":{"client":{"url":"https:\/\/arstechnica.com\/gadgets\/2026\/09\/its-500-toothbrush-disappeared-from-stores-dyson-wont-fully-explain-why\/","referrer":"https:\/\/arstechnica.com\/","type":"web","user_agent":"Mozilla\/5.0 (Linux; Android 16; SM-A536B Build\/BP2A.250605.031.A3; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/151.0.7922.200 Mobile Safari\/537.36","domain":"arstechnica.com","title":"Dyson\u2019s most overengineered gadget may have a waterproofing problem - Ars Technica"},"type":"article","article":{"id":"2173029","category":"gadgets","subcategory":"","title":"Dyson\u2019s most overengineered gadget may have a waterproofing problem","tags":["dyson","enshittification","syndication","toothbrush"]}},"url":"https:\/\/arstechnica.com\/gadgets\/2026\/09\/its-500-toothbrush-disappeared-from-stores-dyson-wont-fully-explain-why\/"}; 472</script>
vendor: 1 bytes, line 472
472
473<script src="https://www.googletagservices.com/tag/js/gpt.js" id="gpt-script" async></script>
vendor: 1 bytes, line 473
473
474<script> 475 window.googletag = window.googletag || {}; 476 window.googletag.cmd = window.googletag.cmd || []; 477 window.cns = window.cns || {}; 478 window.cns.queue = []; 479 window.cns.pageContext = {"contentType":"article","templateType":"article","channel":"gadgets","subChannel":"","slug":"its-500-toothbrush-disappeared-from-stores-dyson-wont-fully-explain-why","server":"production","keywords":{"tags":["dyson","enshittification","syndication","toothbrush"],"cm":[],"platform":["wordpress"],"copilotid":""}}; 480</script>
480 481 482
483<script src="https://ads-static.conde.digital/production/cns/builds/ars-technica/v6.js" async></script>
vendor: 1 bytes, line 483
483
484<script type="text/javascript">!(function(o,_name){o[_name]=o[_name]||function $(){($.q=$.q||[]).push(arguments)},o[_name].v=o[_name].v||2,o[_name].s="1";!(function(o,t,e,n,c,a,f){function i(n,c){(n=(function(t,e){try{if(e=(t=o.localStorage).getItem("_aQS01Q0IwOTY5NTEzOUM2MDU3MEU5M0VGREEtNA"))return JSON.parse(e).lgk||[];if((f=t.getItem(decodeURI(decodeURI('%2576%2534%256%31%25%36%33%25%33%31%256%35%69%5a%72%253%30'))))&&f.split(",")[4]>0)return[[_name+"-engaged","true"]]}catch(n){}})())&&typeof n.forEach===e&&(c=o[t].pubads())&&n.forEach((function(o){o&&o[0]&&c.setTargeting(o[0],o[1]||"")}))}try{(a=o[t]=o[t]||{}).cmd=a.cmd||[],typeof a.pubads===e?i():typeof a.cmd.unshift===e?a.cmd.unshift(i):a.cmd.push(i)}catch(r){}})(window,"googletag","function");;})(window,decodeURI(decodeURI('%25%36%31%64%256%64%25%36%39ra%256%63')));!(function(t,c,o,$){o=t.createElement(c),t=t.getElementsByTagName(c)[0],o.async=1,o.src="https://planebasin.com/dist/25dd01b14_8715a062a12be6f05714ee41f1a252e6e86d0.index.js",($=0)&&$(o),t.parentNode.insertBefore(o,t)})(document,"script");</script>
484 485 486<meta name="twitter:partner" content="tfwp"><meta name='parsely-page' content='{"title":"Dyson\u2019s most overengineered gadget may have a waterproofing problem","link":"https:\/\/arstechnica.com\/gadgets\/2026\/09\/its-500-toothbrush-disappeared-from-stores-dyson-wont-fully-explain-why\/","type":"post","author":"WIRED","post_id":2173029,"pub_date":"2026-09-22T09:33:16-04:00","section":"Tech","tags":["dyson","enshittification","syndication","toothbrush"],"image_url":"https:\/\/cdn.arstechnica.net\/wp-content\/uploads\/2026\/09\/toothbrush-500x500.jpg"}'> 487<meta name='parsely-metadata' content='{"type":"post","title":"Dyson\u2019s most overengineered gadget may have a waterproofing problem","post_id":2173029,"lower_deck":"Dyson admits a component issue but won't say what's failing in its $500 toothbrush.","image_url":"https:\/\/cdn.arstechnica.net\/wp-content\/uploads\/2026\/09\/toothbrush-500x500.jpg","listing_image_url":"https:\/\/cdn.arstechnica.net\/wp-content\/uploads\/2026\/09\/toothbrush-768x432.jpg"}'> 488<!-- Start Headline A/B -->
489<script type="text/javascript"> 490 class ABTest { 491 constructor(post_id, init_method) { 492 this.post_id = post_id; 493 this.ajaxurl = '/services/ars-ajax-handler.php'; 494 this.expireDays = 1 / 48; // 30 min 495 this.group = this.getGroup(); 496 this.uid = this.getUid(); 497 this.init_method = init_method; 498 this.setTitle(); 499 500 if (this.init_method === 'click') { 501 this.click(); 502 } else { 503 this.impression(); 504 } 505 } 506 507 setCookie(name, value, days) { 508 var expires = ""; 509 if (days) { 510 var date = new Date(); 511 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 512 expires = "; expires=" + date.toUTCString(); 513 } 514 document.cookie = name + "=" + (value || "") + expires + "; path=/; Secure"; 515 } 516 517 getCookie(name) { 518 var nameEQ = name + "="; 519 var ca = document.cookie.split(';'); 520 for (var i = 0; i < ca.length; i++) { 521 var c = ca[i]; 522 while (c.charAt(0) == ' ') c = c.substring(1, c.length); 523 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 524 } 525 return null; 526 } 527 528 // Retrieves a unique id for determining whether the event should be recorded 529 getUid() { 530 var uid = this.getCookie('ars_ab_' + this.post_id + '_uid'); 531 if (!uid) { 532 uid = (Math.random() + 1).toString(36).substring(2, 7); 533 this.setCookie('ars_ab_' + this.post_id + '_uid', uid, this.expireDays); 534 } 535 return uid; 536 }; 537 538 // Places the user in either A or B for this post id 539 getGroup() { 540 var group = this.getCookie('ars_ab_' + this.post_id + '_group'); 541 if (!group) { 542 group = String.fromCharCode(Math.floor(Math.random() * 2) + 65).toLowerCase(); 543 this.setCookie('ars_ab_' + this.post_id + '_group', group, this.expireDays); 544 } 545 return group; 546 }; 547 548 // Records a headline impression (from homepage or other listing) 549 impression() { 550 // Send fake ajax 551 var params = { 552 nonce: '109cee87a3', 553 action: 'ars_ab_impression', 554 id: this.post_id, 555 group: this.group, 556 uid: this.uid, 557 ts: (new Date()).getTime() 558 }; 559 var url = this.ajaxurl + '?' + this.encodeParams(params); 560 document.write('\x3Cscript type="text/javascript" src="' + url + '">\x3C/script>'); 561 }; 562 563 // Records a headline click from the actual post page 564 click() { 565 // Send fake ajax 566 var params = { 567 nonce: '9403bf2c0d', 568 action: 'ars_ab_click', 569 id: this.post_id, 570 group: this.group, 571 uid: this.uid, 572 ts: (new Date()).getTime() 573 }; 574 var url = this.ajaxurl + '?' + this.encodeParams(params); 575 document.write('\x3Cscript type="text/javascript" src="' + url + '">\x3C/script>'); 576 }; 577 578 // If user is in B group, dynamically set title 579 setTitle() { 580 if (this.group == 'b') { 581 var span = document.getElementById('ars_ab_' + this.post_id); 582 var title = span.parentNode; 583 title.innerHTML = span.getAttribute('data-title-b'); 584 } 585 }; 586 587 encodeParams(data) { 588 var ret = []; 589 for (var d in data) 590 ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d])); 591 return ret.join("&"); 592 }; 593 594 }; 595</script>
595 596<!-- End Headline A/B --> 597<link rel="icon" href="https://cdn.arstechnica.net/wp-content/uploads/2016/10/cropped-ars-logo-512_480-60x60.png" sizes="32x32" /> 598<link rel="icon" href="https://cdn.arstechnica.net/wp-content/uploads/2016/10/cropped-ars-logo-512_480-300x300.png" sizes="192x192" /> 599<link rel="apple-touch-icon" href="https://cdn.arstechnica.net/wp-content/uploads/2016/10/cropped-ars-logo-512_480-300x300.png" /> 600<meta name="msapplication-TileImage" content="https://cdn.arstechnica.net/wp-content/uploads/2016/10/cropped-ars-logo-512_480-300x300.png" /> 601 602<!-- 603 generated 66 seconds ago 604 generated in 0.296 seconds 605 served from batcache in 0.004 seconds 606 expires in 234 seconds 607 view: grid 608 theme: system 609 xf_style_id: 3 610 --> 611</head> 612 613<body class="wp-singular post-template-default single single-post postid-2173029 single-format-standard wp-embed-responsive wp-theme-ars-v9 its-500-toothbrush-disappeared-from-stores-dyson-wont-fully-explain-why bg-white dusk:bg-gray-100 text-gray-700 dark:text-gray-250 dark:bg-gray-50 singular is-guest"> 614 <!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 614-615
614 615<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
615GTM-NLXNPCQ
vendor: 83 bytes, line 615
615" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
616<!-- End Google Tag Manager (noscript) --> 617 618 <div id="app"> 619 <a class="sr-only focus:not-sr-only" href="#main"> 620 Skip to content 621</a> 622 623<div class="ad-wrapper is-fullwidth is-hero"> 624 <div class="ad-wrapper-inner"> 625 <div class="ad ad--hero"></div> 626 </div> 627 </div> 628 629<header 630 class="banner font-impact xxl:max-w-xxl mdl:rounded-sm sticky top-0 z-30 mx-auto flex h-14 max-w-6xl flex-row flex-nowrap items-center justify-between bg-gray-700 px-[15px] font-semibold uppercase transition-[top] duration-500 sm:px-5 md:my-5 md:h-10 lg:my-10 dark:bg-black" 631 id="site-header"> 632 <a id = "header-logo" href="https://arstechnica.com/" aria-label="Ars Technica home"> 633 <span class="sr-only">Ars Technica home</span> 634 <svg class="h-[36px] w-[109px] md:h-[65px] md:w-[197px]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 436 144.1"><defs><clipPath id="ars-full_svg__a"><path fill="none" d="M0 0h436v144.1H0z"/></clipPath><clipPath id="ars-full_svg__b"><path fill="none" d="M0 0h436v144.1H0z"/></clipPath></defs><g clip-path="url(#ars-full_svg__a)"><g fill="none" clip-path="url(#ars-full_svg__b)"><path fill="#ff4e00" d="M72 0c39.8 0 72.1 32.3 72.1 72.1s-32.3 72.1-72.1 72.1S0 111.8 0 72.1 32.3 0 72 0"/><path fill="#fff" d="m46.5 94-.9-5.9c-4 4.4-9.6 6.8-15.6 6.8-8 0-13-4.8-13-12.3 0-11 9.4-15.4 27.8-17.3v-1.9c0-5.6-3.3-7.5-8.4-7.5s-10.5 1.7-15.3 3.8L20 52.6c5.3-2.1 10.3-3.7 17.1-3.7 10.7 0 15.9 4.3 15.9 14.2v30.8h-6.7Zm-1.6-22.4c-16.3 1.6-19.7 6-19.7 10.6s2.4 5.9 6.6 5.9 9.4-2.4 13.1-6.2zm27.3-3.7v26H64v-44h6.6l1.4 9c3.1-5 8.2-9.5 15.5-9.9l1.3 7.9c-7.4.3-13.6 5.2-16.6 11m37.2 26.9c-5.6-.1-11.1-1.6-16.1-4.2l1.2-7.8c4.6 3.2 10 5 15.6 5.1 5.6 0 9-2.1 9-5.8s-2.5-5.6-10.5-7.5C98.2 72 94.1 68.9 94.1 61s5.9-12.2 15.6-12.2c5 0 9.9 1 14.5 3l-1.3 7.8c-4.1-2.4-8.7-3.7-13.4-3.8-5 0-7.6 1.9-7.6 5.1s2.2 4.6 9.2 6.4c10.9 2.8 15.8 5.9 15.8 14.3s-6.1 13.2-17.5 13.2m109.4-11.1c-4.4 3.7-8.4 5-12.8 5-7.7 0-12.7-5.3-13.5-14h24.8l.9-5.5h-25.7c.8-8.7 5.7-14.1 12.9-14.1s8.8 1.7 12.9 5.1l1-5.9c-4-2.9-8.8-4.4-13.7-4.3-10.7 0-19.2 7.8-19.2 21.9s8.3 21.9 18.9 21.9c5.2.1 10.2-1.6 14.3-4.8zm-48.7-27.5v36.9h-5.8V56.2h-13.4v-5.3H183l.9 5.3H170Zm74.5 37.6c-11.9 0-19.5-8.8-19.5-21.8s7.8-22 19.6-22c4.3-.1 8.5 1.1 12 3.5l-.9 5.9c-3.2-2.6-7.1-4-11.2-4.1-8.6 0-13.6 6.5-13.6 16.6s5.1 16.6 13.6 16.6c4.3 0 8.5-1.6 11.9-4.2l.9 5.4c-3.7 2.6-8.2 4.1-12.8 4.1M292 93V73.5h-21.4V93h-5.8V50.9h5.8v17.5H292V50.9h5.8V93zm42.9 0-23.2-32.8V93h-5.3V50.9h5.1l22.4 31.5V50.9h5.3V93zm13.4-42.1h5.8V93h-5.8zm32.6 42.9c-11.9 0-19.5-8.8-19.5-21.8s7.8-22 19.6-22c4.3-.1 8.5 1.1 12 3.5l-.9 5.9c-3.2-2.6-7.1-4-11.2-4.1-8.6 0-13.6 6.5-13.6 16.6s5.1 16.6 13.6 16.6c4.3 0 8.5-1.6 11.9-4.2l.9 5.4c-3.7 2.6-8.2 4.1-12.8 4.1m32.9-43.1h5.8l16.3 41.5-5.6 1.2-5-13.1h-17.4L403.1 93h-5.8zm-4 24.6h13.5l-6.8-17.9z"/></g></g></svg> 635 </a> 636 637 <div class="flex flex-row flex-nowrap items-center gap-3 md:gap-5 xl:gap-4"> 638 639 <div class="xxl:hidden"> 640 <div x-data="arsDropdown()" @keydown.escape.prevent.stop="close($refs.button)" 641 @focusin.window="! $refs.panel.contains($event.target) && close()" x-id="['dropdown-button']"> 642 643 <!-- Button --> 644 <button type="button" x-ref="button" 645 x-on:click=" 646 toggle(); 647 $dispatch('dropdown-opened', { panel: $refs.panel }); 648 " 649 :aria-expanded="open" :aria-controls="$id('dropdown-button')" :class="{ selected: open }" 650 class="group flex items-center focus:outline-none" arial-label="" aria-label="Open Sections menu dropdown"> 651 <svg class="group-with-selected:text-gray-200 h-5 w-5 text-gray-300 hover:text-gray-100 group-focus:text-gray-100 sm:hidden" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><path fill="currentColor" d="M0 0h40v8H0zm0 16h40v8H0zm24 24H0v-8h16z"/><path fill="#04cc74" d="M23 32h17l-8 8h-.3z"/></svg> 652 <span 653 class="group-with-selected:text-gray-100 hidden flex-row flex-nowrap items-center gap-1 uppercase text-gray-300 hover:text-gray-100 group-focus:text-gray-100 sm:flex xl:text-sm"> 654 Sections 655 <svg class="h-1 text-gray-300" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 19.3"><defs><clipPath id="arrow-down_svg__a"><path fill="none" d="M0 0h40v19.3H0z"/></clipPath><clipPath id="arrow-down_svg__b"><path fill="none" d="M0 0h40v19.3H0z"/></clipPath></defs><g clip-path="url(#arrow-down_svg__a)"><g fill="none" clip-path="url(#arrow-down_svg__b)">
655<path fill="currentColor" d="m0 0 18.9 18.9c.6.6 1.6.6 2.2 0L40 0z"/></g></g></svg> 656 </span> 657 </button> 658 659 <!-- Panel --> 660 <div x-cloak x-ref="panel" x-show="open" x-transition.origin.top.center x-on:click.outside="close()" 661 :id="$id('dropdown-button')" class="absolute overflow-hidden z-50 bg-gray-550 xxs:max-w-[400px] absolute right-0 top-14 mt-[1px] w-full rounded-sm sm:right-auto sm:max-w-[200px] md:top-10"> 662 <nav class="topnav-sections"> 663 664 <div 665 class="flex flex-row flex-nowrap items-center justify-between bg-gray-700 px-10 py-2 sm:hidden sm:flex-col sm:items-start"> 666 <a class="text-green-400 hover:text-green-500 focus:text-green-500" href="/civis/"> 667 Forum 668 </a> 669 670 671 <div class="h-5 w-[1px] bg-gray-400"></div> 672 673 <a class="text-orange-400 hover:text-orange-500 focus:text-orange-500" href="/subscribe/"> 674 Subscribe 675 </a> 676 677 678 <div class="h-5 w-[1px] bg-gray-400"></div> 679 680 <a class="flex flex-row flex-nowrap items-center gap-2 text-gray-300 hover:text-gray-100 focus:text-gray-100" 681 href="/search/"> 682 <svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="magnify_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="magnify_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#magnify_svg__a)"><g fill="none" clip-path="url(#magnify_svg__b)"><path fill="currentColor" d="M39.2 35.4 29 25.2c4.4-6.2 3.9-15-1.7-20.6C24.2 1.6 20.1 0 16 0S7.8 1.6 4.7 4.7c-6.2 6.2-6.2 16.4 0 22.6C7.8 30.4 11.9 32 16 32s6.5-1 9.3-3l10.2 10.2c.5.5 1.2.8 1.9.8s1.4-.3 1.9-.8c1-1 1-2.7 0-3.8M8.5 23.5c-2-2-3.1-4.7-3.1-7.5s1.1-5.5 3.1-7.5 4.7-3.1 7.5-3.1 5.5 1.1 7.5 3.1c4.2 4.2 4.2 10.9 0 15.1-2 2-4.7 3.1-7.5 3.1s-5.5-1.1-7.5-3.1"/></g></g></svg> 683 Search 684 </a> 685 </div> 686 687 <ul class="my-3 grid grid-cols-2 sm:grid-cols-1"> 688 <li> 689 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 690 href="https://arstechnica.com/ai/"> 691 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-ai_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-ai_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-ai_svg__a)"><g fill="currentColor" clip-path="url(#section-ai_svg__b)"><path d="M20 2.4c9.7 0 17.6 7.9 17.6 17.6S29.7 37.6 20 37.6 2.4 29.7 2.4 20 10.3 2.4 20 2.4M20 0C9 0 0 9 0 20s9 20 20 20 20-9 20-20S31 0 20 0"/><path d="M20 13q2.85 0 5.4.9c.7.2 1.4-.1 1.6-.9l1.4-5.5C26 5.9 23.1 4.9 20 4.9s-6 .9-8.4 2.6L13 13c.2.7.9 1.1 1.6.9Q17 13 20 13M8.9 18.3c.4-.8 1-1.5 1.7-2.1l-2.2-5.7C7 12.2 6 14.1 5.5 16.3l1.3 2.1c.5.8 1.7.8 2.2 0m24.3 0 1.3-2.1c-.5-2.2-1.5-4.1-2.9-5.8l-2.2 5.7c.7.6 1.3 1.3 1.7 2.1.5.8 1.6.9 2.2 0M23.2 20c0 1.8-1.5 3.2-3.2 3.2s-3.2-1.4-3.2-3.2 1.5-3.2 3.2-3.2 3.2 1.4 3.2 3.2"/></g></g></svg> 692 AI 693 </a> 694 </li> 695 <li> 696 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 697 href="https://arstechnica.com/information-technology/"> 698 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-information-technology_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-information-technology_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-information-technology_svg__a)"><g fill="currentColor" clip-path="url(#section-information-technology_svg__b)"><path d="M35 0H5C2.2 0 0 2.2 0 5s2.2 5 5 5h30c2.8 0 5-2.2 5-5s-2.2-5-5-5m-6.9 7c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m6 0c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m.9 8H5c-2.8 0-5 2.2-5 5s2.2 5 5 5h30c2.8 0 5-2.2 5-5s-2.2-5-5-5m-6.9 7.2c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m6 0c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2M35 30H5c-2.8 0-5 2.2-5 5s2.2 5 5 5h30c2.8 0 5-2.2 5-5s-2.2-5-5-5m-6.9 7.4c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m6 0c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2"/></g></g></svg> 699 Biz & IT 700 </a> 701 </li> 702 <li> 703 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 704 href="https://arstechnica.com/cars/"> 705 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-cars_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-cars_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-cars_svg__a)"><g fill="none" clip-path="url(#section-cars_svg__b)">
705<path fill="currentColor" d="M39.7 23.5c.2-1.2.3-2.3.3-3.5s-.1-2.4-.3-3.5l-1.3-.4c-.1-.6-.3-1.2-.5-1.8l.9-1c-.8-2.3-2-4.3-3.5-6.1l-1.3.3c-.4-.4-.8-.9-1.3-1.3l.3-1.3a20.6 20.6 0 0 0-6.1-3.5l-1 .9c-.6-.2-1.2-.3-1.8-.5L23.7.5C22.4.1 21.2 0 20 0s-2.4.1-3.5.3l-.4 1.3c-.6.1-1.2.3-1.8.5l-1-.9C11 2 9 3.2 7.2 4.7L7.5 6c-.4.4-.9.8-1.3 1.3L4.9 7a20.6 20.6 0 0 0-3.5 6.1l.9 1c-.2.6-.3 1.2-.5 1.8l-1.3.4C.1 17.6 0 18.8 0 20s.1 2.4.3 3.5l1.3.4c.1.6.3 1.2.5 1.8l-.9 1c.8 2.3 2 4.3 3.5 6.1l1.3-.3c.4.4.8.9 1.3 1.3L7 35.1c1.8 1.5 3.9 2.7 6.1 3.5l1-.9c.6.2 1.2.3 1.8.5l.4 1.3c1.1.2 2.3.3 3.5.3s2.4-.1 3.5-.3l.4-1.3c.6-.1 1.2-.3 1.8-.5l1 .9c2.3-.8 4.3-2 6.1-3.5l-.3-1.3c.4-.4.9-.8 1.3-1.3l1.3.3c1.5-1.8 2.7-3.9 3.5-6.1l-.9-1c.2-.6.3-1.2.5-1.8l1.3-.4ZM25.9 8.2c1.3.6 2.4 1.5 3.4 2.5l-3.1 6.2-2.6.9c-.6-.9-1.5-1.6-2.6-1.9v-2.8zM22 19.9c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2M20 6.8q2.1 0 3.9.6L20 11.3l-3.9-3.9q1.8-.6 3.9-.6m-5.9 1.4 4.9 4.9v2.8c-1.1.3-2 .9-2.6 1.9l-2.6-.9-3.1-6.2c1-1 2.2-1.9 3.4-2.5m-4.8 4.2 2.5 4.9-4.9 2.5c0-2.7.9-5.3 2.4-7.4m.2 15.4 5.4-.9.9 5.4c-2.5-.9-4.7-2.5-6.3-4.5m5.7-2.9L8.4 26c-.6-1.2-1.1-2.6-1.3-4.1l6.2-3.1 2.6.9v.3c0 1 .4 2 1 2.7l-1.6 2.2Zm7 8c-.7.1-1.4.2-2.1.2s-1.4 0-2.1-.2l-1.1-6.8 1.6-2.2c.5.2 1 .3 1.6.3s1.1-.1 1.6-.3l1.6 2.2zm2.1-.5.9-5.4 5.4.9c-1.6 2.1-3.7 3.7-6.3 4.5m7.4-6.4-6.8-1.1-1.6-2.2c.6-.7 1-1.7 1-2.7v-.3l2.6-.9 6.2 3.1c-.2 1.4-.7 2.8-1.3 4.1m-3.4-8.7 2.5-4.9c1.5 2.1 2.4 4.6 2.4 7.4z"/></g></g></svg> 706 Cars 707 </a> 708 </li> 709 <li> 710 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 711 href="https://arstechnica.com/culture/"> 712 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-culture_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-culture_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-culture_svg__a)"><g fill="currentColor" clip-path="url(#section-culture_svg__b)"><path d="M19 32v7.1c0 .5.4 1 1 1s1-.4 1-1V32zm2-24V1c0-.6-.5-1-1-1s-1 .4-1 1v7.1h2m-8.3 22.6L9.6 36c-.3.5-.1 1 .3 1.3.5.3 1 .1 1.3-.3l3.3-5.7c-.5-.1-1-.3-1.5-.4-.1 0-.3 0-.4-.1M27.3 9.3 30.4 4c.3-.5.1-1-.3-1.3-.5-.3-1-.1-1.3.3l-3.3 5.7c.5.1 1 .2 1.5.4.1 0 .3 0 .4.1m-21.8 18L3 28.7c-.5.3-.6.8-.3 1.3s.8.6 1.3.3l3.5-2-.9-.6-.9-.6m28.7-14.3 2.6-1.5c.5-.3.6-.8.3-1.3s-.8-.6-1.3-.3l-3.5 2c.3.2.6.3 1 .5zm-9 18.5 3.3 5.7c.3.5.8.6 1.3.3s.6-.8.3-1.3l-3.1-5.3c-.1 0-.3 0-.4.1-.5.2-1 .3-1.5.4M14.6 8.7 11.3 3c-.3-.5-.8-.6-1.3-.3s-.6.8-.3 1.3l3.1 5.3c.1 0 .3 0 .4-.1.5-.2 1-.3 1.5-.4m17.9 19.6 3.5 2c.5.3 1 .1 1.3-.3.3-.5.1-1-.3-1.3l-2.6-1.5-.9.6-.9.6M7.4 11.6l-3.5-2c-.5-.3-1-.1-1.3.3-.3.5-.1 1 .3 1.3l2.6 1.5.9-.6.9-.6m25.2 2.4c-.6-.4-1.3-.7-1.9-1.1-1.3-.7-2.7-1.3-4.3-1.8-.6-.2-1.3-.4-1.9-.5-1.1-.3-2.3-.4-3.4-.5h-2c-1.2 0-2.3.2-3.4.5-.6.1-1.3.3-1.9.5-1.5.5-2.9 1.1-4.3 1.8-.7.3-1.3.7-1.9 1.1C2.9 16.7 0 20 0 20s2.9 3.3 7.5 6.1c.6.4 1.3.7 1.9 1.1 1.3.7 2.7 1.3 4.3 1.8.6.2 1.3.4 1.9.5 1.1.3 2.3.4 3.4.5h2c1.2 0 2.3-.2 3.4-.5.6-.1 1.3-.3 1.9-.5 1.5-.5 2.9-1.1 4.3-1.8.7-.3 1.3-.7 1.9-1.1C37.1 23.3 40 20 40 20s-2.9-3.3-7.5-6.1M20 28c-4.4 0-8-3.6-8-8s3.6-8 8-8 8 3.6 8 8-3.6 8-8 8"/><path d="M25 20c0 2.8-2.2 5-5 5s-5-2.2-5-5 2.2-5 5-5 5 2.2 5 5"/></g></g></svg> 713 Culture 714 </a> 715 </li> 716 <li> 717 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 718 href="https://arstechnica.com/gaming/"> 719 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-gaming_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-gaming_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-gaming_svg__a)"><g fill="none" clip-path="url(#section-gaming_svg__b)">
719<path fill="currentColor" d="M30.7 39.7c-.7-1.1-1.7-1.8-2.5-2.8-.9-1.2 0-2 .8-3 .6-.9 1-1.9.8-3-.6-2.7-3.4-3.3-5.8-3.6-.7-.1-1.8-.2-2.3-.7s-.5-1.4-.5-2.1v-.4l15.5-3.6c2.3-.5 3.7-2.8 3.2-5.1l-2.8-12C36.6 1.1 34.3-.3 32 .2L3.3 6.8C1 7.4-.4 9.7.1 12l2.8 12c.5 2.3 2.8 3.7 5.1 3.2l11.1-2.6c0 1 .2 2.1.7 2.9 1.7 2.7 6 .8 7.6 3.3.8 1.2-.5 2.3-1.1 3.3-.6.9-.9 2-.4 3 .4 1.1 1.4 1.8 2.2 2.6 0 .1.2.2.3.3h2.4c0-.1-.1-.2-.2-.3m.7-28.7c1.3-.3 2.7.5 3 1.9.3 1.3-.5 2.7-1.9 3-1.3.3-2.7-.5-3-1.9-.3-1.3.5-2.7 1.9-3m-6-3.7c1.3-.3 2.7.5 3 1.9.3 1.3-.5 2.7-1.9 3-1.3.3-2.7-.5-3-1.9-.3-1.3.5-2.7 1.9-3m-9.9 13.2-2.7.6-1-4.1-4.1 1-.6-2.7 4.1-1-1-4.1 2.7-.6 1 4.1 4.1-1 .6 2.7-4.1 1z"/></g></g></svg> 720 Gaming 721 </a> 722 </li> 723 <li> 724 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 725 href="https://arstechnica.com/health/"> 726 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-health_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-health_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-health_svg__a)"><g fill="currentColor" clip-path="url(#section-health_svg__b)"><path d="M10.4 21.6c-.4-.4-1-.4-1.4 0l-3.9 3.9c-.4.4-.4 1 0 1.4s1 .4 1.4 0l3.9-3.9c.4-.4.4-1 0-1.4"/><path d="M40 10.6c0-2.7-1-5.4-3.1-7.5C33.8 0 29.2-.8 25.4.8c-1.3.5-2.5 1.3-3.5 2.3L3.1 21.9c-4.2 4.2-4.2 10.9 0 15C5.2 39 7.9 40 10.6 40s5.4-1 7.5-3.1l18.7-18.7c2.1-2.1 3.1-4.8 3.1-7.5m-6.6-4c-.4-.4-.4-1 0-1.4s1-.4 1.4 0c3 3 3 7.8 0 10.8L26 24.8c-.4.4-1 .4-1.4 0s-.4-1 0-1.4l8.7-8.7c2.2-2.2 2.2-5.8 0-8M10.6 38.1c-2.3 0-4.5-.9-6.1-2.5-3.4-3.4-3.4-8.8 0-12.2l7.6-7.6c.6 2.1 2.3 4.9 4.8 7.4s5.2 4.2 7.4 4.8l-7.6 7.6c-1.6 1.6-3.8 2.5-6.1 2.5"/></g></g></svg> 727 Health 728 </a> 729 </li> 730 <li> 731 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 732 href="https://arstechnica.com/tech-policy/"> 733 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-tech-policy_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-tech-policy_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-tech-policy_svg__a)"><path fill="currentColor" d="M12.8 0 6.4 6.4 0 12.8l4 1.4L14.2 4z"/><g clip-path="url(#section-tech-policy_svg__b)"><path fill="currentColor" d="M34.8 31.7c-4.4-10.4-6.1-23.6-6.1-23.6L15.4 5.4l-9.9 10 2.7 13.3s13.2 1.6 23.6 6.1c-.4 1.4 0 2.9 1.1 4 1.4 1.4 3.6 1.6 5.2.6L18.5 19.8c-1.6 1-3.8.8-5.2-.6-1.6-1.6-1.6-4.3 0-5.9s4.3-1.6 5.9 0c1.4 1.4 1.6 3.6.6 5.2L39.3 38c1-1.6.8-3.8-.6-5.2-1.1-1.1-2.6-1.4-4-1.1"/></g></g></svg> 734 Policy 735 </a> 736 </li> 737 <li> 738 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 739 href="https://arstechnica.com/science/"> 740 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-science_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-science_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-science_svg__a)"><g fill="none" clip-path="url(#section-science_svg__b)"><path fill="currentColor" d="M39.6 34.5 28 14.6V4h1.1c.5 0 .9-.4.9-.9V.9c0-.5-.4-.9-.9-.9H10.9c-.5 0-.9.4-.9.9V3c0 .5.4.9.9.9H12v10.6L.4 34.5C-.9 37 .8 40 3.6 40h32.8c2.7 0 4.5-3 3.2-5.5M21.9 13.2c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m-5-6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2M4.1 36l6-10.3c.2-.3.5-.5.8-.5H13c-.1-.3-.2-.6-.2-1 0-1.7 1.3-3 3-3s3 1.3 3 3 0 .7-.2 1h4.2c0-1.1.9-2 2-2s2 .9 2 2h2.1c.3 0 .6.2.8.5l6 10.3H4.2Z"/></g></g></svg> 741 Science 742 </a> 743 </li> 744 <li> 745 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 746 href="https://arstechnica.com/security/"> 747 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-security_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-security_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-security_svg__a)"><g fill="none" clip-path="url(#section-security_svg__b)">
747<path fill="currentColor" d="M37.7 21.1C39.7 10.4 32.8 0 20.8 0h-1.6C7.2 0 .3 10.4 2.3 21.1c.5 2.6-2.3 3.5-2.3 6.6 0 3.2 3.5 4 5.9 4.1h2.8c1.3 0 1.8.5 1.8 1.6 0 1.5.2 4.1.3 5.6 0 .2.7.4 1.9.5v-3.4c0-.4.3-.8.7-.8s.8.3.8.8v3.5c.9 0 1.8.1 2.9.1v-3.6c0-.4.3-.8.8-.8s.8.3.8.8v3.7h2.9v-3.7c0-.4.3-.8.8-.8s.8.3.8.8v3.6c1 0 2 0 2.9-.1v-3.5c0-.4.3-.8.8-.8s.8.3.8.8v3.4c1.1-.1 1.8-.3 1.9-.5.1-1.5.3-4.1.3-5.6 0-1.1.5-1.7 1.8-1.6h2.8c2.4-.1 5.9-.9 5.9-4.1 0-3.1-2.8-4-2.3-6.7m-26.7 4.7c-4 0-6.6-4-4.9-7.2 1.1-2 3.1-3.2 5.2-3.7 4.1-.9 7.6 2.9 6.7 6.6-.7 2.7-3.5 3.9-7 4.2m8.6 2.1-1 3c-.2.5-.7.8-1.1.6s-.7-.8-.5-1.3l.9-3c.2-.5.7-.8 1.1-.6s.7.8.5 1.3m2.8 3.6c-.4.2-.9 0-1.1-.6l-1-3c-.2-.5 0-1.1.5-1.3.4-.2.9 0 1.1.6l.9 3c.2.5 0 1.1-.5 1.3m6.6-5.7c-3.5-.4-6.3-1.5-7-4.2-.9-3.7 2.6-7.6 6.7-6.6 2.1.5 4.1 1.7 5.2 3.7 1.8 3.2-.9 7.2-4.9 7.2"/></g></g></svg> 748 Security 749 </a> 750 </li> 751 <li> 752 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 753 href="https://arstechnica.com/space/"> 754 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-space_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-space_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-space_svg__a)"><g fill="currentColor" clip-path="url(#section-space_svg__b)"><path d="M32.9 13.1c-2.5-4.7-7.5-7.8-13.2-7.8-8.3 0-15 6.7-15 15s3.1 10.6 7.7 13.1c3.1-2.5 6.9-5.8 11-10 3.9-3.9 7-7.4 9.4-10.3M14.4 34.3c1.6.6 3.4 1 5.2 1 8.3 0 15-6.7 15-15s-.3-3.5-.9-5.2c-2.5 3-5.5 6.4-8.9 9.7-3.6 3.6-7.2 6.9-10.4 9.5"/><path d="M28.5 5.8c.6.4 1.2.8 1.7 1.2 3.5-2.7 6.1-4.2 7.6-4.8-.5 1.4-2.1 4.1-4.8 7.6-2.6 3.4-6.2 7.5-10.9 12.3s-9.6 8.9-13 11.5c-3.2 2.4-5.5 3.7-6.9 4.2.5-1.3 1.9-3.7 4.2-6.9-.4-.5-.8-1.1-1.2-1.7-4 5.4-6 9.4-4.9 10.5s5.1-.9 10.5-4.9c3.8-2.9 8.2-6.8 12.7-11.3s7.9-8.4 10.7-12c4.4-5.7 6.7-10 5.5-11.2s-5.5 1.1-11.2 5.5"/></g></g></svg> 755 Space 756 </a> 757 </li> 758 <li> 759 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 760 href="https://arstechnica.com/gadgets/"> 761 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-gadgets_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-gadgets_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-gadgets_svg__a)"><g fill="currentColor" clip-path="url(#section-gadgets_svg__b)"><path d="M38 22c1.1 0 2-.9 2-2s-.9-2-2-2h-2v-6h2c1.1 0 2-.9 2-2s-.9-2-2-2h-2V4h-4V2c0-1.1-.9-2-2-2s-2 .9-2 2v2h-6V2c0-1.1-.9-2-2-2s-2 .9-2 2v2h-6V2c0-1.1-.9-2-2-2S8 .9 8 2v2H4v4H2c-1.1 0-2 .9-2 2s.9 2 2 2h2v6H2c-1.1 0-2 .9-2 2s.9 2 2 2h2v6H2c-1.1 0-2 .9-2 2s.9 2 2 2h2v4h4v2c0 1.1.9 2 2 2s2-.9 2-2v-2h6v2c0 1.1.9 2 2 2s2-.9 2-2v-2h6v2c0 1.1.9 2 2 2s2-.9 2-2v-2h4v-4h2c1.1 0 2-.9 2-2s-.9-2-2-2h-2v-6zm-6 10H8V8h24z"/><path d="M24.7 17.3 20 12h-7.1c-.6 0-1 .4-1 1s.4 1 1 1h6.3l4.1 4.7L20 22h8v-8z"/><path d="m15.2 22.7 4.7 5.3H27c.6 0 1-.4 1-1s-.4-1-1-1h-6.3l-4.1-4.7 3.3-3.3h-8v8z"/></g></g></svg> 762 Tech 763 </a> 764 </li> 765 </ul> 766 767 768 <div class="mx-3 h-[1px] bg-gray-400"></div> 769 770 771 <ul class="my-3 grid grid-cols-2 sm:grid-cols-1"> 772 <li> 773 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 774 href="/features/"> 775 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 37.8"><defs><clipPath id="star_svg__a"><path fill="none" d="M0 0h40v37.8H0z"/></clipPath></defs><g fill="none" clip-path="url(#star_svg__a)">
775<path fill="currentColor" d="m20 0-6.2 12.4-13.8 2L10 24 7.6 37.8 20 31.3l12.4 6.5L30 24l10-9.6-13.8-2z"/></g></svg> 776 Feature 777 </a> 778 </li> 779 <li> 780 <a class="group flex flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 781 href="/reviews/"> 782 <svg class="mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-reviews_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-reviews_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-reviews_svg__a)"><g fill="currentColor" clip-path="url(#section-reviews_svg__b)"><path d="M19.3 9.4V16l4.7 4.7h6.6l4.7-4.7V9.4l-4.7-4.7H24zm10.8.5c1.6 1.6 1.6 4.1 0 5.7s-4.1 1.6-5.7 0-1.6-4.1 0-5.7 4.1-1.6 5.7 0"/><path d="M31.4 22.7h-8.3l-5.9-5.9V8.5L25.9 0H12L6.9 5.1V19L0 25.9C0 33.7 6.3 40 14.1 40l6.9-6.9h13.9L40 28V14.1z"/></g></g></svg> 783 Reviews 784 </a> 785 </li> 786 </ul> 787 </nav> 788 </div> 789 </div> 790</div> 791 792 793 794 <ul class="xxl:flex hidden gap-4 text-sm"> 795 <li> 796 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/ai/"> 797 AI 798 </a> 799 </li> 800 <li> 801 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/information-technology/"> 802 Biz & IT 803 </a> 804 </li> 805 <li> 806 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/cars/"> 807 Cars 808 </a> 809 </li> 810 <li> 811 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/culture/"> 812 Culture 813 </a> 814 </li> 815 <li> 816 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/gaming/"> 817 Gaming 818 </a> 819 </li> 820 <li> 821 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/health/"> 822 Health 823 </a> 824 </li> 825 <li> 826 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/tech-policy/"> 827 Policy 828 </a> 829 </li> 830 <li> 831 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/science/"> 832 Science 833 </a> 834 </li> 835 <li> 836 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/security/"> 837 Security 838 </a> 839 </li> 840 <li> 841 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/space/"> 842 Space 843 </a> 844 </li> 845 <li> 846 <a class="text-gray-250 hover:text-green-400 focus:text-green-400" href="https://arstechnica.com/gadgets/"> 847 Tech 848 </a> 849 </li> 850 </ul> 851 852 853 <a class="hidden text-green-400 sm:block xl:text-sm" href="/civis/"> 854 Forum 855 </a> 856 857 858 <div class="hidden h-5 w-[1px] bg-gray-400 lg:block"></div> 859 860 <a class="hidden text-orange-400 lg:block xl:text-sm" href="/subscribe/"> 861 Subscribe 862 </a> 863 864 865 <div class="h-5 w-[1px] bg-gray-400"></div> 866 867 868 <div class="text-settings-dropdown-nav"> 869 <div x-data="arsDropdown()" @keydown.escape.prevent.stop="close($refs.button)" 870 @focusin.window="! $refs.panel.contains($event.target) && close()" x-id="['dropdown-button']"> 871 872 <!-- Button --> 873 <button type="button" x-ref="button" 874 x-on:click=" 875 toggle(); 876 $dispatch('dropdown-opened', { panel: $refs.panel }); 877 " 878 :aria-expanded="open" :aria-controls="$id('dropdown-button')" :class="{ selected: open }"
879 class="group flex items-center group" arial-label="" aria-label="Open text settings dropdown"> 880 <svg class="h-5 w-5 text-gray-300 group-hover:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="text-settings-open_svg__a"><path fill="none" stroke-width="0" d="M0 0h40v40H0z"/></clipPath><clipPath id="text-settings-open_svg__b"><path fill="none" stroke-width="0" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#text-settings-open_svg__a)"><g fill="currentColor" clip-path="url(#text-settings-open_svg__b)"><path d="M26.38 23.2c-.19.21-.28.49-.28.85v.58c0 .4.11.72.34.93.23.22.59.33 1.09.33.42 0 .88-.09 1.37-.27q.735-.27 1.47-.75c.06-.04.11-.09.17-.13v-1.87h-3.23q-.66.015-.93.33"/><path d="M32 0H8C3.58 0 0 3.58 0 8v24.01C0 36.42 3.58 40 8 40h24c4.42 0 8-3.58 8-8V8c0-4.42-3.58-8-8-8M17.88 28.23l-1.23-4.42h-5.77l-1.23 4.42H5.84l4.88-15.77a1.316 1.316 0 0 1 1.28-.97h3.52q.465 0 .81.27c.23.18.39.41.47.7l4.85 15.77h-3.79Zm16.28 0H31.3l-.38-1.92c-.27.33-.59.65-.98.96-.44.35-.95.64-1.53.89-.58.24-1.25.36-1.99.36s-1.38-.13-1.97-.39q-.87-.39-1.38-1.14c-.34-.5-.51-1.12-.51-1.87v-1.24c0-.95.32-1.7.97-2.23s1.54-.8 2.67-.8h4.34v-.56c0-.57-.13-.98-.4-1.24s-.77-.39-1.52-.39c-.61 0-1.38.02-2.3.06s-1.87.09-2.84.16l-.34-2.38c.58-.11 1.25-.21 2.02-.29q1.14-.12 2.28-.21t2.04-.09c1 0 1.85.13 2.55.4.69.27 1.22.72 1.59 1.36.36.64.55 1.52.55 2.63v7.91Z"/><path d="M14.26 15.09c-.06-.28-.12-.55-.17-.81h-.65c-.05.26-.1.53-.16.81s-.12.56-.21.84l-1.42 5.1h4.22l-1.42-5.1c-.07-.27-.13-.55-.19-.84"/></g></g></svg> 881 </button> 882 883 <!-- Panel --> 884 <div x-cloak x-ref="panel" x-show="open" x-transition.origin.top.center x-on:click.outside="close()" 885 :id="$id('dropdown-button')" class="absolute overflow-hidden z-50 bg-gray-550 absolute right-0 top-14 mt-[1px] min-w-[200px] rounded-sm md:top-10"> 886 <div class="text-settings"> 887 <div class="text-settings-menu bg-gray-550 w-60"> 888 <div class="flex items-center bg-gray-600 px-5 py-2"> 889 <span class="font-impact text-gray-350 text-base font-semibold uppercase">Story text</span> 890 </div> 891 892 <div class="grid grid-cols-3 items-center gap-3 px-5 py-2"> 893 <label class="font-impact w-20 text-base font-semibold uppercase text-gray-100" for="text-settings-size">Size</label> 894<select name="text-settings-size" class="text-settings-size col-span-2 bg-gray-600 text-sm text-gray-300"> 895 <option value="small">Small</option> 896 <option value="standard" selected>Standard</option> 897 <option value="large">Large</option> 898</select> 899 900 901<label class="font-impact hidden w-20 text-base font-semibold uppercase text-gray-100 md:block" 902 for="text-settings-width">Width 903 <span class="text-gray-400">*</span> 904 </label> 905<select name="text-settings-width" 906 class="text-settings-width col-span-2 hidden bg-gray-600 text-sm text-gray-300 md:block"> 907 <option value="standard" selected>Standard</option> 908 <option value="wide">Wide</option> 909</select> 910 911 912<label class="font-impact w-20 text-base font-semibold uppercase text-gray-100" for="text-settings-links">Links</label> 913<select name="text-settings-links" class="text-settings-links col-span-2 bg-gray-600 text-sm text-gray-300"> 914 <option value="standard" selected>Standard</option> 915 <option value="orange">Orange</option> 916</select> 917 918 919 <div class="font-impact col-span-3 hidden text-sm font-semibold uppercase text-gray-400 md:block"> 920 <span class="mb-0 italic">* Subscribers only</span><br> 921 <a href="/store/product/subscriptions/" class="text-green-400">Learn more</a> 922 </div> 923 924 925 <button 926 class="font-impact text-settings-position col-span-3 mx-auto my-3 block rounded-sm border-2 border-green-400 px-3 py-1 text-base font-semibold uppercase text-gray-100" 927 value="story"> 928 Pin to story 929 </button> 930 </div> 931 </div> 932 </div> 933 </div> 934 </div> 935</div> 936 937 938 <div class=""> 939 <div x-data="arsDropdown()" @keydown.escape.prevent.stop="close($refs.button)" 940 @focusin.window="! $refs.panel.contains($event.target) && close()" x-id="['dropdown-button']"> 941 942 <!-- Button --> 943 <button type="button" x-ref="button" 944 x-on:click=" 945 toggle();
946 $dispatch('dropdown-opened', { panel: $refs.panel }); 947 " 948 :aria-expanded="open" :aria-controls="$id('dropdown-button')" :class="{ selected: open }" 949 class="group flex items-center theme-selection-active group" arial-label="" aria-label="Open Theme selection dropdown"> 950 <span class="sr-only">Theme</span> 951 952 <svg class="theme-selection-active-dark hidden h-5 w-5 text-yellow-100 group-hover:text-yellow-200" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38.4 38.4"><defs><clipPath id="theme-dark_svg__a"><path fill="none" d="M0 0h38.4v38.4H0z"/></clipPath><clipPath id="theme-dark_svg__b"><path fill="none" d="M0 0h38.4v38.4H0z"/></clipPath></defs><g clip-path="url(#theme-dark_svg__a)"><g fill="currentColor" clip-path="url(#theme-dark_svg__b)"><path d="M14.5 11.4c0-4.3 1.4-8.2 3.7-11.4C8.8 1.3 1.6 9.3 1.6 19.1s8.6 19.3 19.3 19.3 12.1-3.1 15.6-7.9c-.9.1-1.8.2-2.7.2-10.7 0-19.3-8.6-19.3-19.3m17.8-6.8v2.1c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4V4.6c0-.8.6-1.4 1.4-1.4s1.4.6 1.4 1.4m0 6.8v2.1c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4v-2.1c0-.8.6-1.4 1.4-1.4s1.4.6 1.4 1.4m-5.8-3.7h2.1c.8 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4h-2.1c-.8 0-1.4-.6-1.4-1.4s.6-1.4 1.4-1.4m6.8 0h2.1c.8 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4h-2.1c-.8 0-1.4-.6-1.4-1.4s.6-1.4 1.4-1.4"/></g></g></svg> 953 <svg class="theme-selection-active-dusk hidden h-5 w-5 text-yellow-400 group-hover:text-yellow-200" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38.18 40"><defs><clipPath id="theme-dusk_svg__a"><path fill="none" d="M0 0h38.18v40H0z"/></clipPath><clipPath id="theme-dusk_svg__b"><path fill="none" d="M0 0h38.18v40H0z"/></clipPath></defs><g clip-path="url(#theme-dusk_svg__a)"><g fill="currentColor" clip-path="url(#theme-dusk_svg__b)"><path d="M19.09 5.86C11.28 5.86 4.95 12.19 4.95 20s6.33 14.14 14.14 14.14S33.23 27.81 33.23 20 26.9 5.86 19.09 5.86m0 26.28C12.4 32.14 6.95 26.69 6.95 20c0-6.13 4.57-11.2 10.48-12.01a12.07 12.07 0 0 0-2.63 7.52c0 6.7 5.45 12.14 12.14 12.14.56 0 1.11-.05 1.66-.13-2.23 2.81-5.66 4.62-9.52 4.62m1.43-30.72v2.17c0 .78-.63 1.42-1.42 1.42s-1.42-.63-1.42-1.42V1.42a1.419 1.419 0 1 1 2.84 0M9.31 4.13l1.27 1.75c.46.63.32 1.52-.31 1.98s-1.52.32-1.98-.31L7.02 5.8a1.42 1.42 0 0 1 .31-1.98 1.42 1.42 0 0 1 1.98.31m-7.45 8.78 2.06.67c.74.24 1.15 1.04.91 1.79s-1.04 1.15-1.79.91l-2.06-.67a1.417 1.417 0 0 1-.91-1.78c.24-.74 1.04-1.15 1.79-.91M.98 24.39l2.06-.67c.74-.24 1.54.16 1.79.91.24.74-.17 1.54-.91 1.78l-2.06.67a1.42 1.42 0 0 1-1.79-.91c-.24-.74.17-1.54.91-1.79m6.04 9.82 1.27-1.75a1.42 1.42 0 0 1 1.98-.31c.63.46.77 1.35.31 1.98l-1.27 1.75c-.46.63-1.35.77-1.98.31a1.42 1.42 0 0 1-.31-1.98m10.65 4.38v-2.16c0-.78.63-1.42 1.42-1.42s1.42.63 1.42 1.42v2.16c0 .78-.63 1.42-1.42 1.42s-1.42-.63-1.42-1.42m11.2-2.71-1.27-1.75a1.42 1.42 0 0 1 .31-1.98 1.42 1.42 0 0 1 1.98.31l1.27 1.75c.46.63.32 1.52-.31 1.98s-1.52.32-1.98-.31m7.46-8.78-2.06-.67a1.424 1.424 0 0 1-.91-1.79c.24-.74 1.04-1.15 1.79-.91l2.06.67c.74.24 1.15 1.04.91 1.78s-1.04 1.15-1.79.91m.87-11.47-2.06.67c-.74.24-1.54-.17-1.79-.91-.24-.74.17-1.54.91-1.78l2.06-.67c.74-.24 1.54.16 1.79.91.24.74-.17 1.54-.91 1.79M31.16 5.8l-1.27 1.75c-.46.63-1.34.77-1.98.31a1.42 1.42 0 0 1-.31-1.98l1.27-1.75a1.42 1.42 0 0 1 1.98-.31c.63.46.77 1.35.31 1.98"/></g></g></svg> 954 <svg class="theme-selection-active-light hidden h-5 w-5 text-yellow-400 group-hover:text-yellow-200" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="theme-light_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="theme-light_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#theme-light_svg__a)"><g fill="currentColor" clip-path="url(#theme-light_svg__b)"><path d="M30 20c0 5.5-4.5 10-10 10s-10-4.5-10-10 4.5-10 10-10 10 4.5 10 10m8.6 1.4h-2.2c-.8 0-1.4-.6-1.4-1.4s.6-1.4 1.4-1.4h2.2c.8 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4M34.1 7.9l-1.5 1.5c-.6.6-1.5.6-2 0-.6-.6-.6-1.5 0-2l1.5-1.5c.6-.6 1.5-.6 2 0 .6.6.6 1.5 0 2M21.4 1.4v2.2c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4V1.4c0-.8.6-1.4 1.4-1.4s1.4.6 1.4 1.4M7.9 5.9l1.5 1.5c.6.6.6 1.5 0 2-.6.6-1.5.6-2 0L5.9 7.9c-.6-.6-.6-1.5 0-2 .6-.6 1.5-.6 2 0M1.4 18.6h2.2c.8 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4H1.4C.6 21.4 0 20.8 0 20s.6-1.4 1.4-1.4m4.5 13.5 1.5-1.5c.6-.6 1.4-.6 2 0s.6 1.5 0 2l-1.5 1.5c-.6.6-1.5.6-2 0-.6-.6-.6-1.5 0-2m12.7 6.5v-2.2c0-.8.6-1.4 1.4-1.4s1.4.6 1.4 1.4v2.2c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4m13.5-4.5-1.5-1.5c-.6-.6-.6-1.4 0-2s1.5-.6 2 0l1.5 1.5c.6.6.6 1.5 0 2-.6.6-1.5.6-2 0"/></g></g></svg> 955 </button> 956 957 <!-- Panel --> 958 <div x-cloak x-ref="panel" x-show="open" x-transition.origin.top.center x-on:click.outside="close()" 959 :id="$id('dropdown-button')" class="absolute overflow-hidden z-50 bg-gray-550 absolute right-0 top-14 mt-[1px] min-w-[200px] rounded-sm py-3 md:top-10"> 960 <nav> 961 <ul class="theme-selection-dropdown"> 962 <li 963 class="theme-selection-item group flex w-full cursor-pointer flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 964 data-theme="light" 965 data-selected="false"> 966 <svg class="theme-selection-icon mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-inherit" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="theme-light_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="theme-light_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#theme-light_svg__a)"><g fill="currentColor" clip-path="url(#theme-light_svg__b)"><path d="M30 20c0 5.5-4.5 10-10 10s-10-4.5-10-10 4.5-10 10-10 10 4.5 10 10m8.6 1.4h-2.2c-.8 0-1.4-.6-1.4-1.4s.6-1.4 1.4-1.4h2.2c.8 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4M34.1 7.9l-1.5 1.5c-.6.6-1.5.6-2 0-.6-.6-.6-1.5 0-2l1.5-1.5c.6-.6 1.5-.6 2 0 .6.6.6 1.5 0 2M21.4 1.4v2.2c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4V1.4c0-.8.6-1.4 1.4-1.4s1.4.6 1.4 1.4M7.9 5.9l1.5 1.5c.6.6.6 1.5 0 2-.6.6-1.5.6-2 0L5.9 7.9c-.
9666-.6-.6-1.5 0-2 .6-.6 1.5-.6 2 0M1.4 18.6h2.2c.8 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4H1.4C.6 21.4 0 20.8 0 20s.6-1.4 1.4-1.4m4.5 13.5 1.5-1.5c.6-.6 1.4-.6 2 0s.6 1.5 0 2l-1.5 1.5c-.6.6-1.5.6-2 0-.6-.6-.6-1.5 0-2m12.7 6.5v-2.2c0-.8.6-1.4 1.4-1.4s1.4.6 1.4 1.4v2.2c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4m13.5-4.5-1.5-1.5c-.6-.6-.6-1.4 0-2s1.5-.6 2 0l1.5 1.5c.6.6.6 1.5 0 2-.6.6-1.5.6-2 0"/></g></g></svg> 967 HyperLight 968 </li> 969 <li 970 class="theme-selection-item group flex w-full cursor-pointer flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 971 data-theme="dusk" 972 data-selected="false"> 973 <svg class="theme-selection-icon mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-inherit" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38.18 40"><defs><clipPath id="theme-dusk_svg__a"><path fill="none" d="M0 0h38.18v40H0z"/></clipPath><clipPath id="theme-dusk_svg__b"><path fill="none" d="M0 0h38.18v40H0z"/></clipPath></defs><g clip-path="url(#theme-dusk_svg__a)"><g fill="currentColor" clip-path="url(#theme-dusk_svg__b)"><path d="M19.09 5.86C11.28 5.86 4.95 12.19 4.95 20s6.33 14.14 14.14 14.14S33.23 27.81 33.23 20 26.9 5.86 19.09 5.86m0 26.28C12.4 32.14 6.95 26.69 6.95 20c0-6.13 4.57-11.2 10.48-12.01a12.07 12.07 0 0 0-2.63 7.52c0 6.7 5.45 12.14 12.14 12.14.56 0 1.11-.05 1.66-.13-2.23 2.81-5.66 4.62-9.52 4.62m1.43-30.72v2.17c0 .78-.63 1.42-1.42 1.42s-1.42-.63-1.42-1.42V1.42a1.419 1.419 0 1 1 2.84 0M9.31 4.13l1.27 1.75c.46.63.32 1.52-.31 1.98s-1.52.32-1.98-.31L7.02 5.8a1.42 1.42 0 0 1 .31-1.98 1.42 1.42 0 0 1 1.98.31m-7.45 8.78 2.06.67c.74.24 1.15 1.04.91 1.79s-1.04 1.15-1.79.91l-2.06-.67a1.417 1.417 0 0 1-.91-1.78c.24-.74 1.04-1.15 1.79-.91M.98 24.39l2.06-.67c.74-.24 1.54.16 1.79.91.24.74-.17 1.54-.91 1.78l-2.06.67a1.42 1.42 0 0 1-1.79-.91c-.24-.74.17-1.54.91-1.79m6.04 9.82 1.27-1.75a1.42 1.42 0 0 1 1.98-.31c.63.46.77 1.35.31 1.98l-1.27 1.75c-.46.63-1.35.77-1.98.31a1.42 1.42 0 0 1-.31-1.98m10.65 4.38v-2.16c0-.78.63-1.42 1.42-1.42s1.42.63 1.42 1.42v2.16c0 .78-.63 1.42-1.42 1.42s-1.42-.63-1.42-1.42m11.2-2.71-1.27-1.75a1.42 1.42 0 0 1 .31-1.98 1.42 1.42 0 0 1 1.98.31l1.27 1.75c.46.63.32 1.52-.31 1.98s-1.52.32-1.98-.31m7.46-8.78-2.06-.67a1.424 1.424 0 0 1-.91-1.79c.24-.74 1.04-1.15 1.79-.91l2.06.67c.74.24 1.15 1.04.91 1.78s-1.04 1.15-1.79.91m.87-11.47-2.06.67c-.74.24-1.54-.17-1.79-.91-.24-.74.17-1.54.91-1.78l2.06-.67c.74-.24 1.54.16 1.79.91.24.74-.17 1.54-.91 1.79M31.16 5.8l-1.27 1.75c-.46.63-1.34.77-1.98.31a1.42 1.42 0 0 1-.31-1.98l1.27-1.75a1.42 1.42 0 0 1 1.98-.31c.63.46.77 1.35.31 1.98"/></g></g></svg> 974 Day & Night 975 </li> 976 <li 977 class="theme-selection-item group flex w-full cursor-pointer flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 978 data-theme="dark" 979 data-selected="false"> 980 <svg class="theme-selection-icon mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-inherit" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38.4 38.4"><defs><clipPath id="theme-dark_svg__a"><path fill="none" d="M0 0h38.4v38.4H0z"/></clipPath><clipPath id="theme-dark_svg__b"><path fill="none" d="M0 0h38.4v38.4H0z"/></clipPath></defs><g clip-path="url(#theme-dark_svg__a)"><g fill="currentColor" clip-path="url(#theme-dark_svg__b)"><path d="M14.5 11.4c0-4.3 1.4-8.2 3.7-11.4C8.8 1.3 1.6 9.3 1.6 19.1s8.6 19.3 19.3 19.3 12.1-3.1 15.6-7.9c-.9.1-1.8.2-2.7.2-10.7 0-19.3-8.6-19.3-19.3m17.8-6.8v2.1c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4V4.6c0-.8.6-1.4 1.4-1.4s1.4.6 1.4 1.4m0 6.8v2.1c0 .8-.6 1.4-1.4 1.4s-1.4-.6-1.4-1.4v-2.1c0-.8.6-1.4 1.4-1.4s1.4.6 1.4 1.4m-5.8-3.7h2.1c.8 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4h-2.1c-.8 0-1.4-.6-1.4-1.4s.6-1.4 1.4-1.4m6.8 0h2.1c.8 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4h-2.1c-.8 0-1.4-.6-1.4-1.4s.6-1.4 1.4-1.4"/></g></g></svg> 981 Dark 982 </li> 983 <li 984 class="theme-selection-item group flex w-full cursor-pointer flex-row items-center px-5 py-2 text-gray-300 hover:bg-gray-700 hover:text-green-400 focus:bg-gray-700 focus:text-green-400" 985 data-theme="system" 986 data-selected="true"> 987 <svg class="theme-selection-icon mr-2 inline-block h-5 w-5 text-gray-100 group-hover:text-green-400 group-focus:text-inherit" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="theme-system_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="theme-system_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#theme-system_svg__a)"><g clip-path="url(#theme-system_svg__b)">
987<path fill="currentColor" d="M20 0C8.95 0 0 8.95 0 20s8.95 20 20 20 20-8.95 20-20S31.05 0 20 0m0 38V2c9.92 0 18 8.08 18 18s-8.08 18-18 18"/></g></g></svg> 988 System 989 </li> 990 </ul> 991 </nav> 992 </div> 993 </div> 994</div> 995 996 997 998 <a class="flex flex-row flex-nowrap items-center gap-2 text-gray-300 hover:text-gray-100 focus:text-gray-100" 999 href="/search/" title="Search" aria-label="Open search page"> 1000 <svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="magnify_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="magnify_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#magnify_svg__a)"><g fill="none" clip-path="url(#magnify_svg__b)"><path fill="currentColor" d="M39.2 35.4 29 25.2c4.4-6.2 3.9-15-1.7-20.6C24.2 1.6 20.1 0 16 0S7.8 1.6 4.7 4.7c-6.2 6.2-6.2 16.4 0 22.6C7.8 30.4 11.9 32 16 32s6.5-1 9.3-3l10.2 10.2c.5.5 1.2.8 1.9.8s1.4-.3 1.9-.8c1-1 1-2.7 0-3.8M8.5 23.5c-2-2-3.1-4.7-3.1-7.5s1.1-5.5 3.1-7.5 4.7-3.1 7.5-3.1 5.5 1.1 7.5 3.1c4.2 4.2 4.2 10.9 0 15.1-2 2-4.7 3.1-7.5 3.1s-5.5-1.1-7.5-3.1"/></g></g></svg> 1001 <span class="sr-only">Search</span> 1002 </a> 1003 1004 1005 1006 1007 1008 1009 <div class="h-5 w-[1px] bg-gray-400"></div> 1010 1011 1012 1013 <div class="flex md:justify-center" data-modal-id="sign-in" x-data="arsModal()"> 1014 1015 <button type="button" aria-label="Sign in dialog..." class="whitespace-nowrap text-gray-300 hover:text-gray-100" aria-label="Open sign in dialog" x-on:click="show()"> 1016 Sign In 1017 </button> 1018 1019 1020 <template x-teleport="body"> 1021 <div class="fixed inset-0 z-[99999] overflow-y-auto" role="dialog" aria-modal="true" x-cloak x-show="open" 1022 x-on:keydown.escape.window.prevent.stop="hide()" x-id="['modal-title']" x-ref="panel" 1023 :aria-labelledby="$id('modal-title')"> 1024 1025 1026 <div class="fixed inset-0 bg-slate-900/80 opacity-100 backdrop-blur" x-show="open" x-transition.duration.150ms> 1027 </div> 1028 1029 1030 <div class="relative flex min-h-screen items-center justify-center" x-on:click="hide()" x-show="open" 1031 x-transition.duration.150ms> 1032 <div x-on:click.stop x-trap.noscroll.inert="open"> 1033 1034 <span class="sr-only" :id="$id('modal-title')"> 1035 Sign in dialog... 1036 </span> 1037 1038 1039 <div 1040 class="sign-in-panel absolute left-1/2 top-1/2 w-3/4 min-w-[320px] max-w-xl -translate-x-1/2 -translate-y-1/2" 1041> 1042 1043 <header 1044 class="font-impact flex items-center justify-between bg-gray-600 px-7 py-4 font-semibold uppercase" 1045 > 1046 <div class="text-gray-350 flex items-center gap-3"> 1047 <svg class="h-3 w-3 text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="arrow-blocks-right_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g fill="currentColor" clip-path="url(#arrow-blocks-right_svg__a)"><path d="M32 16h8v8h-8zm-8 8h8v8h-8zm-8 8h8v8h-8zm8-24h8v8h-8zm-8-8h8v8h-8zM0 16h16v8H0z"/></g></svg> 1048 Sign in 1049 </div> 1050 <button 1051 class="text-gray-300 hover:text-gray-100 focus:text-gray-100" 1052 x-on:click="open = false" 1053 > 1054 <svg class="h-3 w-3" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34.7 40"><defs><clipPath id="x_svg__a"><path fill="none" d="M0 0h34.7v40H0z"/></clipPath></defs><g fill="none" clip-path="url(#x_svg__a)"><path fill="currentColor" d="m26.4 0-8.5 16.9h-1.1L8.3 0H.8l10.1 19.4L0 40h7.6l9.2-18.3h1.1L27.1 40h7.6L23.8 19.4 33.9 0z"/></g></svg> 1055 </button> 1056 </header> 1057 1058 1059 <div class="sign-in-panel-body bg-gray-700 px-7 py-4"> 1060 1061 1062 <div 1063 class="col-span-3 normal-case text-gray-300" 1064 x-data="arsSignInPanel()" 1065 x-on:modal-opened.window="onModalOpened($event)" 1066 > 1067 <div class="sign-in-form" x-ref="form"></div> 1068 </div> 1069 </div> 1070 1071</div> 1072 </div> 1073 </div> 1074 </div> 1075 </template> 1076</div> 1077 1078 </div> 1079</header> 1080 1081<main class="main relative -mt-4 lg:mt-6" id="main"> 1082 <article class="double-column h-entry post-2173029 post type-post status-publish format-standard has-post-thumbnail hentry category-ai category-gadgets tag-dyson tag-enshittification tag-syndication tag-toothbrush" data-id="2173029"> 1083 1084 <header> 1085 <div class="dusk:bg-gray-700 my-4 bg-gray-100 pt-2 md:mt-10 md:pt-5 lg:pb-2 lg:pt-7 dark:bg-gray-700"> 1086 <div class="mx-auto grid-cols-2 gap-8 md:px-5 lg:grid lg:max-w-5xl lg:px-8 xl:px-0"> 1087 <div class=""> 1088 <div class="mb-1 px-[15px] sm:px-5 md:px-0"> 1089 <div 1090 class="upper-deck font-impact text-green-450 dusk:text-green-400 inline-flex flex-row flex-nowrap items-center gap-2 text-left text-sm font-semibold uppercase leading-tight dark:text-green-400"> 1091 <span class="upper-deck__icon"> 1092 <svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="section-gadgets_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="section-gadgets_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#section-gadgets_svg__a)"><g fill="currentColor" clip-path="url(#section-gadgets_svg__b)"><path d="M38 22c1.1 0 2-.9 2-2s-.9-2-2-2h-2v-6h2c1.1 0 2-.9 2-2s-.9-2-2-2h-2V4h-4V2c0-1.1-.9-2-2-2s-2 .9-2 2v2h-6V2c0-1.1-.9-2-2-2s-2 .9-2 2v2h-6V2c0-1.1-.9-2-2-2S8 .9 8 2v2H4v4H2c-1.1 0-2 .9-2 2s.9 2 2 2h2v6H2c-1.1 0-2 .9-2 2s.9 2 2 2h2v6H2c-1.1 0-2 .9-2 2s.9 2 2 2h2v4h4v2c0 1.1.9 2 2 2s2-.9 2-2v-2h6v2c0 1.1.9 2 2 2s2-.9 2-2v-2h6v2c0 1.1.9 2 2 2s2-.9 2-2v-2h4v-4h2c1.1 0 2-.9 2-2s-.9-2-2-2h-2v-6zm-6 10H8V8h24z"/><path d="M24.7 17.3 20 12h-7.1c-.6 0-1 .4-1 1s.4 1 1 1h6.3l4.1 4.7L20 22h8v-8z"/><path d="m15.2 22.7 4.7 5.3H27c.6 0 1-.4 1-1s-.4-1-1-1h-6.3l-4.1-4.7 3.3-3.3h-8v8z"/></g></g></svg> 1093 </span> 1094 <span class="upper-deck__text"> 1095 overengineer much? 1096 </span> 1097</div> 1098 </div> 1099 1100 <h1 1101 class="dusk:text-gray-100 mb-3 px-[15px] font-serif text-3xl font-semibold leading-none text-gray-700 sm:px-5 md:px-0 md:text-4xl lg:text-5xl dark:text-gray-100"> 1102 Dysonâs most overengineered gadget may have a waterproofing problem 1103 </h1> 1104 1105 <p 1106 class="text-gray-550 dark:text-gray-250 dusk:text-gray-250 mt-4 px-[15px] text-lg leading-tight sm:px-5 md:px-0"> 1107 Dyson admits a component issue but won’t say what’s failing in its $500 toothbrush. 1108 </p> 1109 1110 <div class="mt-2 px-[15px] sm:px-5 md:px-0"> 1111 <div class="font-impact text-xs font-semibold uppercase text-gray-300"><a class="text-orange-400 hover:text-orange-500" href="https://arstechnica.com/author/wired-com/"> 1112 Jeremy White, wired.com 1113 </a> 1114 â
1115 <span class="whitespace-nowrap"> 1116 <time class="mr-[2px] inline-block cursor-default" title="2026-09-22T09:33:16-04:00" datetime="2026-09-22T09:33:16-04:00" data-mode="dateTime" 1117 data-time-separator=" " data-updated-timestamp="false" 1118 x-data="arsTimestamp()" x-text="format()"> 1119 Sep 22, 2026 9:33 am 1120</time> 1121 <span class="text-gray-550">|</span> <a class="view-comments text-gray-300 hover:text-gray-500" 1122 href="https://arstechnica.com/gadgets/2026/09/its-500-toothbrush-disappeared-from-stores-dyson-wont-fully-explain-why/#comments" title="144 comments"> 1123 <svg class="-mt-1 ml-1 mr-[2px] inline-block h-4 w-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80"><defs><clipPath id="bubble-zero_svg__a"><path fill="none" stroke-width="0" d="M0 0h80v80H0z"/></clipPath><clipPath id="bubble-zero_svg__b"><path fill="none" stroke-width="0" d="M0 0h80v80H0z"/></clipPath></defs><g clip-path="url(#bubble-zero_svg__a)"><g fill="currentColor" clip-path="url(#bubble-zero_svg__b)"><path d="M80 40c0 22.09-17.91 40-40 40S0 62.09 0 40 17.91 0 40 0s40 17.91 40 40"/><path d="M40 40 .59 76.58C-.67 77.84.22 80 2.01 80H40z"/></g></g></svg> 1124 144 1125 </a> 1126 </span></div> 1127 </div> 1128 </div> 1129 1130 <div class="mt-4 min-h-1 lg:mt-0"> 1131 <div class="relative aspect-video overflow-hidden"> 1132 <div class="ars-lightbox"> 1133 <div class="ars-lightbox-item"> 1134 <a class="cursor-zoom-in" data-pswp-width="1600" 1135 data-pswp-height="1600" data-pswp-srcset="https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush.jpg 1600w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-640x640.jpg 640w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1024x1024.jpg 1024w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-300x300.jpg 300w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-768x768.jpg 768w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1536x1536.jpg 1536w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-500x500.jpg 500w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1000x1000.jpg 1000w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-980x980.jpg 980w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1440x1440.jpg 1440w" 1136 data-cropped="true" href="https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush.jpg" target="_blank"> 1137 <img width="640" height="640" src="https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-640x640.jpg" class="absolute inset-0 w-full h-full object-cover hidden" alt="Image of Dyson electric toothbrush" loading="eager" decoding="async" srcset="https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-640x640.jpg 640w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1024x1024.jpg 1024w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-300x300.jpg 300w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-768x768.jpg 768w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1536x1536.jpg 1536w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-500x500.jpg 500w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1000x1000.jpg 1000w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-980x980.jpg 980w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1440x1440.jpg 1440w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush.jpg 1600w" sizes="(max-width: 640px) 100vw, 640px" /> 1138 <img width="1152" height="648" src="https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1152x648.jpg" class="intro-image absolute min-w-full min-h-full h-auto object-cover" alt="Image of Dyson electric toothbrush" loading="eager" decoding="async" fetchpriority="high" srcset="https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1152x648.jpg 1152w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-384x216.jpg 384w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-768x432.jpg 768w, https://cdn.arstechnica.net/wp-content/uploads/2026/09/toothbrush-1536x864.jpg 1536w" sizes="(max-width: 1152px) 100vw, 1152px" /> 1139 </a> 1140 <div class="pswp-caption-content" id="caption-2173035"> 1141 <div 1142 class="caption font-impact dusk:text-gray-300 mb-4 mt-2 inline-flex flex-row items-stretch gap-1 text-base leading-tight text-gray-400 dark:text-gray-300"> 1143 <div class="caption-icon bg-[left_top_5px] w-[10px] shrink-0"></div> 1144 <div class="caption-content"> 1145 Dyson has taken the electric toothbrush and thrown the bathroom sink at it, adding cameras and a liquid reservoir. 1146
1147 <span class="caption-credit mt-2 text-xs"> 1148 Credit: 1149 1150 1151 Dyson 1152 1153 </span> 1154 </div> 1155 </div> 1156 </div> 1157 </div> 1158 </div> 1159 1160 </div> 1161 <div class="px-[15px] sm:px-5 md:px-0"><div 1162 class="caption font-impact dusk:text-gray-300 mb-4 mt-2 inline-flex flex-row items-stretch gap-1 text-base leading-tight text-gray-400 dark:text-gray-300"> 1163 <div class="caption-icon bg-[left_top_5px] w-[10px] shrink-0"></div> 1164 <div class="caption-content"> 1165 Dyson has taken the electric toothbrush and thrown the bathroom sink at it, adding cameras and a liquid reservoir. 1166 1167 <span class="caption-credit mt-2 text-xs"> 1168 Credit: 1169 1170 1171 Dyson 1172 1173 </span> 1174 </div> 1175 </div></div> 1176 </div> 1177 </div> 1178</div> 1179</header> 1180<div class="text-settings-dropdown-story mdl:absolute mdl:z-10 mdl:mb-0 mdl:mt-1 relative -mt-4 mb-2"> 1181 <div x-data="arsDropdown()" @keydown.escape.prevent.stop="close($refs.button)" 1182 @focusin.window="! $refs.panel.contains($event.target) && close()" x-id="['dropdown-button']"> 1183 1184 <!-- Button --> 1185 <button type="button" x-ref="button" 1186 x-on:click=" 1187 toggle(); 1188 $dispatch('dropdown-opened', { panel: $refs.panel }); 1189 " 1190 :aria-expanded="open" :aria-controls="$id('dropdown-button')" :class="{ selected: open }" 1191 class="group flex items-center bg-gray-150 dark:bg-gray-550 mdl:flex-col mdl:bg-transparent mdl:p-0 mdl:dark:bg-transparent flex w-full items-center justify-between px-[15px] py-2.5 sm:px-5 lg:px-8" arial-label="" aria-label="Open text settings dropdown"> 1192 <div class="flex items-center gap-2"> 1193 <svg class="dark:text-gray-250 mdl:h-7 mdl:w-7 h-5 w-5 text-gray-300 group-hover:text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 43 43"><defs><clipPath id="text-settings_svg__a"><path fill="none" stroke-width="0" d="M0 0h43v43H0z"/></clipPath><clipPath id="text-settings_svg__b"><path fill="none" stroke-width="0" d="M0 0h43v43H0z"/></clipPath></defs><g clip-path="url(#text-settings_svg__a)"><g fill="currentColor" clip-path="url(#text-settings_svg__b)"><path d="M33.52 17.82c-.69-.27-1.55-.4-2.55-.4-.6 0-1.28.03-2.04.08-.76.06-1.52.12-2.28.21-.76.08-1.43.18-2.01.29l.34 2.38c.97-.06 1.92-.12 2.84-.16q1.38-.06 2.31-.06c.74 0 1.25.13 1.52.39s.4.67.4 1.24v.56h-4.34c-1.13 0-2.02.27-2.67.8s-.97 1.28-.97 2.23v1.24c0 .7
11935.17 1.37.51 1.87q.51.75 1.38 1.14c.58.26 1.24.39 1.97.39s1.41-.12 1.99-.36a6.34 6.34 0 0 0 2.51-1.85l.38 1.92h2.86v-7.91c0-1.12-.18-1.99-.55-2.63a3 3 0 0 0-1.59-1.36m-1.49 8.42c-.06.04-.11.09-.17.13q-.735.48-1.47.75c-.49.18-.95.27-1.37.27-.5 0-.87-.11-1.09-.33-.23-.22-.34-.53-.34-.93v-.58c0-.36.09-.64.28-.85s.5-.31.94-.31l3.23-.02v1.87Zm-14.2-13q-.36-.27-.81-.27h-3.52q-.465 0-.81.27c-.23.18-.39.41-.47.7L7.35 29.72h3.81l1.23-4.42h5.77l1.23 4.42h3.79l-4.85-15.77a1.3 1.3 0 0 0-.47-.7m-4.71 9.27 1.42-5.1q.12-.405.21-.84c.06-.28.11-.55.16-.81h.65c.05.26.1.53.17.81s.13.56.19.84l1.42 5.1z"/><path d="M33.5 4.5c2.76 0 5 2.24 5 5v24.01c0 2.76-2.24 5-5 5h-24c-2.76 0-5-2.24-5-5V9.5c0-2.76 2.24-5 5-5zm0-3h-24c-4.42 0-8 3.58-8 8v24.01c0 4.42 3.58 8 8 8h24c4.42 0 8-3.58 8-8V9.5c0-4.42-3.58-8-8-8"/></g></g></svg> 1194 <span 1195 class="font-impact settings-text dark:text-gray-250 mdl:hidden text-xs font-semibold uppercase text-gray-300">Text 1196 settings</span> 1197 </div> 1198 <span class="settings-icon"> 1199 <svg class="dark:text-gray-250 mdl:hidden h-4 w-4 text-gray-300" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 39.8 40"><defs><clipPath id="settings_svg__a"><path fill="none" d="M0 0h39.8v40H0z"/></clipPath><clipPath id="settings_svg__b"><path fill="none" d="M0 0h39.8v40H0z"/></clipPath></defs><g clip-path="url(#settings_svg__a)"><g fill="currentColor" clip-path="url(#settings_svg__b)"><path d="M17.4 3c-.8-1.8-2.5-3-4.5-3S9.1 1.2 8.3 3H0v4h8.3c.8 1.8 2.5 3 4.6 3s3.8-1.2 4.6-3h22.4V3H17.5Zm-4.6 4.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5M27 15c-2 0-3.8 1.2-4.6 3H0v4h22.4c.8 1.8 2.5 3 4.6 3s3.8-1.2 4.6-3h8.3v-4h-8.3c-.8-1.8-2.5-3-4.6-3m0 7.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5M12.9 30c-2 0-3.8 1.2-4.6 3H0v4h8.3c.8 1.8 2.5 3 4.6 3s3.8-1.2 4.6-3h22.4v-4H17.5c-.8-1.8-2.5-3-4.6-3m0 7.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5"/></g></g></svg> 1200 <svg class="dark:text-gray-250 mdl:block mt-[3px] hidden h-auto w-5 text-gray-300" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 25.17"><defs><clipPath id="settings-compact_svg__a"><path fill="none" stroke-width="0" d="M0 0h40v25.17H0z"/></clipPath><clipPath id="settings-compact_svg__b"><path fill="none" stroke-width="0" d="M0 0h40v25.17H0z"/></clipPath></defs><g clip-path="url(#settings-compact_svg__a)"><g fill="currentColor" clip-path="url(#settings-compact_svg__b)"><path d="M27.09.09c-2.05 0-3.81 1.24-4.58 3H0v4h22.51c.77 1.76 2.53 3 4.58 3s3.81-1.24 4.58-3H40v-4h-8.33c-.77-1.76-2.53-3-4.58-3m0 7.5a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5m-14.18 7.58c-2.05 0-3.81 1.24-4.58 3H0v4h8.34c.77 1.76 2.53 3 4.58 3s3.81-1.24 4.58-3h22.51v-4H17.5c-.77-1.76-2.53-3-4.58-3m-.01 7.5a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5"/></g></g></svg> 1201 </span> 1202 </button> 1203 1204 <!-- Panel --> 1205 <div x-cloak x-ref="panel" x-show="open" x-transition.origin.top.center x-on:click.outside="close()" 1206 :id="$id('dropdown-button')" class="absolute overflow-hidden z-50 bg-gray-550 absolute left-0 top-0"> 1207 <div class="text-settings"> 1208 <div class="text-settings-menu bg-gray-550 w-60"> 1209 <div class="flex items-center justify-between bg-gray-600 px-5 py-2"> 1210 <div class="flex items-center gap-2"> 1211 <svg class="h-5 w-5 text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="text-settings-open_svg__a"><path fill="none" stroke-width="0" d="M0 0h40v40H0z"/></clipPath><clipPath id="text-settings-open_svg__b"><path fill="none" stroke-width="0" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#text-settings-open_svg__a)"><g fill="currentColor" clip-path="url(#text-settings-open_svg__b)"><path d="M26.38 23.2c-.19.21-.28.49-.28.85v.58c0 .4.11.72.34.93.23.22.59.33 1.09.33.42 0 .88-.09 1.37-.27q.735-.27 1.47-.75c.06-.04.11-.09.17-.13v-1.87h-3.23q-.66.015-.93.33"/><path d="M32 0H8C3.58 0 0 3.58 0 8v24.01C0 36.42 3.58 40 8 40h24c4.42 0 8-3.58 8-8V8c0-4.42-3.58-8-8-8M17.88 28.23l-1.23-4.42h-5.77l-1.23 4.42H5.84l4.88-15.77a1.316 1.316 0 0 1 1.28-.97h3.52q.465 0 .81.27c.23.18.39.41.47.7l4.85 15.77h-3.79Zm16.28 0H31.3l-.38-1.92c-.27.33-.59.65-.98.96-.44.35-.95.64-1.53.89-.58.24-1.25.36-1.99.36s-1.38-.13-1.97-.39q-.87-.39-1.38-1.14c-.34-.5-.51-1.12-.51-1.87v-1.24c0-.95.32-1.7.97-2.23s1.54-.8 2.67-.8h4.34v-.56c0-.57-.13-.98-.4-1.24s-.77-.39-1.52-.39c-.61 0-1.38.02-2.3.06s-1.87.09-2.84.16l-.34-2.38c.58-.11 1.25-.21 2.02-.29q1.14-.12 2.28-.21t2.04-.09c1 0 1.85.13 2.55.4.69.27 1.22.72 1.59 1.36.36.64.55 1.52.55 2.63v7.91Z"/><path d="M14.26 15.09c-.06-.28-.12-.55-.17-.81h-.65c-.05.26-.1.53-.16.81s-.12.56-.21.84l-1.42 5.1h4.22l-1.42-5.1c-.07-.27-.13-.55-.19-.84"/></g></g></svg>
1212 <span class="font-impact text-gray-350 text-base font-semibold uppercase">Story text</span> 1213 </div> 1214 <span class="text-settings-close" x-on:click="close();"> 1215 <svg class="h-4 w-4 text-gray-300" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="close_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g fill="none" clip-path="url(#close_svg__a)"><path fill="currentColor" d="M34.3 0 20 14.3 5.7 0H0v5.7L14.3 20 0 34.3V40h5.7L20 25.7 34.3 40H40v-5.7L25.7 20 40 5.7V0z"/></g></svg> 1216 </span> 1217 </div> 1218 1219 <div class="grid grid-cols-3 items-center gap-3 px-5 py-2"> 1220 <label class="font-impact w-20 text-base font-semibold uppercase text-gray-100" for="text-settings-size">Size</label> 1221<select name="text-settings-size" class="text-settings-size col-span-2 bg-gray-600 text-sm text-gray-300"> 1222 <option value="small">Small</option> 1223 <option value="standard" selected>Standard</option> 1224 <option value="large">Large</option> 1225</select> 1226 1227 1228<label class="font-impact hidden w-20 text-base font-semibold uppercase text-gray-100 md:block" 1229 for="text-settings-width">Width 1230 <span class="text-gray-400">*</span> 1231 </label> 1232<select name="text-settings-width" 1233 class="text-settings-width col-span-2 hidden bg-gray-600 text-sm text-gray-300 md:block"> 1234 <option value="standard" selected>Standard</option> 1235 <option value="wide">Wide</option> 1236</select> 1237 1238 1239<label class="font-impact w-20 text-base font-semibold uppercase text-gray-100" for="text-settings-links">Links</label> 1240<select name="text-settings-links" class="text-settings-links col-span-2 bg-gray-600 text-sm text-gray-300"> 1241 <option value="standard" selected>Standard</option> 1242 <option value="orange">Orange</option> 1243</select> 1244 1245 1246 <div class="font-impact col-span-3 hidden text-sm font-semibold uppercase text-gray-400 md:block"> 1247 <span class="mb-0 italic">* Subscribers only</span><br> 1248 <a href="/store/product/subscriptions/" class="text-green-400">Learn more</a> 1249 </div> 1250 1251 1252 <button 1253 class="font-impact text-settings-position col-span-3 mx-auto my-3 block rounded-sm border-2 border-green-400 px-3 py-1 text-base font-semibold uppercase text-gray-100" 1254 value="nav"> 1255 Minimize to nav 1256 </button> 1257 </div> 1258 </div> 1259 </div> 1260 </div> 1261 </div> 1262</div> 1263 1264 1265 1266 1267 1268 1269 <div 1270 class="my-2.5 mx-auto px-[15px] sm:px-5 lg:grid lg:max-w-5xl lg:grid-cols-3 lg:gap-6 lg:px-8 xl:px-0"> 1271 <div class="relative lg:col-span-2"> 1272 1273 1274 <div class="post-content post-content-double"> 1275 1276 1277 <p>Thereâs always a danger in over-complicating products. Simple is so often best. The apocryphal story of NASA spending millions crafting a space pen while Soviet cosmonauts used a pencil is often cited as a prime example, even if itâs <a href="https://www.scientificamerican.com/article/fact-or-fiction-nasa-spen/">actually not true</a>. Perhaps itâs not surprising that <a href="https://www.wired.com/tag/dyson/">Dyson</a> has got into hot water trying to <a href="https://www.wired.com/story/dyson-camerajet-electric-toothbrush-and-flosser/">reinvent the electric toothbrush</a>.</p> 1278<p>The Chinese invented the first bristle toothbrush during the Ming dynasty. That concept muddled along quite nicely until 1937, when Tomlinson Moseley filed a patent for the earliest electric toothbrush. After more than 400 years, the <a href="https://en.wikipedia.org/wiki/Electric_toothbrush">Motodent</a> marked the beginning of an evolutionary shift from manual brushing to powered oral care.</p> 1279<p>Having had considerable success reimagining established product categories such as <a href="https://www.wired.com/gallery/best-dyson-vacuums/">stick vacuums</a> and <a href="https://www.wired.com/gallery/best-hair-dryers/">premium hair dryers</a>âthough not so much <a href="https://www.wired.com/story/dyson-has-killed-its-bizarre-zone-air-purifying-headphones/">air-purifying headphones</a>âthe company earlier this month, with great fanfare, unveiled the next leap forward for teeth: the $499 Dyson CameraJet with a tiny camera to aim streams of rinsing fluid into the gaps between your teeth.</p> 1280<p>Others, like the Waterpik Sonic-Fusion 2.0, have already been daring (or foolhardy) enough to combine brushing and water flossing. However, Dyson upped the ante further by adding a macro-lens camera, allowing its âGap Optical Targeting system,â trained on 470,000 dental images, to identify within 100 milliseconds precisely where to squirt fluid from the 12.5 milliliters of mouth rinse stored in its on-board reservoir.</p> 1281<p>Itâs taken Dyson six years, 38 patents, and an awful lot of money to make this camera-squirt-brush doohickey work. However, something has gone badly wrong with the CameraJet. So wrong that despite <a href="https://www.wired.com/video/watch/tech-support-james-dyson-answers-design-questions-from-twitter">James Dyson</a> globally launching the product at a Paris event mere weeks ago, you can no longer, as far as WIRED can ascertain, buy the CameraJet anywhere.</p> 1282<p>The CameraJet launched in US stores on September 8. Just a day later, reports began outlining the <a href="https://www.theverge.com/gadgets/992113/some-of-dysons-500-toothbrushes-are-breaking">first user complaints</a> of water in the battery compartment and failures within 30 seconds of use. Consumer Reportsâ <a href="https://www.consumerreports.org/health/toothbrushes/dyson-camerajet-review-a7514330826/">own review unit</a> stopped working less than 24 hours after unboxing. On September 11, French outlet <a href="https://www.numerama.com/tech/2330911-apres-de-nombreux-signalements-dyson-retirerait-deja-de-la-vente-sa-brosse-a-dents-camerajet-a-479-e.html">Numerama</a> reported that the French Dyson site and stores had reportedly stopped selling the toothbrush. By September 15, stores in the US, UK, and Singapore, where Dysonâs headquarters now reside, had <a href="https://mothership.sg/2026/09/dyson-toothbrush/">followed suit</a>.</p> 1283 1284 1285 <div class="ars-interlude-container in-content-interlude mx-auto max-w-xl"> 1286 </div> 1287 </div> 1288 1289 </div> 1290 1291 1292 <div class="dusk:bg-gray-100 hidden min-w-[300px] justify-self-end lg:block dark:bg-gray-50"> 1293 1294 <div class="ad-wrapper is-sticky is-rail"> 1295 <div class="ad-wrapper-inner"> 1296 <div class="ad ad--rail"></div> 1297 </div> 1298 </div> 1299 </div> 1300 </div> 1301 1302 <div class="ad-wrapper with-label is-fullwidth"> 1303 <div class="ad-wrapper-inner"> 1304 <div class="ad ad--mid-content"> 1305 </div> 1306 </div> 1307 </div> 1308 1309 1310 <div 1311 class="my-2.5 mx-auto px-[15px] sm:px-5 lg:grid lg:max-w-5xl lg:grid-cols-3 lg:gap-6 lg:px-8 xl:px-0"> 1312 <div class="relative lg:col-span-2"> 1313 1314 1315 <div class="post-content post-content-double"> 1316 1317 1318<p>Despite the product disappearing from shelves and online stores, Liv Thomas, the companyâs head of Beauty Communications, insists to WIRED that the CameraJet hasnât been recalled. Instead, the gadget is âexperiencing strong demand globallyâ and âshortages of supply as we are in the process of scaling up production.â Units will reappear supposedly in âthe coming weeks.â But what about the multiple reports of breakages, leaking, and battery failures in multiple countries?</p> 1319<p>âWe have identified a single component issue affecting a small number of early batches,â Thomas
1319says. âWe have isolated those batches and are supporting affected customers.â</p> 1320<p>Thomas confirmed that Dyson would not answer questions on whereâif anywhereâthe Dyson CameraJet was still on sale worldwide. Nor would Dyson confirm when it stopped shipments of the product. Thomas also confirmed that Dyson refuses to detail what the faulty âsingle componentâ is, what problem itâs causing for the CameraJet, or how many units have been affected globally. Dyson also refused to comment on why it had not issued a formal recall of these faulty early batches of the $500 device.</p> 1321<p>Dyson Reddit forums have lit up, with names such as âScameraJetâ being bandied around, along with one <a href="https://www.reddit.com/r/dyson/comments/1wm644m/dyson_toothbrush_camerajet/">disgruntled buyer commenting</a>: âBought two of these and both of them have stopped working. Since I bought it in the UK and wasnât planning to return it and have thrown the packaging away, I canât even return them. Disappointed that they scammed so good. Unbelievable that it lasted just two weeks.â</p> 1322<p>Kyle Wiens, CEO of the repair company <a href="https://www.wired.com/story/ifixit-rating-for-the-iphone-18-pro-repairability/">iFixit</a>, feels the problem <a href="https://www.reddit.com/r/dyson/comments/1w88mkz/who_here_has_received_a_defective_dyson_camerajet/">may well be leaking</a>.</p> 1323<p>âThis sounds like a waterproofing issue. Making products at scale with the tolerances required to waterproof are hard,â he says. âMy guess without getting a chance to look at a failed unit is that we either have a tolerance issue where some parts arenât mating perfectly, or a failure in the adhesive curing process, either during manufacturing or in shipping.â</p> 1324 1325 1326 </div> 1327 1328 </div> 1329 1330 1331 <div class="dusk:bg-gray-100 hidden min-w-[300px] justify-self-end lg:block dark:bg-gray-50"> 1332 1333 <div class="ad-wrapper is-sticky is-rail"> 1334 <div class="ad-wrapper-inner"> 1335 <div class="ad ad--rail"></div> 1336 </div> 1337 </div> 1338 </div> 1339 </div> 1340 1341 <div class="ad-wrapper with-label is-fullwidth"> 1342 <div class="ad-wrapper-inner"> 1343 <div class="ad ad--mid-content"> 1344 </div> 1345 </div> 1346 </div> 1347 1348 1349 <div 1350 class="mt-2.5 mx-auto px-[15px] sm:px-5 lg:grid lg:max-w-5xl lg:grid-cols-3 lg:gap-6 lg:px-8 xl:px-0"> 1351 <div class="relative lg:col-span-2"> 1352 1353 1354 <div class="post-content post-content-double"> 1355 1356 1357<p>Wiens says this adhesive-curing failure can happen in such a way that a product can pass factory testing fine, but then heat or humidity (or both) during shipping causes a problem.</p> 1358<p>Adam Toner, founder and technical director of <a href="https://ripcorddesigns.com/">Ripcord Designs</a>, a UK-based electronic design consultancy that has worked with multinational companies including Formula One Management and Panasonic, also thinks water is the CameraJetâs problem.</p> 1359<p>âOn a product like this, there just should never be any water ingress into the internals,â he says. âI donât have one in front of me, but Iâve seen a few videos and people explaining how you change the battery. Once you pull the battery offâwhich is where people say theyâre seeing waterâit looks like there is probably access from that battery compartment into all of the internals of the device.â</p> 1360<p>The CameraJet not charging, overheating, or failing to startâall of that can be explained by water getting into the device, Toner says. He suspects the problem could be as benign as a faulty gasket or O-ring.</p> 1361<p>If water getting in does turn out to be an issue for the CameraJet, as these experts suggest, this begs the obvious question: How on earth has Dyson managed to spend <i>six years</i> developing a teched-up toothbrush, designed to be dunked in water every use, and that carries liquid around in it, yet fail to make it waterproof?</p> 1362<p>Wiens believes the CameraJet chaos could force a well-overdue rethink for Dyson.</p> 1363<p>âClearly they didnât plan for this to happen,â he says. âThey should take this opportunity to invest in repairability. Making products easier to fix also makes them easier to rework when manufacturing defects occur. Dyson is way behind the industry on making repair parts and information available for their products. This should be a wake-up call for them to step up.â</p> 1364<p><em>This story originally appeared on <a href="https://www.wired.com/story/dyson-wont-say-whats-wrong-with-the-camerajet-toothbrush/">wired.com</a>.</em></p> 1365 1366 1367 1368 </div> 1369 1370 1371 <div class="-mx-2.5 sm:mx-0"> 1372 </div> 1373 1374 1375 1376 1377 1378 1379 <div class="author-mini-bio"> 1380 <div class="flex flex-col items-start gap-5 border-t-4 py-5 sm:flex-row dark:border-gray-700"> 1381 <div class="flex items-center gap-3"> 1382 <a class="relative block aspect-square h-24 w-24 shrink-0 overflow-hidden rounded-full border-4 border-green-400" 1383 href="https://arstechnica.com/author/wired-com/"><img class="absolute left-0 top-0 min-h-full min-w-full object-cover" 1384 src="https://cdn.arstechnica.net/wp-content/uploads/2023/09/wired-headshot.jpg" alt="Photo of WIRED"></a> 1385 <div class="font-impact mb-0 text-left text-base font-semibold uppercase sm:hidden"> 1386 <a href="https://arstechnica.com/author/wired-com/"> 1387 WIRED 1388 </a> 1389
1390 <span class="block font-sans text-sm font-normal italic sm:inline-block"></span> 1391 </div> 1392 </div> 1393 1394 <div> 1395 <div class="font-impact mb-0 hidden text-left text-base font-semibold uppercase sm:block"> 1396 <a href="https://arstechnica.com/author/wired-com/"> 1397 WIRED 1398 </a> 1399 <span class="block font-sans text-sm font-normal italic sm:ml-2 sm:inline-block"></span> 1400 </div> 1401 1402 <div class="text-left text-base leading-5 text-gray-400" itemprop="description"> 1403 Wired.com is your essential daily guide to what's next, delivering the most original and complete take you'll find anywhere on innovation's impact on technology, science, business and culture. 1404 </div> 1405 </div> 1406</div> 1407 </div> 1408 1409 1410 <div 1411 class="story-tools flex items-center justify-between border-b-4 border-t-4 text-sm sm:text-lg dark:border-gray-700"> 1412 <a class="view-comments font-impact my-5 flex items-center gap-2 whitespace-nowrap font-semibold uppercase" 1413 href="https://arstechnica.com/gadgets/2026/09/its-500-toothbrush-disappeared-from-stores-dyson-wont-fully-explain-why/#comments" title="144 comments"> 1414 <svg class="text-gray-300 hover:text-gray-500 h-6 w-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80"><defs><clipPath id="bubble-zero_svg__a"><path fill="none" stroke-width="0" d="M0 0h80v80H0z"/></clipPath><clipPath id="bubble-zero_svg__b"><path fill="none" stroke-width="0" d="M0 0h80v80H0z"/></clipPath></defs><g clip-path="url(#bubble-zero_svg__a)"><g fill="currentColor" clip-path="url(#bubble-zero_svg__b)"><path d="M80 40c0 22.09-17.91 40-40 40S0 62.09 0 40 17.91 0 40 0s40 17.91 40 40"/><path d="M40 40 .59 76.58C-.67 77.84.22 80 2.01 80H40z"/></g></g></svg> 1415 144 Comments 1416 </a> 1417 </div> 1418 </div> 1419 1420 1421 <div class="dusk:bg-gray-100 hidden min-w-[300px] justify-self-end lg:block dark:bg-gray-50"> 1422 1423 <div class="ad-wrapper is-sticky is-rail"> 1424 <div class="ad-wrapper-inner"> 1425 <div class="ad ad--rail"></div> 1426 </div> 1427 </div> 1428 </div> 1429 </div> 1430 </article> 1431 1432 1433 <div class="relative"> 1434 <section class="dusk:bg-none bg-gray-100 dark:bg-gray-50" id="comments"> 1435 <div 1436 class="comments-container mx-auto px-[15px] sm:px-5 lg:grid lg:max-w-5xl lg:grid-cols-3 lg:gap-y-6 lg:px-8 xl:px-0"> 1437 <div class="comments-wrapper col-span-3 hidden py-5"> 1438 <div class="lg:grid lg:grid-cols-3 lg:gap-6"> 1439 <div class="lg:col-span-2"> 1440 <div class="wp-forum-connect-comments relative"> 1441 <div 1442 class="comments-title font-impact xs:justify-center flex flex-row items-center gap-2 bg-gray-600 px-5 py-2 text-xl font-extrabold uppercase text-green-400 lg:text-2xl"> 1443 <svg class="h-6 w-6 rotate-[-75deg] text-gray-100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49 49"><defs><clipPath id="bubble_svg__a"><path fill="none" d="M.011 10.382 38.648.029l10.353 38.637L10.364 49.02z"/></clipPath><clipPath id="bubble_svg__b"><path fill="none" d="M.011 10.382 38.648.029l10.353 38.637L10.364 49.02z"/></clipPath></defs><g clip-path="url(#bubble_svg__a)"><g fill="currentColor" clip-path="url(#bubble_svg__b)"><path d="M29.7 43.8C19 46.7 8.1 40.3 5.2 29.7S8.7 8.1 19.3 5.2s21.6 3.5 24.5 14.1c2.9 10.7-3.5 21.6-14.1 24.5"/><path d="M24.5 24.5 1.7 10.2c-.8-.4-1.7.3-1.5 1.1l3.3 12.2 1.7 6.2z"/></g></g></svg> 1444 Comments 1445 </div> 1446 1447 <a class="font-impact absolute bottom-0 right-5 top-0 flex flex-row items-center gap-2 text-base font-semibold uppercase text-gray-300 hover:text-gray-200" 1448 href="https://arstechnica.com/civis/threads/its-500-toothbrush-disappeared-from-stores-dyson-won%E2%80%99t-fully-explain-why.1514884/" target="_blank"> 1449 <svg class="h-5 w-5 text-gray-200" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="forum-arrow_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="forum-arrow_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#forum-arrow_svg__a)"><g fill="none" clip-path="url(#forum-arrow_svg__b)">
1449<path fill="#ff4e00" d="M23 0c-1.1 0-2 .9-2 2s.9 2 2 2h10.2L16.6 20.6c-.8.8-.8 2 0 2.8.4.4.9.6 1.4.6s1-.2 1.4-.6L36 6.8V17c0 1.1.9 2 2 2s2-.9 2-2V0z"/><path fill="currentColor" d="M30 24v12H4V10h12l4-4H4c-2.2 0-4 1.8-4 4v26c0 2.2 1.8 4 4 4h26c2.2 0 4-1.8 4-4V20z"/></g></g></svg> 1450 <span class="hidden sm:inline">Forum view</span> 1451 </a> 1452</div> 1453 1454<div class="xf_thread_iframe_wrapper relative min-h-screen"> 1455 <div class="xf_thread_iframe_loading flex items-center justify-center"> 1456 <div class="my-20"> 1457 <img class="h-10 w-10" src="https://cdn.arstechnica.net/wp-content/themes/ars-v9/public/images/firework-loader.75ab30.gif" alt="Loading" /> 1458 Loading comments... 1459 </div> 1460 </div> 1461 1462 <div class="xf_thread_iframe_container" id="xf_thread_iframe_container" data-thread-id="1514884" 1463 data-url="https://arstechnica.com/civis/threads/its-500-toothbrush-disappeared-from-stores-dyson-won%E2%80%99t-fully-explain-why.1514884/unread?in_iframe=1&theme=auto&wp_data=eyJ1cmwiOiJodHRwczpcL1wvYXJzdGVjaG5pY2EuY29tXC9nYWRnZXRzXC8yMDI2XC8wOVwvaXRzLTUwMC10b290aGJydXNoLWRpc2FwcGVhcmVkLWZyb20tc3RvcmVzLWR5c29uLXdvbnQtZnVsbHktZXhwbGFpbi13aHlcLyIsIm9wZW5fY29tbWVudHMiOiJjb21tZW50cz0xIn0=&" 1464 data-open="0" 1465 data-open-default="0"></div> 1466</div> 1467 </div> 1468 1469 <div class="dusk:bg-gray-100 row-span-2 hidden min-w-[300px] justify-self-end dark:bg-gray-50 lg:block"> 1470 1471 <div class="ad-wrapper is-sticky is-rail"> 1472 <div class="ad-wrapper-inner"> 1473 <div class="ad ad--rail"></div> 1474 </div> 1475 </div> 1476 </div> 1477 </div> 1478 </div> 1479 </div> 1480</section> 1481 </div> 1482 1483 1484 <div class="mx-auto mb-2.5 px-[15px] sm:px-5 lg:grid lg:max-w-5xl lg:grid-cols-3 lg:gap-6 lg:px-8 xl:px-0"> 1485 <div class="col-span-2 py-5"> 1486 <div class="post-navigation"> 1487 1488 <div class="nav-previous post-navigation-link-wrapper"> 1489 <a class="post-navigation-link" rel="nofollow" href="https://arstechnica.com/space/2026/09/nasa-chief-im-only-interested-in-good-deals-from-international-partners/" 1490 title="Go to: NASA chief: I'm only interested in "good deals" from international partners"><svg class="text-orange-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="arrow-blocks-right_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g fill="currentColor" clip-path="url(#arrow-blocks-right_svg__a)"><path d="M32 16h8v8h-8zm-8 8h8v8h-8zm-8 8h8v8h-8zm8-24h8v8h-8zm-8-8h8v8h-8zM0 16h16v8H0z"/></g></svg> 1491<span class="post-navigation-link-text">Prev story</span></a> 1492 </div> 1493 1494 1495 <div class="nav-next post-navigation-link-wrapper"> 1496 <a class="post-navigation-link" rel="nofollow" href="https://arstechnica.com/tech-policy/2026/09/trumps-sneaky-plan-to-gut-endangered-species-act-draws-from-1995-scalia-dissent/" 1497 title="Go to: Trumpâs sneaky plan to gut Endangered Species Act draws from 1995 Scalia dissent"><span class="post-navigation-link-text">Next story</span><svg class="text-orange-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="arrow-blocks-right_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g fill="currentColor" clip-path="url(#arrow-blocks-right_svg__a)"><path d="M32 16h8v8h-8zm-8 8h8v8h-8zm-8 8h8v8h-8zm8-24h8v8h-8zm-8-8h8v8h-8zM0 16h16v8H0z"/></g></svg> 1498</a> 1499 </div> 1500</div> 1501 </div> 1502 </div> 1503 1504 1505 <div class="mx-auto -mt-2 mb-5 max-w-md sm:max-w-3xl sm:px-5 lg:grid lg:max-w-6xl lg:grid-cols-3 lg:gap-16 xl:px-0"> 1506 <div class="single-most-read dusk:bg-gray-700 relative col-span-2 bg-gray-100 dark:bg-gray-700"> 1507 <div 1508 class="component-most-read font-impact flex h-full min-h-[300px] flex-col flex-nowrap gap-5 pb-5 uppercase text-white"> 1509 <div> 1510 <header class="flex flex-row flex-nowrap items-center justify-center gap-2 bg-gray-600 px-5 py-2"> 1511 <svg class="h-[20px] w-[30px] text-gray-100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 26"><defs><clipPath id="most-read_svg__a"><path fill="none" d="M0 0h40v26H0z"/></clipPath><clipPath id="most-read_svg__b"><path fill="none" d="M0 0h40v26H0z"/></clipPath></defs><g clip-path="url(#most-read_svg__a)"><g fill="none" clip-path="url(#most-read_svg__b)">
1511<path fill="currentColor" d="M20 2h.8q1.5 0 3 .6c.6.2 1.1.4 1.7.6 1.3.5 2.6 1.3 3.9 2.1.6.4 1.2.8 1.8 1.3 2.9 2.3 5.1 4.9 6.3 6.4-1.1 1.5-3.4 4-6.3 6.4-.6.5-1.2.9-1.8 1.3q-1.95 1.35-3.9 2.1c-.6.2-1.1.4-1.7.6q-1.5.45-3 .6h-1.6q-1.5 0-3-.6c-.6-.2-1.1-.4-1.7-.6-1.3-.5-2.6-1.3-3.9-2.1-.6-.4-1.2-.8-1.8-1.3-2.9-2.3-5.1-4.9-6.3-6.4 1.1-1.5 3.4-4 6.3-6.4.6-.5 1.2-.9 1.8-1.3q1.95-1.35 3.9-2.1c.6-.2 1.1-.4 1.7-.6q1.5-.45 3-.6zm0-2h-1c-1.2 0-2.3.3-3.4.6-.6.2-1.3.4-1.9.7-1.5.6-2.9 1.4-4.3 2.3-.7.5-1.3.9-1.9 1.4C2.9 8.7 0 13 0 13s2.9 4.3 7.5 7.9c.6.5 1.3 1 1.9 1.4 1.3.9 2.7 1.7 4.3 2.3.6.3 1.3.5 1.9.7 1.1.3 2.3.6 3.4.6h2c1.2 0 2.3-.3 3.4-.6.6-.2 1.3-.4 1.9-.7 1.5-.6 2.9-1.4 4.3-2.3.7-.5 1.3-.9 1.9-1.4C37.1 17.3 40 13 40 13s-2.9-4.3-7.5-7.9c-.6-.5-1.3-1-1.9-1.4-1.3-.9-2.8-1.7-4.3-2.3-.6-.3-1.3-.5-1.9-.7C23.3.4 22.1.1 21 .1h-1"/><path fill="#ff4e00" d="M20 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8m0 11c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3"/></g></g></svg> 1512 <div class="font-impact inline text-xl font-extrabold uppercase text-green-400"> 1513 Most Read</div> 1514 </header> 1515 <ol> 1516 <li class="group relative"> 1517 <a href="https://arstechnica.com/gadgets/2026/09/owners-mourn-spoiled-food-after-firmware-update-bricks-samsung-smart-fridges/"> 1518 <img class="aspect-video h-auto w-full rounded-sm object-cover group-hover:saturate-150" 1519 src="https://cdn.arstechnica.net/wp-content/uploads/2026/09/Samsung-Bespoke-AI-3-Door-Refrigerator-AutoView-950x534-1-500x500-1790182590.jpg" 1520 alt="Listing image for first story in Most Read: Owners mourn spoiled food after firmware update bricks Samsung smart fridges" 1521 decoding="async" loading="lazy"> 1522 </a> 1523 <div class="relative px-[15px] py-4 sm:px-5"> 1524 <div class="most-read-divider absolute left-5 top-[-3px] h-[5px] w-1/4 bg-green-400"> 1525 </div> 1526 <span 1527 class="flex flex-row flex-nowrap items-start gap-4 font-serif text-xl font-bold normal-case leading-tight"> 1528 <span class="shrink-0 text-green-400">1.</span> 1529 <a class="most-read-title text-gray-100 visited:text-gray-400 hover:text-orange-400" 1530 href="https://arstechnica.com/gadgets/2026/09/owners-mourn-spoiled-food-after-firmware-update-bricks-samsung-smart-fridges/">Owners mourn spoiled food after firmware update bricks Samsung smart fridges</a> 1531 </span> 1532 </div> 1533 </li> 1534 <li class="group relative"> 1535 <div class="relative px-[15px] py-4 sm:px-5"> 1536 <div class="most-read-divider absolute left-5 top-0 h-[1px] w-1/4 bg-gray-400"> 1537 </div> 1538 <span 1539 class="flex flex-row flex-nowrap items-start gap-4 font-serif text-xl font-bold normal-case leading-tight"> 1540 <span class="shrink-0 text-green-400">2.</span> 1541 <a class="most-read-title text-gray-100 visited:text-gray-400 hover:text-orange-400" 1542 href="https://arstechnica.com/cars/2026/09/aftermarket-driver-assist-under-federal-probe-following-fatal-crashes/">Aftermarket driver assist under federal probe following fatal crashes</a> 1543 </span> 1544 </div> 1545 </li> 1546 <li class="group relative"> 1547 <div class="relative px-[15px] py-4 sm:px-5"> 1548 <div class="most-read-divider absolute left-5 top-0 h-[1px] w-1/4 bg-gray-400"> 1549 </div> 1550 <span 1551 class="flex flex-row flex-nowrap items-start gap-4 font-serif text-xl font-bold normal-case leading-tight"> 1552 <span class="shrink-0 text-green-400">3.</span> 1553 <a class="most-read-title text-gray-100 visited:text-gray-400 hover:text-orange-400" 1554 href="https://arstechnica.com/health/2026/09/womans-brain-worm-infection-confirmed-after-eggs-grow-tails-in-lab-test/">Woman's brain worm infection confirmed after eggs grow tails in lab test</a> 1555 </span> 1556 </div> 1557 </li> 1558 <li class="group relative"> 1559 <div class="relative px-[15px] py-4 sm:px-5"> 1560 <div class="most-read-divider absolute left-5 top-0 h-[1px] w-1/4 bg-gray-400"> 1561 </div>
1562 <span 1563 class="flex flex-row flex-nowrap items-start gap-4 font-serif text-xl font-bold normal-case leading-tight"> 1564 <span class="shrink-0 text-green-400">4.</span> 1565 <a class="most-read-title text-gray-100 visited:text-gray-400 hover:text-orange-400" 1566 href="https://arstechnica.com/space/2026/09/there-are-now-17000-satellites-in-orbit-and-growing-should-we-be-concerned/">A new report from Europe raises serious alarms about orbital collisions</a> 1567 </span> 1568 </div> 1569 </li> 1570 <li class="group relative"> 1571 <div class="relative px-[15px] py-4 sm:px-5"> 1572 <div class="most-read-divider absolute left-5 top-0 h-[1px] w-1/4 bg-gray-400"> 1573 </div> 1574 <span 1575 class="flex flex-row flex-nowrap items-start gap-4 font-serif text-xl font-bold normal-case leading-tight"> 1576 <span class="shrink-0 text-green-400">5.</span> 1577 <a class="most-read-title text-gray-100 visited:text-gray-400 hover:text-orange-400" 1578 href="https://arstechnica.com/tech-policy/2026/09/discord-age-verification-rolls-out-today-with-changes-spurred-by-user-backlash/">Discord age verification rolls out today with changes spurred by user backlash</a> 1579 </span> 1580 </div> 1581 </li> 1582 </ol> 1583 </div> 1584 <div class="most-read-customize text-center"> 1585 <button 1586 class="btn-customize font-impact mt-5 inline-flex flex-row flex-nowrap items-center justify-center gap-2 font-semibold uppercase text-gray-300 hover:text-gray-100" 1587 aria-label="Customize view settings" x-data x-on:click="$dispatch('view-settings-bar-open');"> 1588 <svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 39.8 40"><defs><clipPath id="settings_svg__a"><path fill="none" d="M0 0h39.8v40H0z"/></clipPath><clipPath id="settings_svg__b"><path fill="none" d="M0 0h39.8v40H0z"/></clipPath></defs><g clip-path="url(#settings_svg__a)"><g fill="currentColor" clip-path="url(#settings_svg__b)"><path d="M17.4 3c-.8-1.8-2.5-3-4.5-3S9.1 1.2 8.3 3H0v4h8.3c.8 1.8 2.5 3 4.6 3s3.8-1.2 4.6-3h22.4V3H17.5Zm-4.6 4.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5M27 15c-2 0-3.8 1.2-4.6 3H0v4h22.4c.8 1.8 2.5 3 4.6 3s3.8-1.2 4.6-3h8.3v-4h-8.3c-.8-1.8-2.5-3-4.6-3m0 7.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5M12.9 30c-2 0-3.8 1.2-4.6 3H0v4h8.3c.8 1.8 2.5 3 4.6 3s3.8-1.2 4.6-3h22.4v-4H17.5c-.8-1.8-2.5-3-4.6-3m0 7.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5"/></g></g></svg> 1589 <span>Customize</span> 1590 </button> 1591 </div> 1592</div> 1593 </div> 1594 </div> 1595 </main> 1596 1597 1598<div class="ad-wrapper is-fullwidth"> 1599 <div class="ad-wrapper-inner"> 1600 <div class="ad ad--footer"></div> 1601 </div> 1602 </div> 1603 1604<footer class="site-footer bg-black"> 1605 <div class="mx-auto max-w-6xl px-4 text-gray-300"> 1606 <div class="justify-between gap-10 py-8 md:flex"> 1607 <div class="site-footer-statement text-center md:w-3/5 md:text-left"> 1608 <a href="/"><svg class="mb-6 inline h-10 md:mb-4 md:h-12 lg:h-14" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 436 144.1"><defs><clipPath id="ars-full-mono_svg__a"><path fill="none" d="M0 0h436v144.1H0z"/></clipPath><clipPath id="ars-full-mono_svg__b"><path fill="none" d="M0 0h436v144.1H0z"/></clipPath></defs><g clip-path="url(#ars-full-mono_svg__a)"><g fill="currentColor" clip-path="url(#ars-full-mono_svg__b)"><path d="M218.8 83.7c-4.4 3.7-8.4 5-12.8 5-7.7 0-12.7-5.3-13.5-14h24.8l.9-5.5h-25.7c.8-8.7 5.7-14.1 12.9-14.1s8.8 1.7 12.9 5.1l1-5.9c-4-2.9-8.8-4.4-13.7-4.3-10.7 0-19.2 7.8-19.2 21.9s8.3 21.9 18.9 21.9c5.2.1 10.2-1.6 14.3-4.8zm-48.7-27.5v36.9h-5.8V56.2h-13.4v-5.3H183l.9 5.3H170Zm74.5 37.6c-11.9 0-19.5-8.8-19.5-21.8s7.8-22 19.6-22c4.3-.1 8.5 1.1 12 3.5l-.9 5.9c-3.2-2.6-7.1-4-11.2-4.1-8.6 0-13.6 6.5-13.6 16.6s5.1 16.6 13.6 16.6c4.3 0 8.5-1.6 11.9-4.2l.9 5.4c-3.7 2.6-8.2 4.1-12.8 4.1M292 93V73.5h-21.4V93h-5.8V50.9h5.8v17.5H292V50.9h5.8V93zm42.9 0-23.2-32.8V93h-5.3V50.9h5.1l22.4 31.5V50.9h5.3V93zm13.4-42.1h5.8V93h-5.8zm32.6 42.9c-11.9 0-19.5-8.8-19.5-21.8s7.8-22 19.6-22c4.3-.1 8.5 1.1 12 3.5l-.9 5.9c-3.2-2.6-7.1-4-11.2-4.1-8.6 0-13.6 6.5-13.6 16.6s5.1 16.6 13.6 16.6c4.3 0 8.5-1.6 11.9-4.2l.9 5.4c-3.7 2.6-8.2 4.1-12.8 4.1m32.9-43.1h5.8l16.3 41.5-5.6 1.2-5-13.1h-17.4L403.1 93h-5.8zm-4 24.6h13.5l-6.8-17.9zM72 0C32.3 0 0 32.3 0 72.1s32.3 72.1 72 72.1 72.1-32.3 72.1-72.1S111.8 0 72 0M53 94h-6.
16086l-.9-5.9c-4 4.4-9.6 6.8-15.6 6.8-8 0-13-4.8-13-12.3 0-11 9.4-15.4 27.8-17.3v-1.9c0-5.6-3.3-7.5-8.4-7.5S25.8 57.6 21 59.7l-1.1-7.1c5.3-2.1 10.3-3.7 17.1-3.7 10.7 0 15.9 4.3 15.9 14.2v30.8Zm19.2-26v26H64V50h6.6l1.4 9c3.1-5 8.2-9.5 15.5-9.9l1.3 7.9c-7.4.3-13.6 5.2-16.6 11m37.2 26.9c-5.6-.1-11.1-1.6-16.1-4.2l1.2-7.8c4.6 3.2 10 5 15.6 5.1 5.6 0 9-2.1 9-5.8s-2.5-5.6-10.5-7.5C98.2 72.1 94.1 69 94.1 61.1s5.9-12.2 15.6-12.2c5 0 9.9 1 14.5 3l-1.3 7.8c-4.1-2.4-8.7-3.7-13.4-3.8-5 0-7.6 1.9-7.6 5.1s2.2 4.6 9.2 6.4c10.9 2.8 15.8 5.9 15.8 14.3s-6.1 13.2-17.5 13.2"/><path d="M25.2 82.2c0 4.6 2.4 5.9 6.6 5.9s9.4-2.4 13.1-6.2V71.6c-16.3 1.6-19.7 6-19.7 10.6"/></g></g></svg> 1609</a> 1610 <p>Ars Technica has been separating the signal from 1611 the noise for over 25 years. With our unique combination of 1612 technical savvy and wide-ranging interest in the technological arts 1613 and sciences, Ars is the trusted source in a sea of information. After 1614 all, you donât need to know everything, only whatâs important.</p> 1615 <p class="mt-4"> 1616 <a href="https://bsky.app/profile/arstechnica.com" aria-label="Follow Ars Technica on Bluesky"> 1617 <svg class="inline h-12 w-12" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="bluesky-logo_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="bluesky-logo_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#bluesky-logo_svg__a)"><g clip-path="url(#bluesky-logo_svg__b)"><path fill="currentColor" d="M14.34 12.38c2.29 1.72 4.76 5.21 5.67 7.08.9-1.87 3.37-5.36 5.66-7.08 1.65-1.24 4.34-2.2 4.34.85 0 .61-.35 5.13-.56 5.86-.71 2.55-3.32 3.2-5.63 2.81 4.05.69 5.07 2.97 2.85 5.25-4.22 4.33-6.07-1.09-6.54-2.47-.09-.26-.13-.37-.13-.27 0-.1-.04.02-.13.27-.47 1.39-2.32 6.81-6.54 2.47-2.22-2.28-1.19-4.56 2.85-5.25-2.31.39-4.92-.26-5.63-2.81-.2-.73-.56-5.25-.56-5.86 0-3.06 2.68-2.1 4.34-.85Z"/></g></g></svg> 1618 </a> 1619 <a href="https://mastodon.social/@arstechnica" aria-label="Follow Ars Technica on Mastodon"> 1620 <svg class="inline h-12 w-12" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="mastodon-logo_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="mastodon-logo_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#mastodon-logo_svg__a)"><g clip-path="url(#mastodon-logo_svg__b)"><path fill="currentColor" d="M29.15 16.58c0-4.3-2.8-5.6-2.8-5.6-1.4-.7-3.9-.9-6.5-1-2.6 0-5 .3-6.4 1 0 0-2.8 1.3-2.8 5.6v3.4c.1 4.2.8 8.4 4.7 9.5 1.8.5 3.4.6 4.6.5 2.3-.1 3.5-.8 3.5-.8v-1.6s-1.7.5-3.5.4c-1.8 0-3.7-.2-4-2.4v-.6s1.8.4 4 .5c1.4 0 2.7 0 4-.2 2.5-.3 4.7-1.8 5-3.3.4-2.2.4-5.4.4-5.4zm-3.4 5.6h-2.1v-5.1c0-1.1-.5-1.6-1.4-1.6s-1.5.6-1.5 1.9v2.8h-2.1v-2.8c0-1.3-.5-1.9-1.5-1.9s-1.4.5-1.4 1.6v5.1h-2.1v-5.3c0-1.1.3-1.9.8-2.6.6-.6 1.3-1 2.2-1s1.9.4 2.4 1.2l.5.9.5-.9q.75-1.2 2.4-1.2c1.6 0 1.7.3 2.2 1 .6.6.8 1.5.8 2.6v5.3z"/></g></g></svg> 1621 </a> 1622 <a href="https://www.facebook.com/arstechnica" aria-label="Follow Ars Technica on Facebook"> 1623 <svg class="inline h-12 w-12" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="facebook-logo_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="facebook-logo_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#facebook-logo_svg__a)"><g clip-path="url(#facebook-logo_svg__b)"><path fill="currentColor" d="M17.3 13.8v2.8h-2V20h2v10h4.2V20h2.8s.3-1.6.4-3.4h-3.2v-2.3c0-.3.5-.8.9-.8h2.3V10h-3.1c-4.4 0-4.3 3.4-4.3 3.9"/></g></g></svg> 1624 </a> 1625 <a href="https://www.youtube.com/@arstechnica" aria-label="Follow Ars Technica on YouTube"> 1626 <svg class="inline h-12 w-12" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="youtube-logo_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="youtube-logo_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#youtube-logo_svg__a)"><g clip-path="url(#youtube-logo_svg__b)">
1626<path fill="currentColor" d="M29.5 15.2c-.1-.4-.3-.8-.6-1.1s-.7-.5-1.1-.7C26.2 13 20 13 20 13s-6.3 0-7.8.4c-.4.1-.8.3-1.1.7-.3.3-.5.7-.6 1.1-.4 1.6-.4 4.8-.4 4.8s0 3.3.4 4.8c.1.4.3.8.6 1.1s.7.5 1.1.7c1.6.4 7.8.4 7.8.4s6.3 0 7.8-.4c.4-.1.8-.3 1.1-.7s.5-.7.6-1.1c.4-1.6.4-4.8.4-4.8s0-3.3-.4-4.8M17.9 23v-5.9l5.2 3-5.2 3z"/></g></g></svg> 1627 </a> 1628 <a href="https://www.instagram.com/arstechnica/" aria-label="Follow Ars Technica on Instagram"> 1629 <svg class="inline h-12 w-12" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><clipPath id="insta-logo_svg__a"><path fill="none" d="M0 0h40v40H0z"/></clipPath><clipPath id="insta-logo_svg__b"><path fill="none" d="M0 0h40v40H0z"/></clipPath></defs><g clip-path="url(#insta-logo_svg__a)"><g clip-path="url(#insta-logo_svg__b)"><path fill="currentColor" d="M20 10h4.1c1.1 0 1.8.2 2.4.5.7.3 1.2.6 1.8 1.2s.9 1.1 1.2 1.8c.2.6.4 1.4.5 2.4v8.2c0 1.1-.2 1.8-.5 2.4-.3.7-.6 1.3-1.2 1.8-.6.6-1.1.9-1.8 1.2-.6.2-1.4.4-2.4.5h-8.2c-1.1 0-1.8-.2-2.4-.5-.7-.3-1.3-.6-1.8-1.2q-.75-.75-1.2-1.8c-.2-.6-.4-1.4-.5-2.4v-8.2c0-1.1.2-1.8.5-2.4.3-.7.6-1.2 1.2-1.8s1.1-.9 1.8-1.2c.6-.2 1.4-.4 2.4-.5zm0 2.5h-3.7c-.9 0-1.4.2-1.7.3-.4.1-.8.4-1.1.7s-.5.6-.7 1.1c-.1.3-.3.8-.3 1.7v7.4c0 .9.2 1.4.3 1.7.2.4.4.7.7 1.1.3.3.6.5 1.1.7.3.1.8.3 1.7.3h7.4c.9 0 1.4-.2 1.7-.3.4-.2.7-.4 1.1-.7.3-.3.5-.6.7-1.1.1-.3.3-.8.3-1.7v-7.4c0-.9-.2-1.4-.3-1.7-.1-.4-.4-.8-.7-1.1s-.7-.5-1.1-.7c-.3-.1-.8-.3-1.7-.3zm0 2.2c.7 0 1.4.1 2 .4s1.2.7 1.7 1.1c.5.5.9 1.1 1.1 1.7.3.6.4 1.3.4 2s-.1 1.4-.4 2-.7 1.2-1.1 1.7c-.5.5-1.1.9-1.7 1.1-.6.3-1.3.4-2 .4-1.4 0-2.7-.6-3.7-1.5-1-1-1.5-2.3-1.5-3.7s.6-2.7 1.5-3.7 2.3-1.5 3.7-1.5m0 8.3q1.2 0 2.1-.9T23 20c0-1.2-.3-1.5-.9-2.1S20.8 17 20 17c-1.2 0-1.5.3-2.1.9q-.9.9-.9 2.1c0 1.2.3 1.5.9 2.1q.9.9 2.1.9m6.6-8.1c0 .4-.2.7-.4 1s-.6.4-1 .4-.7-.2-1-.4c-.3-.3-.4-.6-.4-1s.2-.7.4-1c.3-.3.6-.4 1-.4s.7.2 1 .4c.3.3.4.6.4 1"/></g></g></svg> 1630 </a> 1631 </p> 1632 </div> 1633 <div class="text-center md:w-1/5 md:text-left"> 1634 <span class="font-impact mb-4 mt-6 block font-semibold uppercase">More 1635 from Ars 1636 </span> 1637 <ul id="menu-more_navigation" class="menu"><li id="menu-item-1971876" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1971876"><a href="https://arstechnica.com/about-us/">About Us</a></li> 1638<li id="menu-item-1971877" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1971877"><a href="https://arstechnica.com/staff-directory/">Staff Directory</a></li> 1639<li id="menu-item-1971879" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1971879"><a href="https://arstechnica.com/general-faq/">General FAQ</a></li> 1640<li id="menu-item-2106316" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2106316"><a href="https://arstechnica.com/ars-technica-posting-guidelines-v3-0/">Posting Guidelines</a></li> 1641<li id="menu-item-2151139" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2151139"><a href="https://arstechnica.com/ai-policy/">AI Policy</a></li> 1642<li id="menu-item-1971880" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1971880"><a href="https://arstechnica.com/rss-feeds/">RSS Feeds</a></li> 1643</ul> 1644 </div> 1645 <div class="text-center md:w-1/5 md:text-left"> 1646 <span class="font-impact mb-4 mt-6 block font-semibold uppercase">Contact</span> 1647 <ul id="menu-contact_navigation" class="menu"><li id="menu-item-1971881" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1971881"><a href="https://arstechnica.com/contact-us/">Contact us</a></li> 1648<li id="menu-item-1971884" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1971884"><a target="_blank" href="mailto:[email protected]">Advertise with us</a></li> 1649<li id="menu-item-1971882" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1971882"><a href="https://arstechnica.com/reprints/">Reprints</a></li> 1650</ul> 1651 </div> 1652 </div> 1653 1654 <div class="pb-10 pt-5" id="copyright-terms"> 1655 <div class="mb-4 flex flex-row flex-nowrap items-center gap-2"> 1656 <svg class="h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14"><path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"/><path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7m-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"/><path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8s-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0s-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2
1656-.6 0-.8s.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0" style="fill:#fff"/><path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8s.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0" style="fill:#06f"/></svg> 1657 <button id="fides-modal-link"> 1658 Manage Preferences 1659 </button> 1660 </div> 1661 1662 © 2026 Condé Nast. All rights reserved. Use of and/or 1663 registration on any portion of this site constitutes acceptance of our <a 1664 href="https://www.condenast.com/user-agreement/">User Agreement</a> and 1665 <a href="https://www.condenast.com/privacy-policy/">Privacy Policy and 1666 Cookie Statement</a> and <a href="/amendment-to-conde-nast-user-agreement-privacy-policy/">Ars 1667 Technica Addendum</a> and <a href="https://www.condenast.com/privacy-policy/#california">Your 1668 California Privacy Rights</a>. Ars Technica may earn compensation on 1669 sales from links on this site. <a href="/affiliate-link-policy/">Read our 1670 affiliate link policy</a>. The material on this site may not be 1671 reproduced, distributed, transmitted, cached or otherwise used, except 1672 with the prior written permission of Condé Nast. <a href="https://www.aboutads.info/">Ad 1673 Choices</a> 1674 </div> 1675 </div> 1676</footer> 1677 </div> 1678 1679
1679<script type="speculationrules"> 1680{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp/wp-*.php","/wp/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/ars-v9/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 1681</script>
vendor: 1 bytes, line 1681
1681
1682<script type="text/javascript" src="https://s.skimresources.com/js/100098X1555750.skimlinks.js"></script>
vendor: 1 bytes, line 1682
1682
1683<script> 1684 function loadInterlude() { 1685 const div = document.querySelector('.ars-interlude-container'); 1686 if (!div) { 1687 return; 1688 } 1689 1690 // Exclude on sponsored posts 1691 if (document.querySelector('.single-ars_sponsored_post')) { 1692 return; 1693 } 1694 1695 // If on an article page and the interlude container exists 1696 if (document.querySelector('body.single')) { 1697 const parent = div.parentElement; 1698 1699 // Get all the top level elements in the parent that aren't the interlude container 1700 const elems = Array.from(parent.children).filter((elem) => elem !== div); 1701 // Loop over the elements in reverse order 1702 for (let i = elems.length - 1; i >= 0; i--) { 1703 const elem = elems[i]; 1704 // If the next element isn't one of: h1, h2, h3, h4, h5, h6, or div, insert the interlude container before it 1705 const nextElem = elems[i - 1]; 1706 if (nextElem && !['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'DIV'].includes(nextElem.tagName)) { 1707 // Add .my-5 to the interlude container 1708 div.classList.add('my-5'); 1709 parent.insertBefore(div, elem); 1710 1711 const src = 1712 'https://player.cnevids.com/interlude/arstechnica.js?videoEmbedPosition=inlineEmbedded'; 1713 const s = document.createElement('script'); 1714 s.setAttribute('async', true); 1715 s.setAttribute('src', src); 1716 document.body.appendChild(s); 1717 1718 break; 1719 } 1720 } 1721 } 1722 } 1723 1724 // Only load the video player if we have analytics consent (post-consent) 1725 function checkAndLoadInterlude() { 1726 if (window.Fides?.consent?.analytics) { 1727 loadInterlude(); 1728 } 1729 } 1730 1731 // Check if Fides is already initialized 1732 if (window.Fides?.initialized) { 1733 checkAndLoadInterlude(); 1734 } else { 1735 // Wait for Fides to initialize 1736 window.addEventListener('FidesInitialized', checkAndLoadInterlude); 1737 } 1738 1739 // Re-check whenever consent is updated 1740 window.addEventListener('FidesUpdated', checkAndLoadInterlude); 1741</script>
1741 1742<!-- Parse.ly start -->
1743<script> 1744 // Conditionally load Parse.ly script if Fides.consent.analytics is true 1745 function loadParsely() { 1746 const existingScript = document.getElementById("parsely-cfg"); 1747 if (window.Fides?.consent?.analytics && !existingScript) { 1748 var script = document.createElement("script"); 1749 script.src = "//fpa-cdn.arstechnica.com/keys/arstechnica.com/p.js"; 1750 script.async = true; 1751 script.setAttribute("id", "parsely-cfg"); 1752 document.head.appendChild(script); 1753 } else if (!window.Fides?.consent?.analytics && existingScript) { 1754 existingScript.remove(); 1755 } 1756 } 1757 if (window.Fides?.initialized) { 1758 loadParsely(); 1759 } else { 1760 window.addEventListener("FidesInitialized", loadParsely); 1761 } 1762 addEventListener("FidesUpdated", loadParsely); 1763</script>
1763 1764<!-- Parse.ly end -->
1765<script id="article_forum_connect_iframe_resizer-js" src="https://cdn.arstechnica.net/wp-content/plugins/article-forum-connect/public/js/iframe-resizer.parent.js?ver=5.3.1"></script>
vendor: 1 bytes, line 1765
1765
1766<script id="article_forum_connect_iframe-js" src="https://cdn.arstechnica.net/wp-content/plugins/article-forum-connect/public/js/iframe.js?ver=1.2.4"></script>
vendor: 1 bytes, line 1766
1766
1767<script id="app/0-js-before"> 1768(()=>{"use strict";var e,r,t,o,a,n,i,s={},u={};function l(e){var r=u[e];if(void 0!==r)return r.exports;var t=u[e]={exports:{}};return s[e].call(t.exports,t,t.exports,l),t.exports}l.m=s,e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",r="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",t="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",o=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},l.a=(a,n,i)=>{var s;i&&((s=[]).d=-1);var u,l,c,d=new Set,p=a.exports,f=new Promise(((e,r)=>{c=r,l=e}));f[r]=p,f[e]=e=>(s&&e(s),d.forEach(e),f.catch((e=>{}))),a.exports=f,n((a=>{var n;u=(a=>a.map((a=>{if(null!==a&&"object"==typeof a){if(a[e])return a;if(a.then){var n=[];n.d=0,a.then((e=>{i[r]=e,o(n)}),(e=>{i[t]=e,o(n)}));var i={};return i[e]=e=>e(n),i}}var s={};return s[e]=e=>{},s[r]=a,s})))(a);var i=()=>u.map((e=>{if(e[t])throw e[t];return e[r]})),l=new Promise((r=>{(n=()=>r(i)).r=0;var t=e=>e!==s&&!d.has(e)&&(d.add(e),e&&!e.d&&(n.r++,e.push(n)));u.map((r=>r[e](t)))}));return n.r?l:i()}),(e=>(e?c(f[t]=e):l(p),o(s)))),s&&s.d<0&&(s.d=0)},a=[],l.O=(e,r,t,o)=>{if(!r){var n=1/0;for(c=0;c<a.length;c++){for(var[r,t,o]=a[c],i=!0,s=0;s<r.length;s++)(!1&o||n>=o)&&Object.keys(l.O).every((e=>l.O[e](r[s])))?r.splice(s--,1):(i=!1,o<n&&(n=o));if(i){a.splice(c--,1);var u=t();void 0!==u&&(e=u)}}return e}o=o||0;for(var c=a.length;c>0&&a[c-1][2]>o;c--)a[c]=a[c-1];a[c]=[r,t,o]},l.d=(e,r)=>{for(var t in r)l.o(r,t)&&!l.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce(((r,t)=>(l.f[t](e,r),r)),[])),l.u=e=>"js/"+{233:"db",321:"subscribe",471:"cntracking"}[e]+"."+{233:"4004df",321:"fb54b0",471:"4577bc"}[e]+".js",l.miniCssF=e=>{},l.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),n={},i="@roots/bud/sage:",l.l=(e,r,t,o)=>{if(n[e])n[e].push(r);else{var a,s;if(void 0!==t)for(var u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var d=u[c];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==i+t){a=d;break}}a||(s=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,l.nc&&a.setAttribute("nonce",l.nc),a.setAttribute("data-webpack",i+t),a.src=e),n[e]=[r];var p=(r,t)=>{a.onerror=a.onload=null,clearTimeout(f);var o=n[e];if(delete n[e],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach((e=>e(t))),r)return r(t)},f=setTimeout(p.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),s&&document.head.appendChild(a)}},l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.p="/wp-content/themes/ars-v9/public/",(()=>{var e={121:0};l.f.j=(r,t)=>{var o=l.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else if(121!=r){var a=new Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=a);var n=l.p+l.u(r),i=new Error;l.l(n,(t=>{if(l.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+a+": "+n+")",i.name="ChunkLoadError",i.type=a,i.request=n,o[1](i)}}),"chunk-"+r,r)}else e[r]=0},l.O.j=r=>0===e[r];var r=(r,t)=>{var o,a,[n,i,s]=t,u=0;if(n.some((r=>0!==e[r]))){for(o in i)l.o(i,o)&&(l.m[o]=i[o]);if(s)var c=s(l)}for(r&&r(t);u<n.length;u++)a=n[u],l.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return l.O(c)},t=globalThis.webpackChunk_roots_bud_sage=globalThis.webpackChunk_roots_bud_sage||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})(); 1769//# sourceURL=app%2F0-js-before 1770</script>
vendor: 1 bytes, line 1770
1770
1771<script id="app/0-js" src="https://cdn.arstechnica.net/wp-content/themes/ars-v9/public/js/app.aab637.js"></script>
vendor: 1 bytes, line 1771
1771
1772<script id="ads/0-js" src="https://cdn.arstechnica.net/wp-content/themes/ars-v9/public/js/ads.ae0b0b.js"></script>
vendor: 1 bytes, line 1772
1772
1773<script id="stats/0-js" src="https://cdn.arstechnica.net/wp-content/themes/ars-v9/public/js/stats.01cffe.js"></script>
1773 1774</body> 1775 1776</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.