PageSourceSearch

https://idlerobot.ai/pages/about

html idlerobot.ai collected 2026-10-05 12:57:25 UTC 110,658 bytes, 2,382 lines download raw bytes

1<!doctype html>
2<html
3  
4  lang="en"
5>
6  <head>
7    <meta name="facebook-domain-verification" content="6lum3f647rugyqwmzptzdqcoionr27" /><link
8    rel="icon"
9    type="image/png"
10    sizes="32x32"
11    href="//idlerobot.ai/cdn/shop/t/1/assets/idle-robot-favicon_small.png?v=89376690190735388251787695044"
12  >
13  <link
14    rel="icon"
15    type="image/png"
16    sizes="16x16"
17    href="//idlerobot.ai/cdn/shop/t/1/assets/idle-robot-favicon_small.png?v=89376690190735388251787695044"
18  >
19  <link
20    rel="apple-touch-icon"
21    sizes="180x180"
22    href="//idlerobot.ai/cdn/shop/t/1/assets/idle-robot-favicon_small.png?v=89376690190735388251787695044"
23  >
24    
25
26
27<meta charset="utf-8">
28<meta
29  http-equiv="X-UA-Compatible"
30  content="IE=edge"
31>
32<meta
33  name="viewport"
34  content="width=device-width,initial-scale=1"
35>
36<meta
37  name="theme-color"
38  content="#060A12"
39>
40
41<meta
42  property="og:site_name"
43  content="IDLE Robot"
44>
45<meta
46  property="og:url"
47  content="https://idlerobot.ai/pages/about"
48>
49<meta
50  property="og:title"
51  content="About"
52>
53<meta
54  property="og:type"
55  content="website"
56>
57<meta
58  property="og:description"
59  content="Idle Robot publishes practical field guides for people building small AI agents that do repetitive digital work — and earn while they do it.We focus on realistic systems, honest economics, and workflows you can actually ship — not hype, not $10k promises."
60><meta
61    property="og:image"
62    content="http://idlerobot.ai/cdn/shop/files/lockup_horizontal_final.png?v=1787875348"
63  >
64  <meta
65    property="og:image:secure_url"
66    content="https://idlerobot.ai/cdn/shop/files/lockup_horizontal_final.png?v=1787875348"
67  >
68  <meta
69    property="og:image:width"
70    content="1440"
71  >
72  <meta
73    property="og:image:height"
74    content="521"
75  ><meta
76  name="twitter:card"
77  content="summary_large_image"
78>
79<meta
80  name="twitter:title"
81  content="About"
82>
83<meta
84  name="twitter:description"
85  content="Idle Robot publishes practical field guides for people building small AI agents that do repetitive digital work — and earn while they do it.We focus on realistic systems, honest economics, and workflows you can actually ship — not hype, not $10k promises."
86>
87
88<title>
89  About
90 &ndash; IDLE Robot</title>
91
92<link
93  rel="canonical"
94  href="https://idlerobot.ai/pages/about"
95>
96
97
98  <meta
99    name="description"
100    content="Idle Robot publishes practical field guides for people building small AI agents that do repetitive digital work — and earn while they do it.We focus on realistic systems, honest economics, and workflows you can actually ship — not hype, not $10k promises."
101  >
102
103<link rel="preconnect" href="https://fonts.googleapis.com">
104    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
105    <link href="https://fonts.googleapis.com/css2?family=Archivo:wdth,[email protected],400..900&family=IBM+Plex+Mono:wght@400;500;600&family=Newsreader:opsz,[email protected],300..600&display=swap" rel="stylesheet"><link href="//idlerobot.ai/cdn/shop/t/1/assets/overflow-list.css?v=16727044177065489451786965744" as="style" rel="preload">
106<link href="//idlerobot.ai/cdn/shop/t/1/assets/base.css?v=132492467252896707531786965744" rel="stylesheet" type="text/css" media="all" />
107<link href="//idlerobot.ai/cdn/shop/t/1/assets/idle-robot.css?v=125998312662569948001787754814" rel="stylesheet" type="text/css" media="all" />
108
109
110
111
112
113<link href="//idlerobot.ai/cdn/fonts/newsreader/newsreader_n4.b5d1a51abefc3e451a1095094f8cb52bc71994eb.woff2" as="font" type="font/woff2" fetchpriority="low" crossorigin="anonymous" rel="preload">
114<link href="//idlerobot.ai/cdn/fonts/ibm_plex_mono/ibmplexmono_n5.39ead17e891cf6bcec4ff814d842b48739293b9f.woff2" as="font" type="font/woff2" fetchpriority="low" crossorigin="anonymous" rel="preload">
115<link href="//idlerobot.ai/cdn/fonts/archivo/archivo_n8.4c318bbfe051278d20c9ee33453ddd4ea08d8b06.woff2" as="font" type="font/woff2" fetchpriority="low" crossorigin="anonymous" rel="preload">
116<link href="//idlerobot.ai/cdn/fonts/archivo/archivo_n8.4c318bbfe051278d20c9ee33453ddd4ea08d8b06.woff2" as="font" type="font/woff2" fetchpriority="low" crossorigin="anonymous" rel="preload">
117
118
119<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 119
119
120<script type="importmap">
121  {
122    "imports": {
123      "@theme/overflow-list": "//idlerobot.ai/cdn/shop/t/1/assets/overflow-list.js?v=46858356770684902511786965744",
124      "@theme/component": "//idlerobot.ai/cdn/shop/t/1/assets/component.js?v=175690430936884589731786965744",
125      "@theme/dialog": "//idlerobot.ai/cdn/shop/t/1/assets/dialog.js?v=144816527575655702281786965744",
126      "@theme/events": "//idlerobot.ai/cdn/shop/t/1/assets/events.js?v=99399773727497444581786965744",
127      "@shopify/events": "https://cdn.shopify.com/storefront/standard-events.js",
128      "@theme/view-event-elements": "//idlerobot.ai/cdn/shop/t/1/assets/view-event-elements.js?v=34258756885466567141786965744",
129      "@theme/focus": "//idlerobot.ai/cdn/shop/t/1/assets/focus.js?v=60436577539430446401786965744",
130      "@theme/morph": "//idlerobot.ai/cdn/shop/t/1/assets/morph.js?v=182601902166245204061786965744",
131      "@theme/paginated-list": "//idlerobot.ai/cdn/shop/t/1/assets/paginated-list.js?v=71290058904108491691786965744",
132      "@theme/performance": "//idlerobot.ai/cdn/shop/t/1/assets/performance.js?v=171015751390534793081786965744",
133      "@theme/product-form": "//idlerobot.ai/cdn/shop/t/1/assets/product-form.js?v=156247955454460663281786965744",
134      "@theme/recently-viewed-products": "//idlerobot.ai/cdn/shop/t/1/assets/recently-viewed-products.js?v=94729125001750262651786965744",
135      "@theme/scrolling": "//idlerobot.ai/cdn/shop/t/1/assets/scrolling.js?v=162288454571026455011786965744",
136      "@theme/section-renderer": "//idlerobot.ai/cdn/shop/t/1/assets/section-renderer.js?v=44511745960026958271786965744",
137      "@theme/section-hydration": "//idlerobot.ai/cdn/shop/t/1/assets/section-hydration.js?v=108434990705342316311786965744",
138      "@theme/money-formatting": "//idlerobot.ai/cdn/shop/t/1/assets/money-formatting.js?v=160151249720534550011786965744",
139      "@theme/utilities": "//idlerobot.ai/cdn/shop/t/1/assets/utilities.js?v=46961525399390006791786965744",
140      "@theme/variant-picker": "//idlerobot.ai/cdn/shop/t/1/assets/variant-picker.js?v=76692244208061220611786965744",
141      "@theme/variant-resolution": "//idlerobot.ai/cdn/shop/t/1/assets/variant-resolution.js?v=69293302205961280521786965744",
142      "@theme/media-gallery": "//idlerobot.ai/cdn/shop/t/1/assets/media-gallery.js?v=154207211298275592001786965744",
143      "@theme/quick-add": "//idlerobot.ai/cdn/shop/t/1/assets/quick-add.js?v=160295260742220749141786965744",
144      "@theme/paginated-list-aspect-ratio": "//idlerobot.ai/cdn/shop/t/1/assets/paginated-list-aspect-ratio.js?v=25254270272143792451786965744",
145      "@theme/popover-polyfill": "//idlerobot.ai/cdn/shop/t/1/assets/popover-polyfill.js?v=119029313658895111201786965744",
146      "@theme/component-quantity-selector": "//idlerobot.ai/cdn/shop/t/1/assets/component-quantity-selector.js?v=67906657287482036641786965744",
147      "@theme/comparison-slider": "//idlerobot.ai/cdn/shop/t/1/assets/comparison-slider.js?v=106705562947035711941786965744",
148      "@theme/sticky-add-to-cart": "//idlerobot.ai/cdn/shop/t/1/assets/sticky-add-to-cart.js?v=130489688094345781431786965744",
149      "@theme/fly-to-cart": "//idlerobot.ai/cdn/shop/t/1/assets/fly-to-cart.js?v=48483246440248933081786965744",
150      "@theme/scroll-container": "//idlerobot.ai/cdn/shop/t/1/assets/scroll-container.js?v=127018149358875384221786965744",
151      "@theme/theme-drawer": "//idlerobot.ai/cdn/shop/t/1/assets/theme-drawer.js?v=155110645205299884131786965744"
152    }
153  }
154</script>
154<script
155  src="//idlerobot.ai/cdn/shop/t/1/assets/standard-actions-override.js?v=171683365447094389611786965744"
156  type="module"
157></script>
157
158
159<script
160  src="//idlerobot.ai/cdn/shop/t/1/assets/page-view-event.js?v=12823247316348680231786965744"
161  type="module"
162  defer
163></script>
163
164
165<script
166  src="//idlerobot.ai/cdn/shop/t/1/assets/view-transitions.js?v=116552130480572511441786965744"
167  async
168  
169></script>
169
170
171<link
172  rel="modulepreload"
173  href="//idlerobot.ai/cdn/shop/t/1/assets/utilities.js?v=46961525399390006791786965744"
174  fetchpriority="low"
175>
176<link
177  rel="modulepreload"
178  href="//idlerobot.ai/cdn/shop/t/1/assets/component.js?v=175690430936884589731786965744"
179  fetchpriority="low"
180>
181<link
182  rel="modulepreload"
183  href="//idlerobot.ai/cdn/shop/t/1/assets/section-renderer.js?v=44511745960026958271786965744"
184  fetchpriority="low"
185>
186<link
187  rel="modulepreload"
188  href="//idlerobot.ai/cdn/shop/t/1/assets/section-hydration.js?v=108434990705342316311786965744"
189  fetchpriority="low"
190>
191<link
192  rel="modulepreload"
193  href="//idlerobot.ai/cdn/shop/t/1/assets/morph.js?v=182601902166245204061786965744"
194  fetchpriority="low"
195>
196
197
198
199<link
200  rel="modulepreload"
201  href="//idlerobot.ai/cdn/shop/t/1/assets/focus.js?v=60436577539430446401786965744"
202  fetchpriority="low"
203>
204<link
205  rel="modulepreload"
206  href="//idlerobot.ai/cdn/shop/t/1/assets/recently-viewed-products.js?v=94729125001750262651786965744"
207  fetchpriority="low"
208>
209<link
210  rel="modulepreload"
211  href="//idlerobot.ai/cdn/shop/t/1/assets/scrolling.js?v=162288454571026455011786965744"
212  fetchpriority="low"
213>
214<link
215  rel="modulepreload"
216  href="//idlerobot.ai/cdn/shop/t/1/assets/events.js?v=99399773727497444581786965744"
217  fetchpriority="low"
218>
219<script
220  src="//idlerobot.ai/cdn/shop/t/1/assets/popover-polyfill.js?v=119029313658895111201786965744"
221  type="module"
222  fetchpriority="low"
223></script>
vendor: 1 bytes, line 223
223
224<script
225  src="//idlerobot.ai/cdn/shop/t/1/assets/overflow-list.js?v=46858356770684902511786965744"
226  type="module"
227  fetchpriority="low"
228></script>
vendor: 1 bytes, line 228
228
229<script
230  src="//idlerobot.ai/cdn/shop/t/1/assets/quick-add.js?v=160295260742220749141786965744"
231  type="module"
232  fetchpriority="low"
233></script>
233
234
235  
235<script
236    src="//idlerobot.ai/cdn/shop/t/1/assets/cart-discount.js?v=138990160074728809221786965744"
237    type="module"
238    fetchpriority="low"
239  ></script>
239
240
241
242<script
243  src="//idlerobot.ai/cdn/shop/t/1/assets/dialog.js?v=144816527575655702281786965744"
244  type="module"
245  fetchpriority="low"
246></script>
vendor: 1 bytes, line 246
246
247<script
248  src="//idlerobot.ai/cdn/shop/t/1/assets/variant-picker.js?v=76692244208061220611786965744"
249  type="module"
250  fetchpriority="low"
251></script>
vendor: 1 bytes, line 251
251
252<script
253  src="//idlerobot.ai/cdn/shop/t/1/assets/product-card.js?v=80689566448612614681786965744"
254  type="module"
255  fetchpriority="low"
256></script>
vendor: 1 bytes, line 256
256
257<script
258  src="//idlerobot.ai/cdn/shop/t/1/assets/product-form.js?v=156247955454460663281786965744"
259  type="module"
260  fetchpriority="low"
261></script>
vendor: 1 bytes, line 261
261
262<script
263  src="//idlerobot.ai/cdn/shop/t/1/assets/fly-to-cart.js?v=48483246440248933081786965744"
264  type="module"
265  fetchpriority="low"
266></script>
vendor: 1 bytes, line 266
266
267<script
268  src="//idlerobot.ai/cdn/shop/t/1/assets/accordion-custom.js?v=105323356731531709191786965744"
269  type="module"
270  fetchpriority="low"
271></script>
vendor: 1 bytes, line 271
271
272<script
273  src="//idlerobot.ai/cdn/shop/t/1/assets/media.js?v=37825095869491791421786965744"
274  type="module"
275  fetchpriority="low"
276></script>
vendor: 1 bytes, line 276
276
277<script
278  src="//idlerobot.ai/cdn/shop/t/1/assets/product-price.js?v=179333985604099329921786965744"
279  type="module"
280  fetchpriority="low"
281></script>
vendor: 1 bytes, line 281
281
282<script
283  src="//idlerobot.ai/cdn/shop/t/1/assets/product-sku.js?v=28741104639155857071786965744"
284  type="module"
285  fetchpriority="low"
286></script>
vendor: 1 bytes, line 286
286
287<script
288  src="//idlerobot.ai/cdn/shop/t/1/assets/product-inventory.js?v=7173209571153411411786965744"
289  type="module"
290  fetchpriority="low"
291></script>
vendor: 1 bytes, line 291
291
292<script
293  src="//idlerobot.ai/cdn/shop/t/1/assets/show-more.js?v=94563802205717136101786965744"
294  type="module"
295  fetchpriority="low"
296></script>
vendor: 1 bytes, line 296
296
297<script
298  src="//idlerobot.ai/cdn/shop/t/1/assets/slideshow.js?v=28306258147874261831786965744"
299  type="module"
300  fetchpriority="low"
301></script>
vendor: 1 bytes, line 301
301
302<script
303  src="//idlerobot.ai/cdn/shop/t/1/assets/layered-slideshow.js?v=30135417790894624731786965744"
304  type="module"
305  fetchpriority="low"
306></script>
vendor: 1 bytes, line 306
306
307<script
308  src="//idlerobot.ai/cdn/shop/t/1/assets/anchored-popover.js?v=143987075196095667371786965744"
309  type="module"
310  fetchpriority="low"
311></script>
vendor: 1 bytes, line 311
311
312<script
313  src="//idlerobot.ai/cdn/shop/t/1/assets/floating-panel.js?v=151277338116891310371786965744"
314  type="module"
315  fetchpriority="low"
316></script>
vendor: 1 bytes, line 316
316
317<script
318  src="//idlerobot.ai/cdn/shop/t/1/assets/video-background.js?v=25237992823806706551786965744"
319  type="module"
320  fetchpriority="low"
321></script>
vendor: 1 bytes, line 321
321
322<script
323  src="//idlerobot.ai/cdn/shop/t/1/assets/component-quantity-selector.js?v=67906657287482036641786965744"
324  type="module"
325  fetchpriority="low"
326></script>
vendor: 1 bytes, line 326
326
327<script
328  src="//idlerobot.ai/cdn/shop/t/1/assets/media-gallery.js?v=154207211298275592001786965744"
329  type="module"
330  fetchpriority="low"
331></script>
vendor: 1 bytes, line 331
331
332<script
333  src="//idlerobot.ai/cdn/shop/t/1/assets/rte-formatter.js?v=40306132146590816021786965744"
334  type="module"
335  fetchpriority="low"
336></script>
vendor: 1 bytes, line 336
336
337<script
338  src="//idlerobot.ai/cdn/shop/t/1/assets/volume-pricing.js?v=15442793518842484731786965744"
339  type="module"
340  fetchpriority="low"
341></script>
vendor: 1 bytes, line 341
341
342<script
343  src="//idlerobot.ai/cdn/shop/t/1/assets/price-per-item.js?v=115937180292451397851786965744"
344  type="module"
345  fetchpriority="low"
346></script>
vendor: 1 bytes, line 346
346
347<script
348  src="//idlerobot.ai/cdn/shop/t/1/assets/volume-pricing-info.js?v=94479640769665442661786965744"
349  type="module"
350  fetchpriority="low"
351></script>
351
352
353
354
355
356
357<script
358  src="//idlerobot.ai/cdn/shop/t/1/assets/auto-close-details.js?v=58350291535404441581786965744"
359  defer="defer"
360></script>
360
361
362<script>
363  const Theme = {
364    translations: {
365      placeholder_image: `Placeholder image`,
366      added: `Added`,
367      recipient_form_fields_visible: `Recipient form fields are now visible`,
368      recipient_form_fields_hidden: `Recipient form fields are now hidden`,
369      recipient_form_error: `There was an error with the form submission`,
370      items_added_to_cart_one: `1 item added to cart`,
371      items_added_to_cart_other: `{{ count }} items added to cart`,
372      cart_count: `Total items in cart`,
373    },
374    routes: {
375      cart_add_url: '/cart/add.js',
376      cart_change_url: '/cart/change',
377      cart_update_url: '/cart/update',
378      cart_url: '/cart',
379      predictive_search_url: '/search/suggest',
380      search_url: '/search',
381    },
382    template: {
383      name: 'page',
384    },
385  };
386</script>
386
387<style data-shopify>
388@font-face {
389  font-family: Newsreader;
390  font-weight: 400;
391  font-style: normal;
392  font-display: swap;
393  src: url("//idlerobot.ai/cdn/fonts/newsreader/newsreader_n4.b5d1a51abefc3e451a1095094f8cb52bc71994eb.woff2") format("woff2"),
394       url("//idlerobot.ai/cdn/fonts/newsreader/newsreader_n4.faab5347776428001f201c86fe4c783d23b58a25.woff") format("woff");
395}
396@font-face {
397  font-family: Newsreader;
398  font-weight: 700;
399  font-style: normal;
400  font-display: swap;
401  src: url("//idlerobot.ai/cdn/fonts/newsreader/newsreader_n7.23ab8134dd970213aaed7699491a8a2cb47dae45.woff2") format("woff2"),
402       url("//idlerobot.ai/cdn/fonts/newsreader/newsreader_n7.d508f4855ca4dedbd83fa582e42d6513c7e89b8a.woff") format("woff");
403}
404@font-face {
405  font-family: Newsreader;
406  font-weight: 400;
407  font-style: italic;
408  font-display: swap;
409  src: url("//idlerobot.ai/cdn/fonts/newsreader/newsreader_i4.b6c896efb016d5bce4e554059dfe501c6316187d.woff2") format("woff2"),
410       url("//idlerobot.ai/cdn/fonts/newsreader/newsreader_i4.09e7328c6ebf6de7a11f1c4b9d76fc90424e3a85.woff") format("woff");
411}
412@font-face {
413  font-family: Newsreader;
414  font-weight: 700;
415  font-style: italic;
416  font-display: swap;
417  src: url("//idlerobot.ai/cdn/fonts/newsreader/newsreader_i7.c957ba3bc7bb44bfca68314e689a88a6cb340dbe.woff2") format("woff2"),
418       url("//idlerobot.ai/cdn/fonts/newsreader/newsreader_i7.600beb959cc55275297418e02b7b341685f85101.woff") format("woff");
419}
420@font-face {
421  font-family: "IBM Plex Mono";
422  font-weight: 500;
423  font-style: normal;
424  font-display: swap;
425  src: url("//idlerobot.ai/cdn/fonts/ibm_plex_mono/ibmplexmono_n5.39ead17e891cf6bcec4ff814d842b48739293b9f.woff2") format("woff2"),
426       url("//idlerobot.ai/cdn/fonts/ibm_plex_mono/ibmplexmono_n5.79ceb37c63afec573e544510d7bf4608130fc62e.woff") format("woff");
427}
428@font-face {
429  font-family: "IBM Plex Mono";
430  font-weight: 700;
431  font-style: normal;
432  font-display: swap;
433  src: url("//idlerobot.ai/cdn/fonts/ibm_plex_mono/ibmplexmono_n7.6a9b18b619cbf4c48e9d7d5968322f295cba9cba.woff2") format("woff2"),
434       url("//idlerobot.ai/cdn/fonts/ibm_plex_mono/ibmplexmono_n7.7bf2d794e823232ea32663a7e823211d65a7ea51.woff") format("woff");
435}
436@font-face {
437  font-family: "IBM Plex Mono";
438  font-weight: 500;
439  font-style: italic;
440  font-display: swap;
441  src: url("//idlerobot.ai/cdn/fonts/ibm_plex_mono/ibmplexmono_i5.3c9ad652af1a1507262734f75510a38286df8e75.woff2") format("woff2"),
442       url("//idlerobot.ai/cdn/fonts/ibm_plex_mono/ibmplexmono_i5.aee5d3c3ff503033ee294e9d87c9e4b58597dacd.woff") format("woff");
443}
444@font-face {
445  font-family: "IBM Plex Mono";
446  font-weight: 700;
447  font-style: italic;
448  font-display: swap;
449  src: url("//idlerobot.ai/cdn/fonts/ibm_plex_mono/ibmplexmono_i7.4e646827253c5867dbe243421e8a20179154454a.woff2") format("woff2"),
450       url("//idlerobot.ai/cdn/fonts/ibm_plex_mono/ibmplexmono_i7.c6d0cd370645f7c9e10291958804b404d9af4632.woff") format("woff");
451}
452@font-face {
453  font-family: Archivo;
454  font-weight: 800;
455  font-style: normal;
456  font-display: swap;
457  src: url("//idlerobot.ai/cdn/fonts/archivo/archivo_n8.4c318bbfe051278d20c9ee33453ddd4ea08d8b06.woff2") format("woff2"),
458       url("//idlerobot.ai/cdn/fonts/archivo/archivo_n8.614b0048a7b0eea786997e6204cc712a71eb8818.woff") format("woff");
459}
460@font-face {
461  font-family: Archivo;
462  font-weight: 700;
463  font-style: normal;
464  font-display: swap;
465  src: url("//idlerobot.ai/cdn/fonts/archivo/archivo_n7.651b020b3543640c100112be6f1c1b8e816c7f13.woff2") format("woff2"),
466       url("//idlerobot.ai/cdn/fonts/archivo/archivo_n7.7e9106d320e6594976a7dcb57957f3e712e83c96.woff") format("woff");
467}
468@font-face {
469  font-family: Archivo;
470  font-weight: 800;
471  font-style: italic;
472  font-display: swap;
473  src: url("//idlerobot.ai/cdn/fonts/archivo/archivo_i8.327900970f2752919b95bdf7b76e3a65a89b0828.woff2") format("woff2"),
474       url("//idlerobot.ai/cdn/fonts/archivo/archivo_i8.5d6a35c740afd58d92b0296b38766b031bd31ab8.woff") format("woff");
475}
476@font-face {
477  font-family: Archivo;
478  font-weight: 700;
479  font-style: italic;
480  font-display: swap;
481  src: url("//idlerobot.ai/cdn/fonts/archivo/archivo_i7.3dc798c6f261b8341dd97dd5c78d97d457c63517.woff2") format("woff2"),
482       url("//idlerobot.ai/cdn/fonts/archivo/archivo_i7.3b65e9d326e7379bd5f15bcb927c5d533d950ff6.woff") format("woff");
483}
484
485
486  :root {
487    /* Page Layout */
488    --sidebar-width: 25rem;
489    --theme-drawer-width: 30rem;
490    --narrow-content-width: 36rem;
491    --normal-content-width: 42rem;
492    --narrow-page-width: 90rem;
493    --normal-page-width: 120rem;
494    --wide-page-width: 150rem;
495
496    /* Section Heights */
497    --section-height-small: 15rem;
498    --section-height-medium: 25rem;
499    --section-height-large: 35rem;
500
501    @media screen and (min-width: 40em) {
502      --section-height-small: 40svh;
503      --section-height-medium: 55svh;
504      --section-height-large: 70svh;
505    }
506
507    @media screen and (min-width: 60em) {
508      --section-height-small: 50svh;
509      --section-height-medium: 65svh;
510      --section-height-large: 80svh;
511    }
512
513    /* Letter spacing */
514    --letter-spacing-sm: 0.06em;
515
516    /* Font families */
517    --font-body--family: Newsreader, serif;
518    --font-body--style: normal;
519    --font-body--weight: 400;
520    --font-subheading--family: "IBM Plex Mono", monospace;
521    --font-subheading--style: normal;
522    --font-subheading--weight: 500;
523    --font-heading--family: Archivo, sans-serif;
524    --font-heading--style: normal;
525    --font-heading--weight: 800;
526    --font-accent--family: Archivo, sans-serif;
527    --font-accent--style: normal;
528    --font-accent--weight: 800;
529
530    /* Margin sizes */
531    --font-heading--spacing: 0.25em;
532    --font-h1--spacing: var(--font-heading--spacing);
533    --font-h2--spacing: var(--font-heading--spacing);
534    --font-h3--spacing: var(--font-heading--spacing);
535    --font-h4--spacing: var(--font-heading--spacing);
536    --font-h5--spacing: var(--font-heading--spacing);
537    --font-h6--spacing: var(--font-heading--spacing);
538    --font-paragraph--spacing: 0.5em;
539
540    /** Z-Index / Layering */
541    --layer-section-background: -2;
542    --layer-lowest: -1;
543    --layer-base: 0;
544    --layer-flat: 1;
545    --layer-raised: 2;
546    --layer-heightened: 4;
547    --layer-sticky: 8;
548    --layer-window-overlay: 10;
549    --layer-header-menu: 12;
550    --layer-overlay: 16;
551    --layer-menu-drawer: 18;
552    --layer-temporary: 20;
553
554    /* Max-width / Measure */
555    --max-width--body-normal: 32.5em;
556    --max-width--body-narrow: 22.75em;
557
558    --max-width--heading-normal: 32.5em;
559    --max-width--heading-narrow: 19.5em;
560
561    --max-width--display-normal: 13em;
562    --max-width--display-narrow: 9.75em;
563    --max-width--display-tight: 3.25em;
564
565    /* Letter-spacing / Tracking */
566    --letter-spacing--display-tight: -0.03em;
567    --letter-spacing--display-normal: 0em;
568    --letter-spacing--display-loose: 0.03em;
569
570    --letter-spacing--heading-tight: -0.03em;
571    --letter-spacing--heading-normal: 0em;
572    --letter-spacing--heading-loose: 0.03em;
573
574    --letter-spacing--body-tight: -0.03em;
575    --letter-spacing--body-normal: 0em;
576    --letter-spacing--body-loose: 0.03em;
577
578    /* Line height / Leading */
579    --line-height: 1;
580
581    --line-height--display-tight: 1;
582    --line-height--display-normal: 1.1;
583    --line-height--display-loose: 1.2;
584
585    --line-height--heading-tight: 1.15;
586    --line-height--heading-normal: 1.25;
587    --line-height--heading-loose: 1.35;
588
589    --line-height--body-tight: 1.2;
590    --line-height--body-normal: 1.4;
591    --line-height--body-loose: 1.6;
592
593    /* Typography presets */
594    --font-size--paragraph: 0.875rem;--font-size--h1: clamp(3.0rem, 5.6vw, 3.5rem);--font-size--h2: clamp(2.25rem, 4.8vw, 3.0rem);--font-size--h3: 2.0rem;--font-size--h4: 1.5rem;--font-size--h5: 0.875rem;--font-size--h6: 0.75rem;--font-paragraph--weight: 400;--font-paragraph--size: var(--font-size--paragraph);--font-paragraph--family: var(--font-body--family);--font-paragraph--style: var(--font-body--style);--font-paragraph--case: ;--font-paragraph--line-height: var(--line-height--body-loose);--font-h1--weight: var(--font-heading--weight);--font-h1--letter-spacing: var(--letter-spacing--heading-normal);--font-h1--size: var(--font-size--h1);--font-h1--family: var(--font-heading--family);--font-h1--style: var(--font-heading--style);--font-h1--case: uppercase;--font-h1--line-height: var(--line-height--display-tight);--font-h2--weight: var(--font-heading--weight);--font-h2--letter-spacing: var(--letter-spacing--heading-normal);--font-h2--size: var(--font-size--h2);--font-h2--family: var(--font-heading--family);--font-h2--style: var(--font-heading--style);--font-h2--case: uppercase;--font-h2--line-height: var(--line-height--display-tight);--font-h3--weight: var(--font-heading--weight);--font-h3--letter-spacing: var(--letter-spacing--heading-normal);--font-h3--size: var(--font-size--h3);--font-h3--family: var(--font-heading--family);--font-h3--style: var(--font-heading--style);--font-h3--case: uppercase;--font-h3--line-height: var(--line-height--display-normal);--font-h4--weight: var(--font-heading--weight);--font-h4--letter-spacing: var(--letter-spacing--heading-normal);--font-h4--size: var(--font-size--h4);--font-h4--family: var(--font-heading--family);--font-h4--style: var(--font-heading--style);--font-h4--case: none;--font-h4--line-height: var(--line-height--display-tight);--font-h5--weight: var(--font-subheading--weight);--font-h5--letter-spacing: var(--letter-spacing--heading-normal);--font-h5--size: var(--font-size--h5);--font-h5--family: var(--font-subheading--family);--font-h5--style: var(--font-subheading--style);--font-h5--case: none;--font-h5--line-height: var(--line-height--display-loose);--font-h6--weight: var(--font-subheading--weight);--font-h6--letter-spacing: var(--letter-spacing--heading-normal);--font-h6--size: var(--font-size--h6);--font-h6--family: var(--font-subheading--family);--font-h6--style: var(--font-subheading--style);--font-h6--case: none;--font-h6--line-height: var(--line-height--display-loose);
595
596    /* Hardcoded font sizes */
597    --font-size--3xs: 0.625rem;
598    --font-size--2xs: 0.75rem;
599    --font-size--xs: 0.8125rem;
600    --font-size--sm: 0.875rem;
601    --font-size--md: 1rem;
602    --font-size--lg: 1.125rem;
603    --font-size--xl: 1.25rem;
604    --font-size--2xl: 1.5rem;
605    --font-size--3xl: 2rem;
606    --font-size--4xl: 2.5rem;
607    --font-size--5xl: 3rem;
608    --font-size--6xl: 3.5rem;
609
610    /* Menu font sizes */
611    --menu-font-sm--size: 0.875rem;
612    --menu-font-sm--line-height: calc(1.1 + 0.5 * min(16 / 14));
613    --menu-font-md--size: 1rem;
614    --menu-font-md--line-height: calc(1.1 + 0.5 * min(16 / 16));
615    --menu-font-xl--size: 1.25rem;
616    --menu-font-xl--line-height: calc(1.1 + 0.5 * min(16 / 20));
617    --menu-font-2xl--size: 1.75rem;
618    --menu-font-2xl--line-height: calc(1.1 + 0.5 * min(16 / 28));
619
620    /* Colors */
621    --color-error: #8B0000;
622    --color-success: #006400;
623    --color-white: #FFFFFF;
624    --color-white-rgb: 255 255 255;
625    --color-instock: #3ED660;
626    --color-lowstock: #EE9441;
627    --color-outofstock: #C8C8C8;
628
629    /* Opacity */
630    --opacity-5: 0.05;
631    --opacity-8: 0.08;
632    --opacity-10: 0.1;
633    --opacity-15: 0.15;
634    --opacity-20: 0.2;
635    --opacity-25: 0.25;
636    --opacity-30: 0.3;
637    --opacity-40: 0.4;
638    --opacity-50: 0.5;
639    --opacity-60: 0.6;
640    --opacity-70: 0.7;
641    --opacity-80: 0.8;
642    --opacity-85: 0.85;
643    --opacity-90: 0.9;
644    --opacity-subdued-text: 0.8;
645    --opacity-muted-text: 0.6;
646
647    --shadow-button: 0 2px 3px rgb(0 0 0 / 20%);
648    --gradient-image-overlay: linear-gradient(to top, rgb(0 0 0 / 0.5), transparent);
649
650    /* Spacing */
651    --margin-3xs: 0.125rem;
652    --margin-2xs: 0.3rem;
653    --margin-xs: 0.5rem;
654    --margin-sm: 0.7rem;
655    --margin-md: 0.8rem;
656    --margin-lg: 1rem;
657    --margin-xl: 1.25rem;
658    --margin-2xl: 1.5rem;
659    --margin-4xl: 2rem;
660    --margin-6xl: 5rem;
661
662
663    --padding-3xs: 0.125rem;
664    --padding-2xs: 0.25rem;
665    --padding-xs: 0.5rem;
666    --padding-sm: 0.7rem;
667    --padding-md: 0.8rem;
668    --padding-lg: 1rem;
669    --padding-xl: 1.25rem;
670    --padding-2xl: 1.5rem;
671    --padding-3xl: 1.75rem;
672    --padding-4xl: 2rem;
673    --padding-5xl: 3rem;
674    --padding-6xl: 4rem;
675
676    --gap-3xs: 0.125rem;
677    --gap-2xs: 0.3rem;
678    --gap-xs: 0.5rem;
679    --gap-sm: 0.7rem;
680    --gap-md: 0.9rem;
681    --gap-lg: 1rem;
682    --gap-xl: 1.25rem;
683    --gap-2xl: 2rem;
684    --gap-3xl: 3rem;
685
686    --spacing-scale-md: 0.7;
687    --spacing-scale-default: 1.0;
688
689    /* Checkout buttons gap */
690    --checkout-button-gap: 10px;
691
692    /* Borders */
693    --style-border-width: 1px;
694    --style-border-radius-xs: 0.2rem;
695    --style-border-radius-sm: 0.6rem;
696    --style-border-radius-md: 0.8rem;
697    --style-border-radius-50: 50%;
698    --style-border-radius-lg: 1rem;
699    --style-border-radius-pills: 40px;
700    --style-border-radius-inputs: 6px;
701    --style-border-radius-buttons-primary: 6px;
702    --style-border-radius-buttons-secondary: 6px;
703    --style-border-width-primary: 1px;
704    --style-border-width-secondary: 1px;
705    --style-border-width-inputs: 1px;
706    --style-border-radius-popover: 14px;
707    --style-border-popover: 1px solid #141D30;
708    --style-border-drawer: 1px solid #141D30;
709    --style-border-swatch-opacity: 10%;
710    --style-border-swatch-width: 1px;
711    --style-border-swatch-style: solid;
712
713    /* Animation */
714    --ease-out-cubic: cubic-bezier(0.33, 1, 0.68, 1);
715    --ease-out-quad: cubic-bezier(0.32, 0.72, 0, 1);
716    --animation-speed-fast: 0.0625s;
717    --animation-speed: 0.125s;
718    --animation-speed-slow: 0.2s;
719    --animation-speed-medium: 0.15s;
720    --animation-easing: ease-in-out;
721    --drawer-animation-speed: 0.2s;
722    --animation-values: var(--animation-speed) var(--animation-easing);
723    --animation-timing-hover: cubic-bezier(0.25, 0.46, 0.45, 0.94);
724    --animation-timing-active: cubic-bezier(0.5, 0, 0.75, 0);
725    --animation-timing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
726    --animation-timing-default: cubic-bezier(0, 0, 0.2, 1);
727    --animation-timing-fade-in: cubic-bezier(0.16, 1, 0.3, 1);
728    --animation-timing-fade-out: cubic-bezier(0.4, 0, 0.2, 1);
729    /* Spring definitions suffixed with perceptual duration (d<ms>) and bounce (b<%>)*/
730    --spring-d300-b0-easing: linear(0, 0.0033 0.81%, 0.027 2.42%, 0.0916 4.84%, 0.4745 15.32%, 0.6422 20.97%, 0.7175, 0.7789, 0.8283 30.64%, 0.876, 0.9111 38.71%, 0.941, 0.9611 48.39%, 0.9707, 0.978 54.84%, 0.9885 62.1%, 0.9949 70.97%, 0.9982 82.26%, 0.9997 100%);
731    --spring-d300-b0-duration: 0.4980s;
732    --spring-d280-b0-easing: linear(0, 0.0044, 0.0164 1.85%, 0.085 4.63%, 0.4571 14.81%, 0.575 18.52%, 0.6505, 0.7148 24.07%, 0.7849, 0.8393, 0.8809 35.18%, 0.9189, 0.9453 44.44%, 0.9662, 0.9793 55.55%, 0.9894 62.95%, 0.995 71.28%, 0.9982 82.39%, 0.9997 99.98%);
733    --spring-d280-b0-duration: 0.4648s;
734    --spring-d220-b0-easing: linear(
735      0,
736      0.0093 1.37%,
737      0.0696 4.12%,
738      0.4667 15.09%,
739      0.6322 20.58%,
740      0.6986 23.32%,
741      0.7793 27.44%,
742      0.8219 30.18%,
743      0.8721,
744      0.9089 38.42%,
745      0.9427,
746      0.9644,
747      0.978 54.88%,
748      0.9881 61.74%,
749      0.9944 69.97%,
750      0.998 80.95%,
751      0.9996 98.78%
752    );
753    --spring-d220-b0-duration: 0.3818s;
754    --spring-d180-b0-easing: linear(0, 0.0234, 0.0805 4.48%, 0.4865 15.68%, 0.6211 20.16%, 0.7696 26.88%, 0.8064 29.12%, 0.8646, 0.9063, 0.9358, 0.9563 47.04%, 0.9757, 0.9867 60.48%, 0.9941 69.44%, 0.9979 80.64%, 0.9996 98.56%);
755    --spring-d180-b0-duration: 0.2988s;
756
757    /* View transitions */
758    /* View transition old */
759    --view-transition-old-main-content: var(--animation-speed) var(--animation-easing) both fadeOut;
760
761    /* View transition new */
762    --view-transition-new-main-content: var(--animation-speed) var(--animation-easing) both fadeIn, var(--animation-speed) var(--animation-easing) both slideInTopViewTransition;
763
764    /* Focus */
765    --focus-outline-width: 0.09375rem;
766    --focus-outline-offset: 0.2em;
767
768    /* Badges */
769    --badge-rectangle-padding-block: 1px;
770    --badge-rectangle-padding-inline: 6px;
771    @media screen and (min-width: 750px) {
772      --badge-rectangle-padding-block: 4px;
773      --badge-rectangle-padding-inline: 10px;
774    }
775
776    /* Icons */
777    --icon-size-2xs: 0.6rem;
778    --icon-size-xs: 0.85rem;
779    --icon-size-sm: 1.25rem;
780    --icon-size-md: 1.375rem;
781    --icon-size-lg: 1.5rem;
782    --icon-stroke-width: 1.5px;
783
784    /* Input */
785    --input-padding-y: 0.8rem;
786    --input-padding-x: 0.8rem;
787    --input-padding: var(--input-padding-y) var(--input-padding-x);
788    --input-box-shadow-width: var(--style-border-width-inputs);
789    --input-box-shadow: 0 0 0 var(--input-box-shadow-width) var(--color-input-border);
790    --input-box-shadow-focus: 0 0 0 calc(var(--input-box-shadow-width) + 0.5px) var(--color-input-border);
791    --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10));
792    --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5));
793    --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
794    --input-textarea-min-height: 55px;
795
796    /* Checkbox */
797    --checkbox-size: 22px;
798    --checkbox-border-radius: 7px;
799    --checkbox-border: 1px solid rgb(var(--color-foreground-rgb) / var(--opacity-35-55));
800    --checkbox-label-padding: 8px;
801
802    @media screen and (min-width: 750px) {
803      --checkbox-size: 16px;
804      --checkbox-border-radius: 5px;
805      --checkbox-label-padding: 6px;
806    }
807
808    /* Button size */
809    --button-size-md: 36px;
810    --button-size: var(--minimum-touch-target);
811    --button-padding-inline: 24px;
812    --button-padding-block: 16px;
813
814    /* Button font-family */
815    --button-font-family-primary: var(--font-body--family);
816    --button-font-family-secondary: var(--font-body--family);
817
818    /* Button text case */
819    --button-text-case-primary: default;
820    --button-text-case-secondary: default;
821
822    /* Borders */
823    --border-color: rgb(var(--color-border-rgb) / var(--opacity-50));
824    --border-width-sm: 1px;
825    --border-radius-sm: 0.25rem;
826
827    /* Drawers */
828    --drawer-header-desktop-top: 0rem;
829    --drawer-padding: calc(var(--padding-sm) + 7px);
830    --drawer-height: 100dvh;
831    --drawer-width: 95vw;
832    --drawer-max-width: 500px;
833
834    /* Variant Picker Swatches */
835    --variant-picker-swatch-width-unitless: 34;
836    --variant-picker-swatch-height-unitless: 34;
837    --variant-picker-swatch-width: 34px;
838    --variant-picker-swatch-height: 34px;
839    --variant-picker-swatch-radius: 32px;
840    --variant-picker-border-width: 1px;
841    --variant-picker-border-style: solid;
842    --variant-picker-border-opacity: 10%;
843
844    /* Variant Picker Buttons */
845    --variant-picker-button-radius: 14px;
846    --variant-picker-button-border-width: 1px;
847    --variant-option-label-color: var(--color, var(--color-foreground));
848
849    /* Slideshow */
850    --slideshow-controls-icon: 2rem;
851    --peek-next-slide-size: 3rem;
852
853    /* Utilities */
854    --backdrop-opacity: 0.15;
855    --backdrop-color-rgb: var(--color-shadow-rgb);
856    --minimum-touch-target: 44px;
857    --disabled-opacity: 0.5;
858    --skeleton-opacity: 0.025;
859
860    /* Shapes */
861
862    /* Buy buttons */
863    --height-buy-buttons: calc(var(--padding-lg) * 2 + var(--icon-size-sm));
864
865    /* Card image width and height variables */
866    --card-width-small: 10rem;
867
868    --height-small: 10rem;
869
870    @media screen and (min-width: 750px) {
871      --height-small: 17.5rem;
872    }
873
874    /* Modal */
875    --modal-max-height: 65dvh;
876    --quick-add-modal-height: min(38.5rem, 96vh);
877    --quick-add-modal-width: min(54rem, 96vw);
878    --quick-add-modal-gallery-width: 24rem;
879
880    /* Card styles for search */
881    --card-bg-hover: rgb(var(--color-foreground-rgb) / var(--opacity-5));
882    --card-border-hover: rgb(var(--color-foreground-rgb) / var(--opacity-30));
883    --card-border-focus: rgb(var(--color-foreground-rgb) / var(--opacity-10));
884
885    /* Cart */
886    --cart-primary-font-family: var(--font-body--family);
887    --cart-primary-font-style: var(--font-body--style);
888    --cart-primary-font-weight: var(--font-body--weight);
889    --cart-secondary-font-family: var(--font-subheading--family);
890    --cart-secondary-font-style: var(--font-subheading--style);
891    --cart-secondary-font-weight: var(--font-subheading--weight);
892  }
893
894  .custom-color-quick-add {
895    --quick-add-background: #060A12;
896    --quick-add-foreground: #EDF1F6;
897  }
898</style>
899
900
901
902
903
904
905  <style data-shopify>
906    .color-custom-popover,
907    .color-custom-popover .text-block {
908      /* Background */
909      --color-background: #060A12;
910      --color-background-rgb: 6 10 18;
911
912      /* Opacity values adjusted for background brightness */
913      
914--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
9150.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
916
917
918      
919        /* Foreground / text — explicit or smart-contrasted */
920        --color: #EDF1F6;
921        --color-rgb: 237 241 246;
922        --color-foreground: #EDF1F6;
923        --color-foreground-rgb: 237 241 246;
924        --color-foreground-muted: rgb(237 241 246 / var(--opacity-muted-text));
925        --color-foreground-subdued: rgb(237 241 246 / var(--opacity-subdued-text));
926        --color-border: #141D30;
927        --color-border-rgb: 20 29 48;
928      
929    }
930
931    
932      .color-custom-popover {
933        /* Form-related tokens stay on .color-custom only — .text-block is a prose
934           container (text/announcement/inline-text/blog-post-description/
935           collection-link/price/sku) and never holds form inputs. */
936        --input-disabled-background-color: rgb(237 241 246 / var(--opacity-10));
937        --input-disabled-border-color: rgb(237 241 246 / var(--opacity-5));
938        --input-disabled-text-color: rgb(237 241 246 / var(--opacity-50));
939        --checkbox-border: 1px solid rgb(237 241 246 / var(--opacity-35-55));
940      }
941    
942
943    .color-custom-popover {
944      color: var(--color, var(--color-foreground));
945      background-color: var(--color-background);
946    }
947  </style>
948
949
950
951
952
953
954
955
956  <style data-shopify>
957    .color-custom-drawer,
958    .color-custom-drawer .text-block {
959      /* Background */
960      --color-background: #060A12;
961      --color-background-rgb: 6 10 18;
962
963      /* Opacity values adjusted for background brightness */
964      
965--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
9660.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
967
968
969      
970        /* Foreground / text — explicit or smart-contrasted */
971        --color: #EDF1F6;
972        --color-rgb: 237 241 246;
973        --color-foreground: #EDF1F6;
974        --color-foreground-rgb: 237 241 246;
975        --color-foreground-muted: rgb(237 241 246 / var(--opacity-muted-text));
976        --color-foreground-subdued: rgb(237 241 246 / var(--opacity-subdued-text));
977        --color-border: #141D30;
978        --color-border-rgb: 20 29 48;
979      
980    }
981
982    
983      .color-custom-drawer {
984        /* Form-related tokens stay on .color-custom only — .text-block is a prose
985           container (text/announcement/inline-text/blog-post-description/
986           collection-link/price/sku) and never holds form inputs. */
987        --input-disabled-background-color: rgb(237 241 246 / var(--opacity-10));
988        --input-disabled-border-color: rgb(237 241 246 / var(--opacity-5));
989        --input-disabled-text-color: rgb(237 241 246 / var(--opacity-50));
990        --checkbox-border: 1px solid rgb(237 241 246 / var(--opacity-35-55));
991      }
992    
993
994    .color-custom-drawer {
995      color: var(--color, var(--color-foreground));
996      background-color: var(--color-background);
997    }
998  </style>
999
1000
1001
1002
1003
1004
1005
1006
1007  <style data-shopify>
1008    .color-custom-badge-sale,
1009    .color-custom-badge-sale .text-block {
1010      /* Background */
1011      --color-background: #060A12;
1012      --color-background-rgb: 6 10 18;
1013
1014      /* Opacity values adjusted for background brightness */
1015      
1016--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
10170.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
1018
1019
1020      
1021        /* Foreground / text — explicit or smart-contrasted */
1022        --color: #EDF1F6;
1023        --color-rgb: 237 241 246;
1024        --color-foreground: #EDF1F6;
1025        --color-foreground-rgb: 237 241 246;
1026        --color-foreground-muted: rgb(237 241 246 / var(--opacity-muted-text));
1027        --color-foreground-subdued: rgb(237 241 246 / var(--opacity-subdued-text));
1028        --color-border: #EDF1F6;
1029        --color-border-rgb: 237 241 246;
1030      
1031    }
1032
1033    
1034      .color-custom-badge-sale {
1035        /* Form-related tokens stay on .color-custom only — .text-block is a prose
1036           container (text/announcement/inline-text/blog-post-description/
1037           collection-link/price/sku) and never holds form inputs. */
1038        --input-disabled-background-color: rgb(237 241 246 / var(--opacity-10));
1039        --input-disabled-border-color: rgb(237 241 246 / var(--opacity-5));
1040        --input-disabled-text-color: rgb(237 241 246 / var(--opacity-50));
1041        --checkbox-border: 1px solid rgb(237 241 246 / var(--opacity-35-55));
1042      }
1043    
1044
1045    .color-custom-badge-sale {
1046      color: var(--color, var(--color-foreground));
1047      background-color: var(--color-background);
1048    }
1049  </style>
1050
1051
1052
1053
1054
1055
1056
1057
1058  <style data-shopify>
1059    .color-custom-badge-sold-out,
1060    .color-custom-badge-sold-out .text-block {
1061      /* Background */
1062      --color-background: #141D30;
1063      --color-background-rgb: 20 29 48;
1064
1065      /* Opacity values adjusted for background brightness */
1066      
1067--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
10680.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
1069
1070
1071      
1072        /* Foreground / text — explicit or smart-contrasted */
1073        --color: #EDF1F6;
1074        --color-rgb: 237 241 246;
1075        --color-foreground: #EDF1F6;
1076        --color-foreground-rgb: 237 241 246;
1077        --color-foreground-muted: rgb(237 241 246 / var(--opacity-muted-text));
1078        --color-foreground-subdued: rgb(237 241 246 / var(--opacity-subdued-text));
1079        --color-border: #EDF1F6;
1080        --color-border-rgb: 237 241 246;
1081      
1082    }
1083
1084    
1085      .color-custom-badge-sold-out {
1086        /* Form-related tokens stay on .color-custom only — .text-block is a prose
1087           container (text/announcement/inline-text/blog-post-description/
1088           collection-link/price/sku) and never holds form inputs. */
1089        --input-disabled-background-color: rgb(237 241 246 / var(--opacity-10));
1090        --input-disabled-border-color: rgb(237 241 246 / var(--opacity-5));
1091        --input-disabled-text-color: rgb(237 241 246 / var(--opacity-50));
1092        --checkbox-border: 1px solid rgb(237 241 246 / var(--opacity-35-55));
1093      }
1094    
1095
1096    .color-custom-badge-sold-out {
1097      color: var(--color, var(--color-foreground));
1098      background-color: var(--color-background);
1099    }
1100  </style>
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119<style data-shopify>
1120  /* Palette colors */
1121  :root {
1122    --color-background: #060A12;
1123    --color-background-rgb: 6 10 18;
1124    --color-foreground: #EDF1F6;
1125    --color-foreground-rgb: 237 241 246;
1126    --color-border: #EDF1F6;
1127    --color-border-rgb: 237 241 246;
1128    --palette-lightest: #EDF1F6;
1129    --palette-lightest-rgb: 237 241 246;
1130    --palette-darkest: #060A12;
1131    --palette-darkest-rgb: 6 10 18;
1132    
1133--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
11340.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
1135
1136
1137    --color-primary-button-text: rgb(11 17 32 / 1.0);
1138    --color-primary-button-background: rgb(198 255 58 / 1.0);
1139    --color-primary-button-border: rgb(198 255 58 / 1.0);
1140    --color-primary-button-focus-outline: rgb(198 255 58);
1141    --color-primary-button-hover-text: rgb(6 10 18 / 1.0);
1142    --color-primary-button-hover-background: #bfff21;
1143    --color-primary-button-hover-border: #bfff21;
1144
1145    --color-secondary-button-text: rgb(237 241 246 / 1.0);
1146    --color-secondary-button-background: rgb(0 0 0 / 0.0);
1147    --color-secondary-button-border: rgb(20 29 48 / 1.0);
1148    --color-secondary-button-hover-text: rgb(237 241 246 / 1.0);
1149    --color-secondary-button-hover-background: rgba(0, 0, 0, 0.15);
1150    --color-secondary-button-hover-border: #2b3e66;
1151
1152    --color-input-background: rgb(6 10 18 / 1.0);
1153    --color-input-text: rgb(132 148 168 / 1.0);
1154    --color-input-text-rgb: 132 148 168;
1155    --color-input-border: rgb(20 29 48 / 1.0);
1156
1157    --color-variant-background: rgb(6 10 18 / 1.0);
1158    --color-variant-border: rgb(20 29 48 / 1.0);
1159    --color-variant-text: rgb(237 241 246 / 1.0);
1160    --color-variant-text-rgb: 237 241 246;
1161    --color-variant-hover-background: #192a4b;
1162    --color-variant-hover-text: rgb(237 241 246 / 1.0);
1163    --color-variant-hover-border: #2b3e66;
1164
1165    --color-selected-variant-background: rgb(237 241 246 / 1.0);
1166    --color-selected-variant-border: rgb(237 241 246 / 1.0);
1167    --color-selected-variant-text: rgb(6 10 18 / 1.0);
1168    --color-selected-variant-text-rgb: 6 10 18;
1169    --color-selected-variant-hover-background: #dce4ee;
1170    --color-selected-variant-hover-text: rgb(6 10 18 / 1.0);
1171    --color-selected-variant-hover-border: #dce4ee;
1172
1173    --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10));
1174    --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15));
1175    --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
1176    --color-foreground-muted: rgb(var(--color-rgb, var(--color-foreground-rgb)) / var(--opacity-muted-text));
1177    --color-foreground-subdued: rgb(var(--color-rgb, var(--color-foreground-rgb)) / var(--opacity-subdued-text));
1178    --color-drawer-shadow-rgb: ;
1179    --color-popover-shadow-rgb: 237 241 246;
1180
1181    /* Shadows */
1182    
1183    
1184      --shadow-blur: 20px;
1185      --shadow-popover: 0px 4px 20px rgb(var(--color-popover-shadow-rgb) / var(--opacity-15));
1186    
1187  }
1188
1189  body {
1190    color: var(--color-foreground);
1191    background-color: var(--color-background);
1192  }
1193</style>
1194
1195
1196    
1196<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
1196<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/80665608424/digital_wallets/dialog">
1197<meta id="in-context-paypal-metadata" data-shop-id="80665608424" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
1198<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
1198<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
1198
1199<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
1200<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=80665608424" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1200
1200
1201<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":80665608424,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/80665608424","merchantName":"IDLE Robot","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"IDLE Robot","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 1201
1201
1202<script id="shopify-features" type="application/json">{"accessToken":"b3fe480c01186e0d84c338d7b15b724a","betas":["rich-media-storefront-analytics"],"domain":"idlerobot.ai","predictiveSearch":true,"shopId":80665608424,"locale":"en"}</script>
vendor: 1 bytes, line 1202
1202
1203<script>var Shopify = Shopify || {};
1204Shopify.shop = "9ij14d-6e.myshopify.com";
1205Shopify.locale = "en";
1206Shopify.currency = {"active":"USD","rate":"1.0"};
1207Shopify.country = "US";
1208Shopify.theme = {"name":"Horizon","id":158567858408,"schema_name":"Horizon","schema_version":"4.1.4","theme_store_id":2481,"role":"main"};
1209Shopify.theme.handle = "null";
1210Shopify.theme.style = {"id":null,"handle":null};
1211Shopify.cdnHost = "idlerobot.ai/cdn";
1212Shopify.routes = Shopify.routes || {};
1213Shopify.routes.root = "/";
1214Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
1215Shopify.SignInWithShop = Shopify.SignInWithShop || {};
1216Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
1217Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 1217
1217
1218<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 1218
1218
1219<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 1219
1219
1220<script>
1221  window.ShopifyPay = window.ShopifyPay || {};
1222  window.ShopifyPay.apiHost = "shop.app\/pay";
1223  window.ShopifyPay.redirectState = null;
1224</script>
vendor: 1 bytes, line 1224
1224
1225<script>
1226  window.Shopify = window.Shopify || {};
1227  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
1228  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
1229  window.Shopify.SignInWithShop.eligible = true;
1230</script>
vendor: 1 bytes, line 1230
1230
1231<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
vendor: 1 bytes, line 1231
1231
1232<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 1232
1232
1233<script type="module">
1234  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
1235
1236  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
1237
1238</script>
vendor: 1 bytes, line 1238
1238
1239<script>
1240  window.Shopify = window.Shopify || {};
1241  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
1242  window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]};
1243</script>
vendor: 1 bytes, line 1243
1243
1244<script id="__st">var __st={"a":80665608424,"offset":-14400,"reqid":"9b20ae72-df89-49db-91fd-b258e6ae01ce-1791205044","pageurl":"idlerobot.ai\/pages\/about","s":"pages-134548816104","u":"32c6b595e0ee","p":"page","rtyp":"page","rid":134548816104};</script>
vendor: 1 bytes, line 1244
1244
1245<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 1245
1245
1246<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 1246
1246
1247<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//idlerobot.ai/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1247
1247
1248<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//idlerobot.ai/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
1248<script crossorigin="anonymous" defer="defer" src="//idlerobot.ai/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 1248
1248
1249<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 1249
1249
1250<script>
1251  window.Shopify = window.Shopify || {};
1252  window.Shopify.MCP = window.Shopify.MCP || {};
1253  window.Shopify.MCP.enabled = true;
1254  window.Shopify.MCP.shop = "9ij14d-6e.myshopify.com";
1255  window.Shopify.MCP.mcpEndpoint = "https:\/\/idlerobot.ai\/api\/mcp";
1256  window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n  - What is your return policy?\n  - What is your shipping policy?\n  - What is your phone number?\n  - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}];
1257</script>
vendor: 1 bytes, line 1257
1257
1258<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/idlerobot.ai\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
1259</script>
vendor: 1 bytes, line 1259
1259
1260<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://idlerobot.ai/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
1261</script>
vendor: 1 bytes, line 1261
1261
1262<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
1263  function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
1264</script>
vendor: 1 bytes, line 1264
1264
1265<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
1266</script>
1266
1267<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://idlerobot.ai/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
1268<style id="shopify-accelerated-checkout-cart">
1269        #shopify-buyer-consent {
1270  margin-top: 1em;
1271  display: inline-block;
1272  width: 100%;
1273}
1274
1275#shopify-buyer-consent.hidden {
1276  display: none;
1277}
1278
1279#shopify-subscription-policy-button {
1280  background: none;
1281  border: none;
1282  padding: 0;
1283  text-decoration: underline;
1284  font-size: inherit;
1285  cursor: pointer;
1286}
1287
1288#shopify-subscription-policy-button::before {
1289  box-shadow: none;
1290}
1291
1292      </style>
1293<link rel="compression-dictionary" href="//idlerobot.ai/cdn/shop/t/1/compiled_assets/styles.css?v=2374731764746837131787754817" crossorigin="anonymous">
1294<link rel="stylesheet" media="screen" href="//idlerobot.ai/cdn/shop/t/1/compiled_assets/styles.css?v=2374731764746837131787754817&subset=AABAAAAAAAAAAAAAAAAAAAQAAABICBAAAAAAMAoYhCACAKg" crossorigin="anonymous">
1295<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
1295
1296  <link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1297<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 80665608424,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1297
1297
1298<script>
1299  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
1300</script>
vendor: 1 bytes, line 1300
1300
1301<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
1301).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 80665608424,storefrontBaseUrl: "https://idlerobot.ai",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://idlerobot.ai/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"145391848","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":["SALE_OF_DATA"],"name":"Idle Robot Meta Pixel"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"IDLE Robot","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"9ij14d-6e.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/idlerobot.ai"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"9609460580584","handle":"autonomous-income","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"48940333367528","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://idlerobot.ai/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"158567858408","themeStoreId":"2481","themePublished":"true","eventMetadataId":"c5ef82e4-7f29-4f19-9045-093bcc99580f","pageType":"page","resourceId":"134548816104","shopId":"80665608424","storefrontBaseUrl":"https:\/\/idlerobot.ai","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
1301<script>
1302  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
1303  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
1304  window.ShopifyAnalytics.meta.currency = 'USD';
1305  var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":134548816104,"requestId":"9b20ae72-df89-49db-91fd-b258e6ae01ce-1791205044"}};
1306  for (var attr in meta) {
1307    window.ShopifyAnalytics.meta[attr] = meta[attr];
1308  }
1309</script>
vendor: 1 bytes, line 1309
1309
1310<script class="analytics">
1311  (function () {
1312    var customDocumentWrite = function(content) {
1313      var jquery = null;
1314
1315      if (window.jQuery) {
1316        jquery = window.jQuery;
1317      } else if (window.Checkout && window.Checkout.$) {
1318        jquery = window.Checkout.$;
1319      }
1320
1321      if (jquery) {
1322        jquery('body').append(content);
1323      }
1324    };
1325
1326    var hasLoggedConversion = function(token) {
1327      if (token) {
1328        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
1329      }
1330      return false;
1331    }
1332
1333    var setCookieIfConversion = function(token) {
1334      if (token) {
1335        var twoMonthsFromNow = new Date(Date.now());
1336        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
1337
1338        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
1339      }
1340    }
1341
1342    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
1343    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
1344    if (trekkie.integrations) {
1345      return;
1346    }
1347    trekkie.methods = [
1348      'identify',
1349      'page',
1350      'ready',
1351      'track',
1352      'trackForm',
1353      'trackLink'
1354    ];
1355    trekkie.factory = function(method) {
1356      return function() {
1357        var args = Array.prototype.slice.call(arguments);
1358        args.unshift(method);
1359        trekkie.push(args);
1360        if (method == 'track' || method == 'page') {
1361          var pageUrl;
1362          try {
1363            pageUrl = window.location.href;
1364          } catch (e) {}
1365          var pageReferrer;
1366          try {
1367            pageReferrer = document.referrer;
1368          } catch (e) {}
1369          try {
1370            if (window.__TREKKIE_SHIM_QUEUE == null) {
1371              window.__TREKKIE_SHIM_QUEUE = [];
1372            }
1373            window.__TREKKIE_SHIM_QUEUE.push({
1374              from: 'trekkie-stub',
1375              method: method,
1376              args: args.slice(1),
1377              pageContext: {
1378                url: pageUrl,
1379                referrer: pageReferrer
1380              }
1381            });
1382          } catch (e) {
1383            // no-op
1384          }
1385        }
1386        return trekkie;
1387      };
1388    };
1389    for (var i = 0; i < trekkie.methods.length; i++) {
1390      var key = trekkie.methods[i];
1391      trekkie[key] = trekkie.factory(key);
1392    }
1393    trekkie.load = function(config) {
1394      trekkie.config = config || {};
1395      trekkie.config.initialDocumentCookie = document.cookie;
1396      var first = document.getElementsByTagName('script')[0];
1397var script = document.createElement('script');
1398script.type = 'text/javascript';
1399script.onerror = function(e) {
1400  var scriptFallback = document.createElement('script');
1401  scriptFallback.type = 'text/javascript';
1402  scriptFallback.onerror = function(error) {
1403          var Monorail = {
1404      produce: function produce(monorailDomain, schemaId, payload) {
1405        var currentMs = new Date().getTime();
1406        var event = {
1407          schema_id: schemaId,
1408          payload: payload,
1409          metadata: {
1410            event_created_at_ms: currentMs,
1411            event_sent_at_ms: currentMs
1412          }
1413        };
1414        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
1415      },
1416      sendRequest: function sendRequest(endpointUrl, payload) {
1417        // Try the sendBeacon API
1418        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
1419          var blobData = new window.Blob([payload], {
1420            type: 'text/plain'
1421          });
1422
1423          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
1424            return true;
1425          } // sendBeacon was not successful
1426
1427        } // XHR beacon
1428
1429        var xhr = new XMLHttpRequest();
1430
1431        try {
1432          xhr.open('POST', endpointUrl);
1433          xhr.setRequestHeader('Content-Type', 'text/plain');
1434          xhr.send(payload);
1435        } catch (e) {
1436          console.log(e);
1437        }
1438
1439        return false;
1440      },
1441      isIos12: function isIos12() {
1442        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
1443      }
1444    };
1445    Monorail.produce('monorail-edge.shopifysvc.com',
1446      'trekkie_storefront_load_errors/1.1',
1447      {shop_id: 80665608424,
1448      theme_id: 158567858408,
1449      app_name: "storefront",
1450      context_url: window.location.href,
1451      source_url: "//idlerobot.ai/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
1452
1453  };
1454  scriptFallback.async = true;
1455  scriptFallback.src = '//idlerobot.ai/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1456  first.parentNode.insertBefore(scriptFallback, first);
1457};
1458script.async = true;
1459script.src = '//idlerobot.ai/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1460first.parentNode.insertBefore(script, first);
1461
1462    };
1463    trekkie.load(
1464      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":80665608424,"isMerchantRequest":null,"themeId":158567858408,"themeCityHash":"2215276651128641423","contentLanguage":"en","currency":"USD","eventMetadataId":"c5ef82e4-7f29-4f19-9045-093bcc99580f"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
1465    );
1466
1467    var loaded = false;
1468    trekkie.ready(function() {
1469      if (loaded) return;
1470      loaded = true;
1471
1472      window.ShopifyAnalytics.lib = window.trekkie;
1473
1474      var originalDocumentWrite = document.write;
1475      document.write = customDocumentWrite;
1476      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
1477      document.write = originalDocumentWrite;
1478
1479      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
1480      var token = match? match[1]: undefined;
1481      if (!hasLoggedConversion(token)) {
1482        setCookieIfConversion(token);
1483        
1484      }
1485    });
1486
1487    window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":134548816104,"requestId":"9b20ae72-df89-49db-91fd-b258e6ae01ce-1791205044","shopifyEmitted":true});
1488
1489    var eventsListenerScript = document.createElement('script');
1490    eventsListenerScript.async = true;
1491    eventsListenerScript.src = "//idlerobot.ai/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
1492    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
1493})();</script>
vendor: 1 bytes, line 1493
1493
1494<script
1495  defer
1496  src="https://idlerobot.ai/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
1497  data-application="storefront-renderer"
1498  data-shop-id="80665608424"
1499  data-render-region="gcp-europe-west1"
1500  data-page-type="page"
1501  data-theme-instance-id="158567858408"
1502  data-theme-name="Horizon"
1503  data-theme-version="4.1.4"
1504  data-monorail-region="shop_domain"
1505  data-resource-timing-sampling-rate="10"
1506  data-shs="true"
1507  data-shs-beacon="true"
1508  data-shs-export-with-fetch="true"
1509  data-shs-logs-sample-rate="1"
1510  data-shs-beacon-endpoint="https://idlerobot.ai/api/collect"
1511></script>
1511
1512<meta name="shopify-y" content="cc493a96-cbb6-47e3-9991-0feca82d157b" data-expiration="1822762644000"><meta name="shopify-s" content="0692ef8e-92de-45aa-8584-b5ebc799cf11" data-expiration="1791206844000"><meta name="new-cookie-storage-activated" content="t">
1513</head>
1514
1515  <body class="page-width-normal card-hover-effect-none idle-robot-theme">
1516    <div class="grain" aria-hidden="true"></div>
1517<div class="gridbg" aria-hidden="true"></div>
1518<div class="glow a" aria-hidden="true"></div>
1519<div class="glow b" aria-hidden="true"></div>
1520
1521    <a
1522  class="skip-to-content-link button-secondary"
1523  href="#MainContent"
1524>
1525  Skip to content
1526</a>
1527
1528
1529
1530
1531    
1532
1533<theme-drawer id="chat-drawer">
1534  <dialog
1535    ref="panel"
1536    class="theme-drawer__dialog chat-drawer"
1537  >
1538    <shopify-chat
1539      mode="standalone"
1540      mode-switch
1541    ></shopify-chat>
1542  </dialog>
1543</theme-drawer>
1544
1545<script type="module">
1546  const chatDrawer = document.querySelector('#chat-drawer');
1547  const shopifyChat = document.querySelector('shopify-chat');
1548
1549  document.addEventListener('theme-drawer:open', (event) => {
1550    if (/** @type {Element} */ (event.target).id !== 'chat-drawer') return;
1551    shopifyChat?.setAttribute('mode', 'managed');
1552  });
1553
1554  document.addEventListener('theme-drawer:close', (event) => {
1555    if (/** @type {Element} */ (event.target).id !== 'chat-drawer') return;
1556    // If mode is still managed, this is a theme-initiated close (backdrop /
1557    // Escape) — close the chat so the FAB appears. If mode is already
1558    // standalone, the close was triggered by an undock (enter-standalone sets
1559    // mode before closing the drawer) — leave the chat open as a floating panel.
1560    if (shopifyChat?.getAttribute('mode') === 'managed') {
1561      shopifyChat?.removeAttribute('open');
1562    }
1563    shopifyChat?.setAttribute('mode', 'standalone');
1564  });
1565
1566  document.addEventListener('shopify-chat:enter-managed', () => {
1567    // Captured at event-fire time — the dock-transition animation hint below
1568    // depends on state as it was when the event was dispatched.
1569    const isStandaloneAndOpen = shopifyChat?.hasAttribute('open') && shopifyChat?.getAttribute('mode') === 'standalone';
1570
1571    // The activator-click path (FAB click on desktop with stored
1572    // preferredMode=managed) dispatches enter-managed *before* calling show(),
1573    // so the chat's `open` attribute at event time understates the imminent
1574    // outcome. Defer to a microtask: by then show() (if any) has run, and we
1575    // can distinguish the viewport-driven mobile→desktop transition that left
1576    // a minimized FAB (chat stays closed → don't open an empty drawer) from
1577    // an activator click (chat just opened → open the drawer).
1578    queueMicrotask(() => {
1579      if (!shopifyChat?.hasAttribute('open') && !chatDrawer?.hasAttribute('open')) {
1580        return;
1581      }
1582      chatDrawer?.open?.(isStandaloneAndOpen ? { enter: 'inline-start' } : undefined);
1583    });
1584  });
1585
1586  document.addEventListener('shopify-chat:enter-standalone', () => {
1587    shopifyChat?.setAttribute('mode', 'standalone');
1588    chatDrawer?.close?.();
1589  });
1590
1591  document.addEventListener('shopify-chat:close', () => {
1592    if (shopifyChat?.getAttribute('mode') === 'managed') {
1593      chatDrawer?.close?.();
1594    }
1595  });
1596
1597  document.addEventListener('megaMenu:hover', () => {
1598    if (shopifyChat?.hasAttribute('open') && shopifyChat?.getAttribute('mode') === 'standalone') {
1599      shopifyChat?.removeAttribute('open');
1600    }
1601  });
1602
1603  // After the chat upgrades it self-restores its preferred mode from
1604  // sessionStorage. Reconcile any mismatch with the theme-drawer's state
1605  // — the drawer is the source of truth for which mode the chat should
1606  // be in (open → managed, closed → standalone).
1607  customElements.whenDefined('shopify-chat').then(() => {
1608    const mode = chatDrawer?.hasAttribute('open') ? 'managed' : 'standalone';
1609    if (shopifyChat?.getAttribute('mode') !== mode) {
1610      // When switching managed → standalone (e.g. narrow viewport skipped
1611      // drawer restore), also close the chat so it renders as the FAB
1612      // rather than an open standalone panel.
1613      if (mode === 'standalone' && shopifyChat?.hasAttribute('open')) {
1614        shopifyChat?.removeAttribute('open');
1615      }
1616      shopifyChat?.setAttribute('mode', mode);
1617    }
1618  });
1619</script>
1619
1620
1621
1622
1623
1624    <div class="page-wrapper">
1625      <div id="header-group">
1626        <!-- BEGIN sections: header-group -->
1627<div id="shopify-section-sections--21845341634792__idle_robot_header" class="shopify-section shopify-section-group-header-group idle-robot-header-section"><nav class="idle-robot-header" id="idle-robot-header">
1628  <div class="navin">
1629    <a href="/" class="brand">
1630      <img
1631  src="//idlerobot.ai/cdn/shop/t/1/assets/idle-robot-logo.png?v=89376690190735388251787692916"
1632  alt="IDLE Robot"
1633  width="38"
1634  height="38"
1635  loading="eager"
1636>
1637
1638      <div>
1639        <div class="wm">IDLE ROBOT</div>
1640        <div class="tg">AI AGENTS. REAL INCOME.</div>
1641      </div>
1642    </a>
1643    <div class="navlinks">
1644      <a href="/#loop">The Model</a>
1645      <a href="/#inside">Inside</a>
1646      <a href="/#ideas">Ideas</a>
1647      <a href="/#faq">FAQ</a>
1648      <a href="/cart">Cart</a>
1649      <a href="/pages/contact">Contact</a>
1650    </div>
1651    <div class="nav-actions">
1652      <div class="status"><span class="dot"></span>AGENT · RUNNING</div>
1653      <a href="/products/autonomous-income" class="btn sm"><span>Get the guide</span></a>
1654    </div>
1655  </div>
1656</nav>
1657
1658
1659
1660
1661</div>
1662<!-- END sections: header-group -->
1663      </div>
1664
1665      
1665<script>
1666        /**
1667         * Sets `--header-height` and `--header-group-height` to measured values before first paint.
1668         *
1669         * A few CSS rules position content relative to the header at first paint — a hero sized to
1670         * the remaining viewport, a transparent header's negative margin. Without a measured value
1671         * those rules use the `60px` fallback from `sections/header.liquid`, and the content visibly
1672         * jumps once `header.js` corrects the values after load.
1673         *
1674         * Measuring forces layout mid-parse, so it only runs where a consuming rule exists.
1675         * Callers opt in: the transparent-header branch below, or `snippets/measure-header-heights.liquid`,
1676         * which any new first-paint consumer must render too.
1677         *
1678         * Measures once per page; after load, header.js's ResizeObservers keep the values fresh.
1679         * The group-height walk mimics calculateHeaderGroupHeight() in utilities.js — keep them
1680         * in sync.
1681         */
1682        window.measureHeaderHeights = (function () {
1683          let measured = false;
1684
1685          return function measureHeaderHeights() {
1686            if (measured) return;
1687
1688            const header = document.querySelector('#header-component');
1689            const headerGroup = document.querySelector('#header-group');
1690
1691            if (!header || !headerGroup) return;
1692            measured = true;
1693
1694            const headerHeight = header.offsetHeight;
1695
1696            let headerGroupHeight = 0;
1697            for (const element of headerGroup.children) {
1698              if (element instanceof HTMLElement) headerGroupHeight += element.offsetHeight;
1699            }
1700
1701            /**
1702             * A transparent header is absolutely positioned, so the loop above counts its section
1703             * wrapper as 0px. When a section follows it in the group, header.liquid pushes that
1704             * section down by the header's height using a margin, which offsetHeight also
1705             * excludes — so the header's height has to be added back manually.
1706             */
1707            if (header.hasAttribute('transparent') && header.parentElement?.nextElementSibling) {
1708              headerGroupHeight += headerHeight;
1709            }
1710
1711            document.body.style.setProperty('--header-height', `${headerHeight}px`);
1712            document.body.style.setProperty('--header-group-height', `${headerGroupHeight}px`);
1713          };
1714        })();
1715
1716        /**
1717         * Transparent-header rules consume the measured heights at first paint on every
1718         * template, so the transparent case opts in globally here instead of per-section.
1719         */
1720        if (document.querySelector('#header-component')?.hasAttribute('transparent')) {
1721          measureHeaderHeights();
1722        }
1723
1724        /**
1725         * Sets `--top-row-height`, consumed by the header underlays and submenus. Deferred to a
1726         * rAF so the `offsetHeight` read doesn't force layout mid-parse, and scoped to the
1727         * header, where all consumers live, so the write only invalidates the header subtree.
1728         * Mimics the `--top-row-height` write in updateHeaderHeights() in utilities.js
1729         */
1730        (function setTopRowHeight() {
1731          const header = document.querySelector('#header-component');
1732          const headerTopRow = header?.querySelector('.header__row--top');
1733          if (!headerTopRow) return;
1734
1735          window.requestAnimationFrame(function () {
1736            header.style.setProperty('--top-row-height', `${headerTopRow.offsetHeight}px`);
1737          });
1738        })();
1739
1740        /**
1741         * Sets `--transparent-header-offset-boolean` when the first section must offset itself
1742         * under a transparent header. The non-offset case relies on the `0` default declared in
1743         * sections/header.liquid — unlike updateTransparentHeaderOffset() in utilities.js, which
1744         * re-runs on editor changes and must write '0' to reset a previously written '1'.
1745         */
1746        (function updateTransparentHeaderOffset() {
1747          const header = document.querySelector('#header-component');
1748          const headerSection = document.querySelector('#header-group .header-section');
1749          if (!headerSection || !header?.hasAttribute('transparent')) return;
1750
1751          const hasImmediateSection = headerSection.nextElementSibling?.classList.contains('shopify-section');
1752          if (!hasImmediateSection) {
1753            document.body.style.setProperty('--transparent-header-offset-boolean', '1');
1754          }
1755        })();
1756
1757        /**
1758         * Sets the initial menu style (inline menu vs. drawer) on the header component.
1759         * Mimics setHeaderMenuStyle() in utilities.js
1760         */
1761        (function setHeaderMenuStyle() {
1762          const headerComponent = document.querySelector('#header-component');
1763          if (headerComponent) {
1764            const isTouchDevice = 'ontouchstart' in window && navigator.maxTouchPoints > 0;
1765            const overflowList = headerComponent.querySelector('overflow-list');
1766            const hasReachedMinimum = overflowList && overflowList.hasAttribute('minimum-reached');
1767            headerComponent.dataset.menuStyle = isTouchDevice || hasReachedMinimum ? 'drawer' : 'menu';
1768          }
1769        })();
1770      </script>
1770
1771
1772      <main
1773        id="MainContent"
1774        class="content-for-layout"
1775        role="main"
1776        data-page-transition-enabled="false"
1777        data-product-transition="false"
1778        data-template="page"
1779      >
1780        <div id="shopify-section-template--21845341438184__main" class="shopify-section section-wrapper">
1781
1782
1783
1784
1785
1786
1787  <style data-shopify>
1788    .color-custom-template--21845341438184__main,
1789    .color-custom-template--21845341438184__main .text-block {
1790      /* Background */
1791      --color-background: #060A12;
1792      --color-background-rgb: 6 10 18;
1793
1794      /* Opacity values adjusted for background brightness */
1795      
1796--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
17970.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
1798
1799
1800      
1801        /* Foreground / text — explicit or smart-contrasted */
1802        --color: #EDF1F6;
1803        --color-rgb: 237 241 246;
1804        --color-foreground: #EDF1F6;
1805        --color-foreground-rgb: 237 241 246;
1806        --color-foreground-muted: rgb(237 241 246 / var(--opacity-muted-text));
1807        --color-foreground-subdued: rgb(237 241 246 / var(--opacity-subdued-text));
1808        --color-border: var(--palette-lightest);
1809        --color-border-rgb: var(--palette-lightest-rgb);
1810      
1811    }
1812
1813    
1814      .color-custom-template--21845341438184__main {
1815        /* Form-related tokens stay on .color-custom only — .text-block is a prose
1816           container (text/announcement/inline-text/blog-post-description/
1817           collection-link/price/sku) and never holds form inputs. */
1818        --input-disabled-background-color: rgb(237 241 246 / var(--opacity-10));
1819        --input-disabled-border-color: rgb(237 241 246 / var(--opacity-5));
1820        --input-disabled-text-color: rgb(237 241 246 / var(--opacity-50));
1821        --checkbox-border: 1px solid rgb(237 241 246 / var(--opacity-35-55));
1822      }
1823    
1824
1825    .color-custom-template--21845341438184__main {
1826      color: var(--color, var(--color-foreground));
1827      background-color: var(--color-background);
1828    }
1829  </style>
1830
1831
1832
1833<div
1834  class="section-background color-custom-template--21845341438184__main"
1835></div>
1836<div class="section page-width-content color-custom-template--21845341438184__main">
1837  <div
1838    class="
1839      spacing-style
1840      layout-panel-flex
1841      layout-panel-flex--column
1842      section-content-wrapper
1843      mobile-column
1844    "
1845    style="
1846      --flex-direction: column; --flex-wrap: nowrap; --flex-wrap-mobile: wrap;
1847
1848--gap: max(24px, calc(var(--gap-scale, 1.0) * 32px));
1849
1850--horizontal-alignment: ; --vertical-alignment: ;
1851--vertical-alignment-mobile: ;
1852
1853      --padding-block-start: max(20px, calc(var(--spacing-scale) * 40px));--padding-block-end: max(20px, calc(var(--spacing-scale) * 80px));
1854    "
1855  >
1856    
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868  <div class=" spacing-style text-block text-block--AZkdsR2pTMkVPUkpDV__heading h2    text-block--align-left  "  style="    --padding-block-start: 0px; --padding-block-end:0px; --padding-inline-start:0px; --padding-inline-end:0px;            --width: 100%;    --max-width: var(--max-width--body-normal);          --text-align: left;          ">
1869    <h1>About</h1>
1870  </div>
1871
1872
1873
1874
1875
1876
1877<div id="shopify-block-Aalh6ZmhOSDNKSHAvc__page-content" class="shopify-block rte">
1878
1879<div
1880  class="page-content"
1881  style="
1882    
1883  "
1884>
1885  <rte-formatter>
1886    <p>Idle Robot publishes practical field guides for people building small AI agents that do repetitive digital work — and earn while they do it.</p><p>We focus on realistic systems, honest economics, and workflows you can actually ship — not hype, not $10k promises.</p>
1887  </rte-formatter>
1888</div>
1889
1890
1891
1892
1893</div>
1894
1895  </div>
1896</div>
1897
1898
1899</div>
1900      </main>
1901
1902      <footer>
1903        <!-- BEGIN sections: footer-group -->
1904<div id="shopify-section-sections--21845341667560__idle_robot_footer" class="shopify-section shopify-section-group-footer-group idle-robot-footer-section"><footer class="idle-robot-footer">
1905  <div class="wrap">
1906    <div class="fgrid">
1907      <div class="fcol">
1908        <a href="/" class="brand" style="margin-bottom:18px">
1909          <img
1910  src="//idlerobot.ai/cdn/shop/t/1/assets/idle-robot-logo.png?v=89376690190735388251787692916"
1911  alt="IDLE Robot"
1912  width="38"
1913  height="38"
1914  loading="eager"
1915>
1916
1917          <div>
1918            <div class="wm">Idle Robot</div>
1919            <div class="tg">
1919AI AGENTS. REAL INCOME.</div>
1920          </div>
1921        </a>
1922        <p style="font-size:14.5px;max-width:36ch">Practical field guides for people building small AI agents that do repetitive digital work — and earn while they do it.</p>
1923      </div>
1924      <div class="fcol">
1925        <h5>Guide</h5>
1926        <a href="/#inside">What's inside</a>
1927        <a href="/#ideas">Income ideas</a>
1928        <a href="/#loop">The agent loop</a>
1929        <a href="/#buy">Buy the PDF</a>
1930      </div>
1931      <div class="fcol">
1932        <h5>Company</h5>
1933        <a href="/pages/about">About</a>
1934        <a href="/pages/contact">Contact</a>
1935        <a href="/#faq">FAQ</a>
1936        <a href="/pages/support">Support</a>
1937      </div>
1938      <div class="fcol">
1939        <h5>Legal</h5>
1940        <a href="/policies/privacy-policy">Privacy Policy</a>
1941        <a href="/policies/terms-of-service">Terms of Service</a>
1942        <a href="/policies/refund-policy">Refund Policy</a>
1943        <a href="/policies/shipping-policy">Digital Product Policy</a>
1944      </div>
1945    </div>
1946    <div class="fbot">
1947      <div>© 2026 Idle Robot · All rights reserved</div>
1948      <div>Digital product · Instant delivery · USD</div>
1949    </div>
1950  </div>
1951</footer>
1952
1953
1954</div>
1955<!-- END sections: footer-group -->
1956      </footer>
1957    </div>
1958
1959    
1960
1961
1962    
1963
1964
1965
1966
1967
1968
1969<script
1970  type="module"
1971  src="//idlerobot.ai/cdn/shop/t/1/assets/theme-drawer.js?v=155110645205299884131786965744"
1972  fetchpriority="low"
1973></script>
1973
1974
1975<script>
1976  /* Runs synchronously during HTML parsing — opens the correct drawer on first
1977     paint if navigation state was saved, so it renders with the rest of the page. */
1978  (function () {
1979    var drawerIds = (sessionStorage.getItem('theme-drawer-open') || '').split(',').filter(Boolean);
1980    if (!drawerIds.length) return;
1981
1982    // Only restore on wide viewports (squeeze mode). On narrow viewports the
1983    // drawer is a modal overlay — let it start closed after navigation rather
1984    // than re-opening a fullscreen dialog the user may have left behind.
1985    if (!window.matchMedia('(min-width: 990px)').matches) return;
1986
1987    var dialogs = [];
1988    for (var i = 0; i < drawerIds.length; i++) {
1989      var drawer = document.getElementById(drawerIds[i]);
1990      if (!drawer) continue;
1991
1992      drawer.setAttribute('open', '');
1993
1994      // Set [open] directly so the CSS slide-in applies without triggering
1995      // the browser's dialog focusing steps — on wide viewports the drawer is
1996      // a sidebar, not a modal, so focus should stay where it is.
1997      // The instant class suppresses the slide-in transition for the initial restore.
1998      // Set --drawer-stack-order so z-index layering matches the original order.
1999      drawer.style.setProperty('--drawer-stack-order', String(i + 1));
2000
2001      var dialog = drawer.querySelector('dialog');
2002      if (dialog) {
2003        dialog.setAttribute('open', '');
2004        dialog.classList.add('theme-drawer__dialog-instant');
2005        dialogs.push(dialog);
2006      }
2007
2008      // Let each drawer type handle its own restore (e.g. shopify-chat mode).
2009      // Synchronous dispatch — listeners attached during earlier parsing run immediately.
2010      drawer.dispatchEvent(new CustomEvent('theme-drawer:restoring'));
2011    }
2012
2013    // Apply squeeze immediately, bypassing the margin transition.
2014    // Only squeeze if at least one drawer was actually restored — saved
2015    // drawer IDs may not exist on every page (e.g. cart-drawer on /cart).
2016    var pageWrapper = document.querySelector('.page-wrapper');
2017    if (pageWrapper && dialogs.length > 0) {
2018      pageWrapper.style.transition = 'none';
2019      pageWrapper.classList.add('page-wrapper--drawer-open');
2020    }
2021
2022    // Re-enable transitions after one paint so the instant state is rendered first.
2023    requestAnimationFrame(function () {
2024      requestAnimationFrame(function () {
2025        if (pageWrapper) pageWrapper.style.transition = '';
2026        for (var j = 0; j < dialogs.length; j++) {
2027          dialogs[j].classList.remove('theme-drawer__dialog-instant');
2028        }
2029      });
2030    });
2031  })();
2032</script>
2032
2033
2034<script
2035  type="module"
2036>
2037  const pageWrapper = document.querySelector('.page-wrapper');
2038  const squeezeQuery = window.matchMedia('(min-width: 990px)');
2039
2040  // ── Squeeze coordination ──
2041  // Listens to all drawers. Only squeezes on wide viewports.
2042  document.addEventListener('theme-drawer:open', () => {
2043    if (squeezeQuery.matches) {
2044      pageWrapper?.classList.add('page-wrapper--drawer-open');
2045    }
2046  });
2047
2048  document.addEventListener('theme-drawer:close', () => {
2049    const openDrawer = document.querySelector('theme-drawer[open]');
2050    if (!openDrawer) {
2051      pageWrapper?.classList.remove('page-wrapper--drawer-open');
2052    }
2053  });
2054
2055  squeezeQuery.addEventListener('change', () => {
2056    const openDrawer = document.querySelector('theme-drawer[open]');
2057    pageWrapper?.classList.toggle('page-wrapper--drawer-open', Boolean(openDrawer) && squeezeQuery.matches);
2058  });
2059
2060  // ── State persistence ──
2061  // Store open drawer IDs sorted by their visual stack order so
2062  // the restore script can recreate the same z-index layering.
2063  function persistDrawerState() {
2064    const openDrawers = Array.from(document.querySelectorAll('theme-drawer[open]:not([no-persist])'));
2065    if (!openDrawers.length) {
2066      sessionStorage.removeItem('theme-drawer-open');
2067      return;
2068    }
2069
2070    openDrawers.sort((a, b) => {
2071      const orderA = Number(a.style.getPropertyValue('--drawer-stack-order') || 0);
2072      const orderB = Number(b.style.getPropertyValue('--drawer-stack-order') || 0);
2073      return orderA - orderB;
2074    });
2075
2076    sessionStorage.setItem('theme-drawer-open', openDrawers.map((d) => d.id).join(','));
2077  }
2078
2079  document.addEventListener('theme-drawer:open', persistDrawerState);
2080  document.addEventListener('theme-drawer:close', persistDrawerState);
2081</script>
2081
2082
2083
2084    
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095<script
2096  src="//idlerobot.ai/cdn/shop/t/1/assets/dialog.js?v=144816527575655702281786965744"
2097  type="module"
2098></script>
2098
2099
2100<script
2101  src="//idlerobot.ai/cdn/shop/t/1/assets/predictive-search.js?v=162722252387887966571786965744"
2102  type="module"
2103  fetchpriority="low"
2104></script>
2104
2105
2106<dialog-component
2107  id="search-modal"
2108  class="search-modal"
2109  
2110>
2111  <dialog
2112    ref="dialog"
2113    on:click="/closeDialogOnClickOutside"
2114    on:keydown="/closeDialogOnEscapePress"
2115    class="search-modal__content dialog-modal"
2116    scroll-lock
2117    aria-labelledby="search-modal-heading"
2118  >
2119    <h2
2120      id="search-modal-heading"
2121      class="visually-hidden"
2122    >
2123      Search
2124    </h2>
2125    <predictive-search-component
2126      class="predictive-search color-custom-popover"
2127      style="--product-corner-radius: 0px; --card-corner-radius: 4px;"
2128      data-section-id="predictive-search"
2129      data-testid="search-component--modal"
2130      role="search"
2131      aria-label="Search"
2132    >
2133      <form
2134        action="/search"
2135        method="get"
2136        role="search"
2137        class="predictive-search-form"
2138        ref="form"
2139        on:keydown="/onSearchKeyDown"
2140      >
2141        <div
2142          class="predictive-search-form__header"
2143        >
2144          <div class="predictive-search-form__header-inner">
2145            <label
2146              for="cmdk-input"
2147              class="visually-hidden"
2148            >Search</label>
2149            <input
2150              class="search-input"
2151              id="cmdk-input"
2152              type="search"
2153              name="q"
2154              role="combobox"
2155              aria-expanded="false"
2156              aria-owns="predictive-search-results"
2157              aria-controls="predictive-search-results"
2158              aria-haspopup="listbox"
2159              aria-autocomplete="list"
2160              autocomplete="off"
2161              placeholder="Search"
2162              ref="searchInput"
2163              on:input="/search"
2164              on:keydown="/onSearchKeyDown"
2165            >
2166            <input
2167              name="options[prefix]"
2168              type="hidden"
2169              value="last"
2170            >
2171            <span class="svg-wrapper predictive-search__icon">
2172              <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="9" cy="9" r="4.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 12.5 3.25 3.25"/></svg>
2173
2174            </span>
2175            <button
2176              type="button"
2177              class="button-unstyled predictive-search__reset-button"
2178              ref="resetButton"
2179              hidden
2180              on:click="/resetSearch"
2181            >
2182              Clear
2183            </button>
2184          </div>
2185          <button
2186            type="button"
2187            class="button predictive-search__close-modal-button"
2188            aria-label="Close dialog"
2189            on:click="dialog-component/closeDialog"
2190            ref="closeModalButton"
2191          >
2192            <span class="svg-wrapper">
2193              <svg aria-hidden="true" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2194<path d="M11.1765 12.025C11.4108 12.2594 11.7907 12.2594 12.025 12.025C12.2594 11.7907 12.2594 11.4108 12.025 11.1765L8.84931 8.00078L12.025 4.82505C12.2594 4.59073 12.2594 4.21083 12.025 3.97652C11.7907 3.7422 11.4108 3.7422 11.1765 3.97652L8.00078 7.15225L4.82505 3.97652C4.59073 3.7422 4.21083 3.7422 3.97652 3.97652C3.7422 4.21083 3.7422 4.59073 3.97652 4.82505L7.15225 8.00078L3.97652 11.1765C3.7422 11.4108 3.7422 11.7907 3.97652 12.025C4.21083 12.2594 4.59073 12.2594 4.82505 12.025L8.00078 8.84931L11.1765 12.025Z" fill="currentColor"/>
2195</svg>
2196
2197            </span>
2198          </button>
2199        </div>
2200
2201        <div class="predictive-search-form__content-wrapper">
2202          <div
2203            class="predictive-search-form__content"
2204            ref="predictiveSearchResults"
2205            on:click="/handleModalClick"
2206          >
2207            
2208
2209<div
2210  id="predictive-search-results"
2211  class="predictive-search-dropdown"
2212  role="listbox"
2213  aria-expanded="true"
2214  style="--color-shadow: rgb(var(--color-foreground-rgb) / 0.1);"
2215>
2216  
2217    <div class="predictive-search-results__inner">
2218      
2219      
2220        
2221        
2222        
2223          <div
2224  id="predictive-search-products"
2225  class="predictive-search-results__products"
2226  
2227    data-testid="products-list-default--modal"
2228  
2229>
2230  
2231    <h4 class="predictive-search-results__title">
2232      Products
2233    </h4>
2234    <ul
2235      class="predictive-search-results__list predictive-search-results__wrapper-products list-unstyled"
2236    >
2237      
2238      
2239        <li
2240          class="predictive-search-results__card predictive-search-results__card--product"
2241          ref="resultsItems[]"
2242        >
2243          
2244<product-component
2245    class="resource-card__wrapper"
2246    
2247    
2248    view-event-payload="{&quot;product&quot;:{&quot;id&quot;:9609460580584,&quot;title&quot;:&quot;Autonomous Income&quot;,&quot;handle&quot;:&quot;autonomous-income&quot;,&quot;selectedVariant&quot;:null},&quot;context&quot;:&quot;search&quot;,&quot;selectedOptions&quot;:[]}"
2249    
2250  ><div
2251  class="resource-card"
2252  data-resource-type="product"
2253>
2254  <a
2255    class="resource-card__link"
2256    href="/products/autonomous-income"
2257  >
2258    <span class="visually-hidden">
2259      Autonomous Income
2260    </span>
2261  </a>
2262  <div
2263    class="resource-card__media"
2264    style="--resource-card-aspect-ratio: 4 / 5;"
2265    
2266  >
2267      
2268      
2269<div
2270          aria-hidden="true"
2271          class="resource-card__image-placeholder"
2272        >
2272Autonomous Income</div></div>
2273
2274  <div class="resource-card__content">
2275    <p class="resource-card__title paragraph">Autonomous Income</p>
2276
2277    
2278      
2279
2280<div ref="priceContainer">
2281  
2282    
2283    
2284      
2285        <span class="price-item__group price-item--regular compare-at-price">
2286          <span class="visually-hidden">Regular price&nbsp;</span>$49.00</span>
2287        <span class="price-item__group price">
2288          <span class="visually-hidden">Sale price&nbsp;</span>
2289          $27.00
2290        </span>
2291      
2292    
2293  
2294</div>
2295    
2296  </div>
2297</div></product-component>
2298
2299        </li>
2300      
2301    </ul>
2302  
2303</div>
2304
2305        
2306      
2307    </div>
2308  
2309</div>
2310
2311          </div>
2312
2313          <div class="predictive-search-form__footer">
2314            <button
2315              class="button predictive-search__search-button"
2316              ref="viewAllButton"
2317            >
2318              View all
2319            </button>
2320          </div>
2321        </div>
2322      </form>
2323    </predictive-search-component>
2324  </dialog>
2325</dialog-component>
2326
2327
2328
2329
2330    
2331      
2331<script
2332  src="//idlerobot.ai/cdn/shop/t/1/assets/gift-card-recipient-form.js?v=170482155849799299241786965744"
2333  type="module"
2334  fetchpriority="low"
2335></script>
2335
2336
2337
2338
2339
2340<quick-add-dialog id="quick-add-dialog">
2341  <dialog
2342    class="quick-add-modal dialog-modal color-custom-popover"
2343    ref="dialog"
2344    scroll-lock
2345  >
2346    <button
2347      ref="closeButton"
2348      on:click="/closeDialog"
2349      class="button button-unstyled close-button quick-add-modal__close"
2350      aria-label="Close dialog"
2351    ><svg aria-hidden="true" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2352<path d="M11.1765 12.025C11.4108 12.2594 11.7907 12.2594 12.025 12.025C12.2594 11.7907 12.2594 11.4108 12.025 11.1765L8.84931 8.00078L12.025 4.82505C12.2594 4.59073 12.2594 4.21083 12.025 3.97652C11.7907 3.7422 11.4108 3.7422 11.1765 3.97652L8.00078 7.15225L4.82505 3.97652C4.59073 3.7422 4.21083 3.7422 3.97652 3.97652C3.7422 4.21083 3.7422 4.59073 3.97652 4.82505L7.15225 8.00078L3.97652 11.1765C3.7422 11.4108 3.7422 11.7907 3.97652 12.025C4.21083 12.2594 4.59073 12.2594 4.82505 12.025L8.00078 8.84931L11.1765 12.025Z" fill="currentColor"/>
2353</svg>
2354</button>
2355
2356    <product-component
2357      id="quick-add-modal-content"
2358      class="quick-add-modal__content"
2359      view-event-trigger="dialog"
2360    ></product-component>
2361  </dialog>
2362</quick-add-dialog>
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377    
2378
2379    
2379<script src="//idlerobot.ai/cdn/shop/t/1/assets/idle-robot.js?v=113912546619457092941787692916" defer></script>
2379
2380  
2380<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
2380
2381</body>
2382</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.