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 – 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="{"product":{"id":9609460580584,"title":"Autonomous Income","handle":"autonomous-income","selectedVariant":null},"context":"search","selectedOptions":[]}" 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 </span>$49.00</span> 2287 <span class="price-item__group price"> 2288 <span class="visually-hidden">Sale price </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.