PageSourceSearch

https://arstechnica.com/gadgets/2026/09/its-500-toothbrush-disappe…d-from-stores-dyson-wont-fully-explain-why/

html arstechnica.com collected 2026-09-24 06:03:09 UTC 153,109 bytes, 1,776 lines download raw bytes

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&#039;t say what&#039;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&#039;t say what&#039;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&#039;t say what&#039;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&#039;s next, delivering the most original and complete take you&#039;ll find anywhere on innovation&#039;s impact on technology, science, business and culture. Wired.com&#039;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&apos;t say what&apos;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 &amp; 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 &amp; 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    &nbsp;&nbsp;<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&#8217;t say what&#8217;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    &nbsp;&nbsp;<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&amp;theme=auto&amp;wp_data=eyJ1cmwiOiJodHRwczpcL1wvYXJzdGVjaG5pY2EuY29tXC9nYWRnZXRzXC8yMDI2XC8wOVwvaXRzLTUwMC10b290aGJydXNoLWRpc2FwcGVhcmVkLWZyb20tc3RvcmVzLWR5c29uLXdvbnQtZnVsbHktZXhwbGFpbi13aHlcLyIsIm9wZW5fY29tbWVudHMiOiJjb21tZW50cz0xIn0=&amp;"
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&#039;m only interested in &quot;good deals&quot; 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.