PageSourceSearch

https://artoffaceless.com/products/the-hollow-circuit-book-1

html artoffaceless.com collected 2026-10-04 07:35:57 UTC 202,778 bytes, 5,410 lines download raw bytes

1<!doctype html>
2<html
3  
4  lang="en"
5>
6  <head><link
7        rel="icon"
8        type="image/png"
9        href="//artoffaceless.com/cdn/shop/files/aof-stamp-pink-black-clean-3000.png?crop=center&height=32&v=1790189977&width=32"
10      >
11    
12      <style data-shopify>
13        @media (prefers-reduced-motion: no-preference) {
14          @view-transition {
15            navigation: auto;
16          }
17        }
18      </style>
19      <link
20        rel="expect"
21        href="#MainContent"
22        blocking="render"
23        id="view-transition-render-blocker"
24      >
25    
26
27
28<meta charset="utf-8">
29<meta
30  http-equiv="X-UA-Compatible"
31  content="IE=edge"
32>
33<meta
34  name="viewport"
35  content="width=device-width,initial-scale=1"
36>
37<meta
38  name="theme-color"
39  content=""
40>
41
42<meta
43  property="og:site_name"
44  content="Art of FACELESS"
45>
46<meta
47  property="og:url"
48  content="https://artoffaceless.com/products/the-hollow-circuit-book-1"
49>
50<meta
51  property="og:title"
52  content="The Hollow Circuit [Book 1] ePUB Edition"
53>
54<meta
55  property="og:type"
56  content="product"
57>
58<meta
59  property="og:description"
60  content="THE HOLLOW CIRCUIT — BIOPUNK NOVEL &amp;amp; TRANSMEDIA UNIVERSE This is not a seamless story. In a city where memory is power and history is edited into sterile perfection, the poet Veylon is pursued by echoes of himself across collapsing timelines. Beneath the surface, the Hollow Circuit breathes. The text glitches. It c"
61><meta
62    property="og:image"
63    content="http://artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802"
64  >
65  <meta
66    property="og:image:secure_url"
67    content="https://artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802"
68  >
69  <meta
70    property="og:image:width"
71    content="1024"
72  >
73  <meta
74    property="og:image:height"
75    content="1536"
76  >
77  <meta
78    name="twitter:image"
79    content="https://artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802"
80  ><meta
81    property="og:price:amount"
82    content="5.00"
83  >
84  <meta
85    property="og:price:currency"
86    content="GBP"
87  ><meta
88  name="twitter:card"
89  content="summary_large_image"
90>
91<meta
92  name="twitter:title"
93  content="The Hollow Circuit [Book 1] ePUB Edition"
94>
95<meta
96  name="twitter:description"
97  content="THE HOLLOW CIRCUIT — BIOPUNK NOVEL &amp;amp; TRANSMEDIA UNIVERSE This is not a seamless story. In a city where memory is power and history is edited into sterile perfection, the poet Veylon is pursued by echoes of himself across collapsing timelines. Beneath the surface, the Hollow Circuit breathes. The text glitches. It c"
98>
99
100<title>
101  The Hollow Circuit [Book 1] ePUB Edition
102 &ndash; Art of FACELESS</title>
103
104<link
105  rel="canonical"
106  href="https://artoffaceless.com/products/the-hollow-circuit-book-1"
107>
108
109
110  <meta
111    name="description"
112    content="THE HOLLOW CIRCUIT — BIOPUNK NOVEL &amp;amp; TRANSMEDIA UNIVERSE This is not a seamless story. In a city where memory is power and history is edited into sterile perfection, the poet Veylon is pursued by echoes of himself across collapsing timelines. Beneath the surface, the Hollow Circuit breathes. The text glitches. It c"
113  >
114
115<link href="//artoffaceless.com/cdn/shop/t/8/assets/overflow-list.css?v=16727044177065489451787751266" as="style" rel="preload">
116<link href="//artoffaceless.com/cdn/shop/t/8/assets/base.css?v=4041570414051751781788101091" rel="stylesheet" type="text/css" media="all" />
117
118
119
120  <style data-shopify>
121    :root {
122      --hover-lift-amount: 4px;
123      --hover-scale-amount: 1.03;
124      --hover-subtle-zoom-amount: 1.015;
125    }
126
127    @media (any-pointer: fine) and (prefers-reduced-motion: no-preference) {
128      
129        .card-hover-effect-lift .product-card:hover,
130        .card-hover-effect-lift .collection-card:hover,
131        .card-hover-effect-lift .predictive-search-results__card:hover {
132          transform: translateY(calc(-1 * var(--hover-lift-amount)));
133        }
134      
135
136      
137
138      
139    }
140  </style>
141
142
143
144<link href="//artoffaceless.com/cdn/fonts/red_hat_text/redhattext_n4.f45549d853e5e3e2907f21be9aecf95e1eaa7516.woff2" as="font" type="font/woff2" fetchpriority="low" crossorigin="anonymous" rel="preload">
145
146
147<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 147
147
148<script type="importmap">
149  {
150    "imports": {
151      "@theme/overflow-list": "//artoffaceless.com/cdn/shop/t/8/assets/overflow-list.js?v=46858356770684902511787751266",
152      "@theme/component": "//artoffaceless.com/cdn/shop/t/8/assets/component.js?v=175690430936884589731787751266",
153      "@theme/dialog": "//artoffaceless.com/cdn/shop/t/8/assets/dialog.js?v=144816527575655702281787751266",
154      "@theme/events": "//artoffaceless.com/cdn/shop/t/8/assets/events.js?v=99399773727497444581787751266",
155      "@shopify/events": "https://cdn.shopify.com/storefront/standard-events.js",
156      "@theme/view-event-elements": "//artoffaceless.com/cdn/shop/t/8/assets/view-event-elements.js?v=34258756885466567141787751266",
157      "@theme/focus": "//artoffaceless.com/cdn/shop/t/8/assets/focus.js?v=60436577539430446401787751266",
158      "@theme/morph": "//artoffaceless.com/cdn/shop/t/8/assets/morph.js?v=182601902166245204061787751266",
159      "@theme/paginated-list": "//artoffaceless.com/cdn/shop/t/8/assets/paginated-list.js?v=71290058904108491691787751266",
160      "@theme/performance": "//artoffaceless.com/cdn/shop/t/8/assets/performance.js?v=171015751390534793081787751266",
161      "@theme/product-form": "//artoffaceless.com/cdn/shop/t/8/assets/product-form.js?v=156247955454460663281787751266",
162      "@theme/recently-viewed-products": "//artoffaceless.com/cdn/shop/t/8/assets/recently-viewed-products.js?v=94729125001750262651787751266",
163      "@theme/scrolling": "//artoffaceless.com/cdn/shop/t/8/assets/scrolling.js?v=162288454571026455011787751266",
164      "@theme/section-renderer": "//artoffaceless.com/cdn/shop/t/8/assets/section-renderer.js?v=44511745960026958271787751266",
165      "@theme/section-hydration": "//artoffaceless.com/cdn/shop/t/8/assets/section-hydration.js?v=108434990705342316311787751266",
166      "@theme/money-formatting": "//artoffaceless.com/cdn/shop/t/8/assets/money-formatting.js?v=160151249720534550011787751266",
167      "@theme/utilities": "//artoffaceless.com/cdn/shop/t/8/assets/utilities.js?v=46961525399390006791787751266",
168      "@theme/variant-picker": "//artoffaceless.com/cdn/shop/t/8/assets/variant-picker.js?v=76692244208061220611787751266",
169      "@theme/variant-resolution": "//artoffaceless.com/cdn/shop/t/8/assets/variant-resolution.js?v=69293302205961280521787751266",
170      "@theme/media-gallery": "//artoffaceless.com/cdn/shop/t/8/assets/media-gallery.js?v=154207211298275592001787751266",
171      "@theme/quick-add": "//artoffaceless.com/cdn/shop/t/8/assets/quick-add.js?v=160295260742220749141787751266",
172      "@theme/paginated-list-aspect-ratio": "//artoffaceless.com/cdn/shop/t/8/assets/paginated-list-aspect-ratio.js?v=25254270272143792451787751266",
173      "@theme/popover-polyfill": "//artoffaceless.com/cdn/shop/t/8/assets/popover-polyfill.js?v=119029313658895111201787751266",
174      "@theme/component-quantity-selector": "//artoffaceless.com/cdn/shop/t/8/assets/component-quantity-selector.js?v=67906657287482036641787751266",
175      "@theme/comparison-slider": "//artoffaceless.com/cdn/shop/t/8/assets/comparison-slider.js?v=106705562947035711941787751266",
176      "@theme/sticky-add-to-cart": "//artoffaceless.com/cdn/shop/t/8/assets/sticky-add-to-cart.js?v=130489688094345781431787751266",
177      "@theme/fly-to-cart": "//artoffaceless.com/cdn/shop/t/8/assets/fly-to-cart.js?v=48483246440248933081787751266",
178      "@theme/scroll-container": "//artoffaceless.com/cdn/shop/t/8/assets/scroll-container.js?v=127018149358875384221787751266",
179      "@theme/theme-drawer": "//artoffaceless.com/cdn/shop/t/8/assets/theme-drawer.js?v=155110645205299884131787751266"
180    }
181  }
182</script>
182<script
183  src="//artoffaceless.com/cdn/shop/t/8/assets/standard-actions-override.js?v=171683365447094389611787751266"
184  type="module"
185></script>
185
186
187<script
188  src="//artoffaceless.com/cdn/shop/t/8/assets/page-view-event.js?v=12823247316348680231787751266"
189  type="module"
190  defer
191></script>
191
192
193<script
194  src="//artoffaceless.com/cdn/shop/t/8/assets/view-transitions.js?v=116552130480572511441787751266"
195  async
196  
197    blocking="render"
198  
199></script>
199
200
201<link
202  rel="modulepreload"
203  href="//artoffaceless.com/cdn/shop/t/8/assets/utilities.js?v=46961525399390006791787751266"
204  fetchpriority="low"
205>
206<link
207  rel="modulepreload"
208  href="//artoffaceless.com/cdn/shop/t/8/assets/component.js?v=175690430936884589731787751266"
209  fetchpriority="low"
210>
211<link
212  rel="modulepreload"
213  href="//artoffaceless.com/cdn/shop/t/8/assets/section-renderer.js?v=44511745960026958271787751266"
214  fetchpriority="low"
215>
216<link
217  rel="modulepreload"
218  href="//artoffaceless.com/cdn/shop/t/8/assets/section-hydration.js?v=108434990705342316311787751266"
219  fetchpriority="low"
220>
221<link
222  rel="modulepreload"
223  href="//artoffaceless.com/cdn/shop/t/8/assets/morph.js?v=182601902166245204061787751266"
224  fetchpriority="low"
225>
226
227
228
229<link
230  rel="modulepreload"
231  href="//artoffaceless.com/cdn/shop/t/8/assets/focus.js?v=60436577539430446401787751266"
232  fetchpriority="low"
233>
234<link
235  rel="modulepreload"
236  href="//artoffaceless.com/cdn/shop/t/8/assets/recently-viewed-products.js?v=94729125001750262651787751266"
237  fetchpriority="low"
238>
239<link
240  rel="modulepreload"
241  href="//artoffaceless.com/cdn/shop/t/8/assets/scrolling.js?v=162288454571026455011787751266"
242  fetchpriority="low"
243>
244<link
245  rel="modulepreload"
246  href="//artoffaceless.com/cdn/shop/t/8/assets/events.js?v=99399773727497444581787751266"
247  fetchpriority="low"
248>
249<script
250  src="//artoffaceless.com/cdn/shop/t/8/assets/popover-polyfill.js?v=119029313658895111201787751266"
251  type="module"
252  fetchpriority="low"
253></script>
vendor: 1 bytes, line 253
253
254<script
255  src="//artoffaceless.com/cdn/shop/t/8/assets/overflow-list.js?v=46858356770684902511787751266"
256  type="module"
257  fetchpriority="low"
258></script>
vendor: 1 bytes, line 258
258
259<script
260  src="//artoffaceless.com/cdn/shop/t/8/assets/quick-add.js?v=160295260742220749141787751266"
261  type="module"
262  fetchpriority="low"
263></script>
263
264
265
266<script
267  src="//artoffaceless.com/cdn/shop/t/8/assets/dialog.js?v=144816527575655702281787751266"
268  type="module"
269  fetchpriority="low"
270></script>
vendor: 1 bytes, line 270
270
271<script
272  src="//artoffaceless.com/cdn/shop/t/8/assets/variant-picker.js?v=76692244208061220611787751266"
273  type="module"
274  fetchpriority="low"
275></script>
vendor: 1 bytes, line 275
275
276<script
277  src="//artoffaceless.com/cdn/shop/t/8/assets/product-card.js?v=80689566448612614681787751266"
278  type="module"
279  fetchpriority="low"
280></script>
vendor: 1 bytes, line 280
280
281<script
282  src="//artoffaceless.com/cdn/shop/t/8/assets/product-form.js?v=156247955454460663281787751266"
283  type="module"
284  fetchpriority="low"
285></script>
vendor: 1 bytes, line 285
285
286<script
287  src="//artoffaceless.com/cdn/shop/t/8/assets/fly-to-cart.js?v=48483246440248933081787751266"
288  type="module"
289  fetchpriority="low"
290></script>
vendor: 1 bytes, line 290
290
291<script
292  src="//artoffaceless.com/cdn/shop/t/8/assets/accordion-custom.js?v=105323356731531709191787751266"
293  type="module"
294  fetchpriority="low"
295></script>
vendor: 1 bytes, line 295
295
296<script
297  src="//artoffaceless.com/cdn/shop/t/8/assets/media.js?v=37825095869491791421787751266"
298  type="module"
299  fetchpriority="low"
300></script>
vendor: 1 bytes, line 300
300
301<script
302  src="//artoffaceless.com/cdn/shop/t/8/assets/product-price.js?v=179333985604099329921787751266"
303  type="module"
304  fetchpriority="low"
305></script>
vendor: 1 bytes, line 305
305
306<script
307  src="//artoffaceless.com/cdn/shop/t/8/assets/product-sku.js?v=28741104639155857071787751266"
308  type="module"
309  fetchpriority="low"
310></script>
vendor: 1 bytes, line 310
310
311<script
312  src="//artoffaceless.com/cdn/shop/t/8/assets/product-inventory.js?v=7173209571153411411787751266"
313  type="module"
314  fetchpriority="low"
315></script>
vendor: 1 bytes, line 315
315
316<script
317  src="//artoffaceless.com/cdn/shop/t/8/assets/show-more.js?v=94563802205717136101787751266"
318  type="module"
319  fetchpriority="low"
320></script>
vendor: 1 bytes, line 320
320
321<script
322  src="//artoffaceless.com/cdn/shop/t/8/assets/slideshow.js?v=28306258147874261831787751266"
323  type="module"
324  fetchpriority="low"
325></script>
vendor: 1 bytes, line 325
325
326<script
327  src="//artoffaceless.com/cdn/shop/t/8/assets/layered-slideshow.js?v=30135417790894624731787751266"
328  type="module"
329  fetchpriority="low"
330></script>
vendor: 1 bytes, line 330
330
331<script
332  src="//artoffaceless.com/cdn/shop/t/8/assets/anchored-popover.js?v=143987075196095667371787751266"
333  type="module"
334  fetchpriority="low"
335></script>
vendor: 1 bytes, line 335
335
336<script
337  src="//artoffaceless.com/cdn/shop/t/8/assets/floating-panel.js?v=151277338116891310371787751266"
338  type="module"
339  fetchpriority="low"
340></script>
vendor: 1 bytes, line 340
340
341<script
342  src="//artoffaceless.com/cdn/shop/t/8/assets/video-background.js?v=25237992823806706551787751266"
343  type="module"
344  fetchpriority="low"
345></script>
vendor: 1 bytes, line 345
345
346<script
347  src="//artoffaceless.com/cdn/shop/t/8/assets/component-quantity-selector.js?v=67906657287482036641787751266"
348  type="module"
349  fetchpriority="low"
350></script>
vendor: 1 bytes, line 350
350
351<script
352  src="//artoffaceless.com/cdn/shop/t/8/assets/media-gallery.js?v=154207211298275592001787751266"
353  type="module"
354  fetchpriority="low"
355></script>
vendor: 1 bytes, line 355
355
356<script
357  src="//artoffaceless.com/cdn/shop/t/8/assets/rte-formatter.js?v=40306132146590816021787751266"
358  type="module"
359  fetchpriority="low"
360></script>
vendor: 1 bytes, line 360
360
361<script
362  src="//artoffaceless.com/cdn/shop/t/8/assets/volume-pricing.js?v=15442793518842484731787751266"
363  type="module"
364  fetchpriority="low"
365></script>
vendor: 1 bytes, line 365
365
366<script
367  src="//artoffaceless.com/cdn/shop/t/8/assets/price-per-item.js?v=115937180292451397851787751266"
368  type="module"
369  fetchpriority="low"
370></script>
vendor: 1 bytes, line 370
370
371<script
372  src="//artoffaceless.com/cdn/shop/t/8/assets/volume-pricing-info.js?v=94479640769665442661787751266"
373  type="module"
374  fetchpriority="low"
375></script>
375
376
377
378
379
380  
380<script
381    src="//artoffaceless.com/cdn/shop/t/8/assets/sticky-add-to-cart.js?v=130489688094345781431787751266"
382    type="module"
383    fetchpriority="low"
384  ></script>
384
385  
385<script type="module">
386    import { RecentlyViewed } from '@theme/recently-viewed-products';
387    RecentlyViewed.addProduct('11491165929813');
388  </script>
388
389
390
391<script
392  src="//artoffaceless.com/cdn/shop/t/8/assets/auto-close-details.js?v=58350291535404441581787751266"
393  defer="defer"
394></script>
394
395
396<script>
397  const Theme = {
398    translations: {
399      placeholder_image: `Placeholder image`,
400      added: `Added`,
401      recipient_form_fields_visible: `Recipient form fields are now visible`,
402      recipient_form_fields_hidden: `Recipient form fields are now hidden`,
403      recipient_form_error: `There was an error with the form submission`,
404      items_added_to_cart_one: `1 item added to cart`,
405      items_added_to_cart_other: `{{ count }} items added to cart`,
406      cart_count: `Total items in cart`,
407    },
408    routes: {
409      cart_add_url: '/cart/add.js',
410      cart_change_url: '/cart/change',
411      cart_update_url: '/cart/update',
412      cart_url: '/cart',
413      predictive_search_url: '/search/suggest',
414      search_url: '/search',
415    },
416    template: {
417      name: 'product',
418    },
419  };
420</script>
420
421<style data-shopify>
422@font-face {
423  font-family: "Red Hat Text";
424  font-weight: 400;
425  font-style: normal;
426  font-display: swap;
427  src: url("//artoffaceless.com/cdn/fonts/red_hat_text/redhattext_n4.f45549d853e5e3e2907f21be9aecf95e1eaa7516.woff2") format("woff2"),
428       url("//artoffaceless.com/cdn/fonts/red_hat_text/redhattext_n4.966c83ef0ccfa6512b0ef1e376b376dfb286bd73.woff") format("woff");
429}
430@font-face {
431  font-family: "Red Hat Text";
432  font-weight: 700;
433  font-style: normal;
434  font-display: swap;
435  src: url("//artoffaceless.com/cdn/fonts/red_hat_text/redhattext_n7.01cb725162eb34b374670b9c1bc513ac241650e6.woff2") format("woff2"),
436       url("//artoffaceless.com/cdn/fonts/red_hat_text/redhattext_n7.b6189975b2592601f17bfdc64fb3d7ee0b51916e.woff") format("woff");
437}
438@font-face {
439  font-family: "Red Hat Text";
440  font-weight: 400;
441  font-style: italic;
442  font-display: swap;
443  src: url("//artoffaceless.com/cdn/fonts/red_hat_text/redhattext_i4.6cfaffd6c72cc494343813ed221ebfae57335fcc.woff2") format("woff2"),
444       url("//artoffaceless.com/cdn/fonts/red_hat_text/redhattext_i4.f23bcdc86836a2cc4ccc8466c927d1089852c8c8.woff") format("woff");
445}
446@font-face {
447  font-family: "Red Hat Text";
448  font-weight: 700;
449  font-style: italic;
450  font-display: swap;
451  src: url("//artoffaceless.com/cdn/fonts/red_hat_text/redhattext_i7.97ab5b705c1e57acd40bd16c6fd71567cb89284f.woff2") format("woff2"),
452       url("//artoffaceless.com/cdn/fonts/red_hat_text/redhattext_i7.f3393410cce0aafadc5ec698e5a40558f9a5b199.woff") format("woff");
453}
454
455
456  :root {
457    /* Page Layout */
458    --sidebar-width: 25rem;
459    --theme-drawer-width: 30rem;
460    --narrow-content-width: 36rem;
461    --normal-content-width: 42rem;
462    --narrow-page-width: 90rem;
463    --normal-page-width: 120rem;
464    --wide-page-width: 150rem;
465
466    /* Section Heights */
467    --section-height-small: 15rem;
468    --section-height-medium: 25rem;
469    --section-height-large: 35rem;
470
471    @media screen and (min-width: 40em) {
472      --section-height-small: 40svh;
473      --section-height-medium: 55svh;
474      --section-height-large: 70svh;
475    }
476
477    @media screen and (min-width: 60em) {
478      --section-height-small: 50svh;
479      --section-height-medium: 65svh;
480      --section-height-large: 80svh;
481    }
482
483    /* Letter spacing */
484    --letter-spacing-sm: 0.06em;
485
486    /* Font families */
487    --font-body--family: "SF Mono", Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
488    --font-body--style: normal;
489    --font-body--weight: 400;
490    --font-subheading--family: "SF Mono", Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
491    --font-subheading--style: normal;
492    --font-subheading--weight: 400;
493    --font-heading--family: "SF Mono", Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
494    --font-heading--style: normal;
495    --font-heading--weight: 400;
496    --font-accent--family: "Red Hat Text", sans-serif;
497    --font-accent--style: normal;
498    --font-accent--weight: 400;
499
500    /* Margin sizes */
501    --font-heading--spacing: 0.25em;
502    --font-h1--spacing: var(--font-heading--spacing);
503    --font-h2--spacing: var(--font-heading--spacing);
504    --font-h3--spacing: var(--font-heading--spacing);
505    --font-h4--spacing: var(--font-heading--spacing);
506    --font-h5--spacing: var(--font-heading--spacing);
507    --font-h6--spacing: var(--font-heading--spacing);
508    --font-paragraph--spacing: 0.5em;
509
510    /** Z-Index / Layering */
511    --layer-section-background: -2;
512    --layer-lowest: -1;
513    --layer-base: 0;
514    --layer-flat: 1;
515    --layer-raised: 2;
516    --layer-heightened: 4;
517    --layer-sticky: 8;
518    --layer-window-overlay: 10;
519    --layer-header-menu: 12;
520    --layer-overlay: 16;
521    --layer-menu-drawer: 18;
522    --layer-temporary: 20;
523
524    /* Max-width / Measure */
525    --max-width--body-normal: 32.5em;
526    --max-width--body-narrow: 22.75em;
527
528    --max-width--heading-normal: 32.5em;
529    --max-width--heading-narrow: 19.5em;
530
531    --max-width--display-normal: 13em;
532    --max-width--display-narrow: 9.75em;
533    --max-width--display-tight: 3.25em;
534
535    /* Letter-spacing / Tracking */
536    --letter-spacing--display-tight: -0.03em;
537    --letter-spacing--display-normal: 0em;
538    --letter-spacing--display-loose: 0.03em;
539
540    --letter-spacing--heading-tight: -0.03em;
541    --letter-spacing--heading-normal: 0em;
542    --letter-spacing--heading-loose: 0.03em;
543
544    --letter-spacing--body-tight: -0.03em;
545    --letter-spacing--body-normal: 0em;
546    --letter-spacing--body-loose: 0.03em;
547
548    /* Line height / Leading */
549    --line-height: 1;
550
551    --line-height--display-tight: 1;
552    --line-height--display-normal: 1.1;
553    --line-height--display-loose: 1.2;
554
555    --line-height--heading-tight: 1.15;
556    --line-height--heading-normal: 1.25;
557    --line-height--heading-loose: 1.35;
558
559    --line-height--body-tight: 1.2;
560    --line-height--body-normal: 1.4;
561    --line-height--body-loose: 1.6;
562
563    /* Typography presets */
564    --font-size--paragraph: 0.75rem;--font-size--h1: clamp(4.5rem, 12.0vw, 7.5rem);--font-size--h2: clamp(3.0rem, 7.2vw, 4.5rem);--font-size--h3: clamp(1.75rem, 4.8vw, 3.0rem);--font-size--h4: 1.5rem;--font-size--h5: 0.75rem;--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: none;--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: none;--font-h2--line-height: var(--line-height--display-normal);--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: none;--font-h3--line-height: var(--line-height--display-normal);--font-h4--weight: var(--font-subheading--weight);--font-h4--letter-spacing: var(--letter-spacing--heading-normal);--font-h4--size: var(--font-size--h4);--font-h4--family: var(--font-subheading--family);--font-h4--style: var(--font-subheading--style);--font-h4--case: none;--font-h4--line-height: var(--line-height--display-normal);--font-h5--weight: var(--font-body--weight);--font-h5--letter-spacing: var(--letter-spacing--heading-normal);--font-h5--size: var(--font-size--h5);--font-h5--family: var(--font-body--family);--font-h5--style: var(--font-body--style);--font-h5--case: uppercase;--font-h5--line-height: var(--line-height--display-loose);--font-h6--weight: var(--font-body--weight);--font-h6--letter-spacing: var(--letter-spacing--heading-normal);--font-h6--size: var(--font-size--h6);--font-h6--family: var(--font-body--family);--font-h6--style: var(--font-body--style);--font-h6--case: uppercase;--font-h6--line-height: var(--line-height--display-loose);
565
566    /* Hardcoded font sizes */
567    --font-size--3xs: 0.625rem;
568    --font-size--2xs: 0.75rem;
569    --font-size--xs: 0.8125rem;
570    --font-size--sm: 0.875rem;
571    --font-size--md: 1rem;
572    --font-size--lg: 1.125rem;
573    --font-size--xl: 1.25rem;
574    --font-size--2xl: 1.5rem;
575    --font-size--3xl: 2rem;
576    --font-size--4xl: 2.5rem;
577    --font-size--5xl: 3rem;
578    --font-size--6xl: 3.5rem;
579
580    /* Menu font sizes */
581    --menu-font-sm--size: 0.875rem;
582    --menu-font-sm--line-height: calc(1.1 + 0.5 * min(16 / 14));
583    --menu-font-md--size: 1rem;
584    --menu-font-md--line-height: calc(1.1 + 0.5 * min(16 / 16));
585    --menu-font-xl--size: 1.25rem;
586    --menu-font-xl--line-height: calc(1.1 + 0.5 * min(16 / 20));
587    --menu-font-2xl--size: 1.75rem;
588    --menu-font-2xl--line-height: calc(1.1 + 0.5 * min(16 / 28));
589
590    /* Colors */
591    --color-error: #8B0000;
592    --color-success: #006400;
593    --color-white: #FFFFFF;
594    --color-white-rgb: 255 255 255;
595    --color-instock: #3ED660;
596    --color-lowstock: #EE9441;
597    --color-outofstock: #C8C8C8;
598
599    /* Opacity */
600    --opacity-5: 0.05;
601    --opacity-8: 0.08;
602    --opacity-10: 0.1;
603    --opacity-15: 0.15;
604    --opacity-20: 0.2;
605    --opacity-25: 0.25;
606    --opacity-30: 0.3;
607    --opacity-40: 0.4;
608    --opacity-50: 0.5;
609    --opacity-60: 0.6;
610    --opacity-70: 0.7;
611    --opacity-80: 0.8;
612    --opacity-85: 0.85;
613    --opacity-90: 0.9;
614    --opacity-subdued-text: 0.8;
615    --opacity-muted-text: 0.6;
616
617    --shadow-button: 0 2px 3px rgb(0 0 0 / 20%);
618    --gradient-image-overlay: linear-gradient(to top, rgb(0 0 0 / 0.5), transparent);
619
620    /* Spacing */
621    --margin-3xs: 0.125rem;
622    --margin-2xs: 0.3rem;
623    --margin-xs: 0.5rem;
624    --margin-sm: 0.7rem;
625    --margin-md: 0.8rem;
626    --margin-lg: 1rem;
627    --margin-xl: 1.25rem;
628    --margin-2xl: 1.5rem;
629    --margin-4xl: 2rem;
630    --margin-6xl: 5rem;
631
632
633    --padding-3xs: 0.125rem;
634    --padding-2xs: 0.25rem;
635    --padding-xs: 0.5rem;
636    --padding-sm: 0.7rem;
637    --padding-md: 0.8rem;
638    --padding-lg: 1rem;
639    --padding-xl: 1.25rem;
640    --padding-2xl: 1.5rem;
641    --padding-3xl: 1.75rem;
642    --padding-4xl: 2rem;
643    --padding-5xl: 3rem;
644    --padding-6xl: 4rem;
645
646    --gap-3xs: 0.125rem;
647    --gap-2xs: 0.3rem;
648    --gap-xs: 0.5rem;
649    --gap-sm: 0.7rem;
650    --gap-md: 0.9rem;
651    --gap-lg: 1rem;
652    --gap-xl: 1.25rem;
653    --gap-2xl: 2rem;
654    --gap-3xl: 3rem;
655
656    --spacing-scale-md: 0.7;
657    --spacing-scale-default: 1.0;
658
659    /* Checkout buttons gap */
660    --checkout-button-gap: 10px;
661
662    /* Borders */
663    --style-border-width: 1px;
664    --style-border-radius-xs: 0.2rem;
665    --style-border-radius-sm: 0.6rem;
666    --style-border-radius-md: 0.8rem;
667    --style-border-radius-50: 50%;
668    --style-border-radius-lg: 1rem;
669    --style-border-radius-pills: 40px;
670    --style-border-radius-inputs: 0px;
671    --style-border-radius-buttons-primary: 0px;
672    --style-border-radius-buttons-secondary: 0px;
673    --style-border-width-primary: 0px;
674    --style-border-width-secondary: 1px;
675    --style-border-width-inputs: 1px;
676    --style-border-radius-popover: 0px;
677    --style-border-popover: 0px solid #000000;
678    --style-border-drawer: 1px solid #000000;
679    --style-border-swatch-opacity: 10%;
680    --style-border-swatch-width: 1px;
681    --style-border-swatch-style: solid;
682
683    /* Animation */
684    --ease-out-cubic: cubic-bezier(0.33, 1, 0.68, 1);
685    --ease-out-quad: cubic-bezier(0.32, 0.72, 0, 1);
686    --animation-speed-fast: 0.0625s;
687    --animation-speed: 0.125s;
688    --animation-speed-slow: 0.2s;
689    --animation-speed-medium: 0.15s;
690    --animation-easing: ease-in-out;
691    --drawer-animation-speed: 0.2s;
692    --animation-values: var(--animation-speed) var(--animation-easing);
693    --animation-timing-hover: cubic-bezier(0.25, 0.46, 0.45, 0.94);
694    --animation-timing-active: cubic-bezier(0.5, 0, 0.75, 0);
695    --animation-timing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
696    --animation-timing-default: cubic-bezier(0, 0, 0.2, 1);
697    --animation-timing-fade-in: cubic-bezier(0.16, 1, 0.3, 1);
698    --animation-timing-fade-out: cubic-bezier(0.4, 0, 0.2, 1);
699    /* Spring definitions suffixed with perceptual duration (d<ms>) and bounce (b<%>)*/
700    --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%);
701    --spring-d300-b0-duration: 0.4980s;
702    --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%);
703    --spring-d280-b0-duration: 0.4648s;
704    --spring-d220-b0-easing: linear(
705      0,
706      0.0093 1.37%,
707      0.0696 4.12%,
708      0.4667 15.09%,
709      0.6322 20.58%,
710      0.6986 23.32%,
711      0.7793 27.44%,
712      0.8219 30.18%,
713      0.8721,
714      0.9089 38.42%,
715      0.9427,
716      0.9644,
717      0.978 54.88%,
718      0.9881 61.74%,
719      0.9944 69.97%,
720      0.998 80.95%,
721      0.9996 98.78%
722    );
723    --spring-d220-b0-duration: 0.3818s;
724    --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%);
725    --spring-d180-b0-duration: 0.2988s;
726
727    /* View transitions */
728    /* View transition old */
729    --view-transition-old-main-content: var(--animation-speed) var(--animation-easing) both fadeOut;
730
731    /* View transition new */
732    --view-transition-new-main-content: var(--animation-speed) var(--animation-easing) both fadeIn, var(--animation-speed) var(--animation-easing) both slideInTopViewTransition;
733
734    /* Focus */
735    --focus-outline-width: 0.09375rem;
736    --focus-outline-offset: 0.2em;
737
738    /* Badges */
739    --badge-rectangle-padding-block: 1px;
740    --badge-rectangle-padding-inline: 6px;
741    @media screen and (min-width: 750px) {
742      --badge-rectangle-padding-block: 4px;
743      --badge-rectangle-padding-inline: 10px;
744    }
745
746    /* Icons */
747    --icon-size-2xs: 0.6rem;
748    --icon-size-xs: 0.85rem;
749    --icon-size-sm: 1.25rem;
750    --icon-size-md: 1.375rem;
751    --icon-size-lg: 1.5rem;
752    --icon-stroke-width: 1px;
753
754    /* Input */
755    --input-padding-y: 0.8rem;
756    --input-padding-x: 0.8rem;
757    --input-padding: var(--input-padding-y) var(--input-padding-x);
758    --input-box-shadow-width: var(--style-border-width-inputs);
759    --input-box-shadow: 0 0 0 var(--input-box-shadow-width) var(--color-input-border);
760    --input-box-shadow-focus: 0 0 0 calc(var(--input-box-shadow-width) + 0.5px) var(--color-input-border);
761    --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10));
762    --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5));
763    --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
764    --input-textarea-min-height: 55px;
765
766    /* Checkbox */
767    --checkbox-size: 22px;
768    --checkbox-border-radius: 7px;
769    --checkbox-border: 1px solid rgb(var(--color-foreground-rgb) / var(--opacity-35-55));
770    --checkbox-label-padding: 8px;
771
772    @media screen and (min-width: 750px) {
773      --checkbox-size: 16px;
774      --checkbox-border-radius: 5px;
775      --checkbox-label-padding: 6px;
776    }
777
778    /* Button size */
779    --button-size-md: 36px;
780    --button-size: var(--minimum-touch-target);
781    --button-padding-inline: 24px;
782    --button-padding-block: 16px;
783
784    /* Button font-family */
785    --button-font-family-primary: var(--font-body--family);
786    --button-font-family-secondary: var(--font-body--family);
787
788    /* Button text case */
789    --button-text-case-primary: uppercase;
790    --button-text-case-secondary: uppercase;
791
792    /* Borders */
793    --border-color: rgb(var(--color-border-rgb) / var(--opacity-50));
794    --border-width-sm: 1px;
795    --border-radius-sm: 0.25rem;
796
797    /* Drawers */
798    --drawer-header-desktop-top: 0rem;
799    --drawer-padding: calc(var(--padding-sm) + 7px);
800    --drawer-height: 100dvh;
801    --drawer-width: 95vw;
802    --drawer-max-width: 500px;
803
804    /* Variant Picker Swatches */
805    --variant-picker-swatch-width-unitless: 18;
806    --variant-picker-swatch-height-unitless: 18;
807    --variant-picker-swatch-width: 18px;
808    --variant-picker-swatch-height: 18px;
809    --variant-picker-swatch-radius: 0px;
810    --variant-picker-border-width: 1px;
811    --variant-picker-border-style: solid;
812    --variant-picker-border-opacity: 10%;
813
814    /* Variant Picker Buttons */
815    --variant-picker-button-radius: 0px;
816    --variant-picker-button-border-width: 1px;
817    --variant-option-label-color: var(--color, var(--color-foreground));
818
819    /* Slideshow */
820    --slideshow-controls-icon: 2rem;
821    --peek-next-slide-size: 3rem;
822
823    /* Utilities */
824    --backdrop-opacity: 0.15;
825    --backdrop-color-rgb: var(--color-shadow-rgb);
826    --minimum-touch-target: 44px;
827    --disabled-opacity: 0.5;
828    --skeleton-opacity: 0.025;
829
830    /* Shapes */
831
832    /* Buy buttons */
833    --height-buy-buttons: calc(var(--padding-lg) * 2 + var(--icon-size-sm));
834
835    /* Card image width and height variables */
836    --card-width-small: 10rem;
837
838    --height-small: 10rem;
839
840    @media screen and (min-width: 750px) {
841      --height-small: 17.5rem;
842    }
843
844    /* Modal */
845    --modal-max-height: 65dvh;
846    --quick-add-modal-height: min(38.5rem, 96vh);
847    --quick-add-modal-width: min(54rem, 96vw);
848    --quick-add-modal-gallery-width: 24rem;
849
850    /* Card styles for search */
851    --card-bg-hover: rgb(var(--color-foreground-rgb) / var(--opacity-5));
852    --card-border-hover: rgb(var(--color-foreground-rgb) / var(--opacity-30));
853    --card-border-focus: rgb(var(--color-foreground-rgb) / var(--opacity-10));
854
855    /* Cart */
856    --cart-primary-font-family: var(--font-body--family);
857    --cart-primary-font-style: var(--font-body--style);
858    --cart-primary-font-weight: var(--font-body--weight);
859    --cart-secondary-font-family: var(--font-primary--family);
860    --cart-secondary-font-style: var(--font-primary--style);
861    --cart-secondary-font-weight: var(--font-primary--weight);
862  }
863
864  .custom-color-quick-add {
865    --quick-add-background: #ffffff;
866    --quick-add-foreground: #000000;
867  }
868</style>
869
870
871
872
873
874
875  <style data-shopify>
876    .color-custom-popover,
877    .color-custom-popover .text-block {
878      /* Background */
879      --color-background: #ffffff;
880      --color-background-rgb: 255 255 255;
881
882      /* Opacity values adjusted for background brightness */
883      
884--opacity-5-15: 0.05; --opacity-10-25: 0.1; --opacity-35-55: 0.35; --opacity-40-60:
8850.4; --opacity-30-60: 0.3; --opacity-60: 0.6;
886
887
888      
889        /* Foreground / text — explicit or smart-contrasted */
890        --color: #000000;
891        --color-rgb: 0 0 0;
892        --color-foreground: #000000;
893        --color-foreground-rgb: 0 0 0;
894        --color-foreground-muted: rgb(0 0 0 / var(--opacity-muted-text));
895        --color-foreground-subdued: rgb(0 0 0 / var(--opacity-subdued-text));
896        --color-border: #000000;
897        --color-border-rgb: 0 0 0;
898      
899    }
900
901    
902      .color-custom-popover {
903        /* Form-related tokens stay on .color-custom only — .text-block is a prose
904           container (text/announcement/inline-text/blog-post-description/
905           collection-link/price/sku) and never holds form inputs. */
906        --input-disabled-background-color: rgb(0 0 0 / var(--opacity-10));
907        --input-disabled-border-color: rgb(0 0 0 / var(--opacity-5));
908        --input-disabled-text-color: rgb(0 0 0 / var(--opacity-50));
909        --checkbox-border: 1px solid rgb(0 0 0 / var(--opacity-35-55));
910      }
911    
912
913    .color-custom-popover {
914      color: var(--color, var(--color-foreground));
915      background-color: var(--color-background);
916    }
917  </style>
918
919
920
921
922
923
924
925
926  <style data-shopify>
927    .color-custom-drawer,
928    .color-custom-drawer .text-block {
929      /* Background */
930      --color-background: #ffffff;
931      --color-background-rgb: 255 255 255;
932
933      /* Opacity values adjusted for background brightness */
934      
935--opacity-5-15: 0.05; --opacity-10-25: 0.1; --opacity-35-55: 0.35; --opacity-40-60:
9360.4; --opacity-30-60: 0.3; --opacity-60: 0.6;
937
938
939      
940        /* Foreground / text — explicit or smart-contrasted */
941        --color: #000000;
942        --color-rgb: 0 0 0;
943        --color-foreground: #000000;
944        --color-foreground-rgb: 0 0 0;
945        --color-foreground-muted: rgb(0 0 0 / var(--opacity-muted-text));
946        --color-foreground-subdued: rgb(0 0 0 / var(--opacity-subdued-text));
947        --color-border: #000000;
948        --color-border-rgb: 0 0 0;
949      
950    }
951
952    
953      .color-custom-drawer {
954        /* Form-related tokens stay on .color-custom only — .text-block is a prose
955           container (text/announcement/inline-text/blog-post-description/
956           collection-link/price/sku) and never holds form inputs. */
957        --input-disabled-background-color: rgb(0 0 0 / var(--opacity-10));
958        --input-disabled-border-color: rgb(0 0 0 / var(--opacity-5));
959        --input-disabled-text-color: rgb(0 0 0 / var(--opacity-50));
960        --checkbox-border: 1px solid rgb(0 0 0 / var(--opacity-35-55));
961      }
962    
963
964    .color-custom-drawer {
965      color: var(--color, var(--color-foreground));
966      background-color: var(--color-background);
967    }
968  </style>
969
970
971
972
973
974
975
976
977  <style data-shopify>
978    .color-custom-badge-sale,
979    .color-custom-badge-sale .text-block {
980      /* Background */
981      --color-background: #383838;
982      --color-background-rgb: 56 56 56;
983
984      /* Opacity values adjusted for background brightness */
985      
986--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
9870.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
988
989
990      
991        /* Foreground / text — explicit or smart-contrasted */
992        --color: #ffffff;
993        --color-rgb: 255 255 255;
994        --color-foreground: #ffffff;
995        --color-foreground-rgb: 255 255 255;
996        --color-foreground-muted: rgb(255 255 255 / var(--opacity-muted-text));
997        --color-foreground-subdued: rgb(255 255 255 / var(--opacity-subdued-text));
998        --color-border: #ffffff;
999        --color-border-rgb: 255 255 255;
1000      
1001    }
1002
1003    
1004      .color-custom-badge-sale {
1005        /* Form-related tokens stay on .color-custom only — .text-block is a prose
1006           container (text/announcement/inline-text/blog-post-description/
1007           collection-link/price/sku) and never holds form inputs. */
1008        --input-disabled-background-color: rgb(255 255 255 / var(--opacity-10));
1009        --input-disabled-border-color: rgb(255 255 255 / var(--opacity-5));
1010        --input-disabled-text-color: rgb(255 255 255 / var(--opacity-50));
1011        --checkbox-border: 1px solid rgb(255 255 255 / var(--opacity-35-55));
1012      }
1013    
1014
1015    .color-custom-badge-sale {
1016      color: var(--color, var(--color-foreground));
1017      background-color: var(--color-background);
1018    }
1019  </style>
1020
1021
1022
1023
1024
1025
1026
1027
1028  <style data-shopify>
1029    .color-custom-badge-sold-out,
1030    .color-custom-badge-sold-out .text-block {
1031      /* Background */
1032      --color-background: #000000;
1033      --color-background-rgb: 0 0 0;
1034
1035      /* Opacity values adjusted for background brightness */
1036      
1037--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
10380.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
1039
1040
1041      
1042        /* Foreground / text — explicit or smart-contrasted */
1043        --color: #ffffff;
1044        --color-rgb: 255 255 255;
1045        --color-foreground: #ffffff;
1046        --color-foreground-rgb: 255 255 255;
1047        --color-foreground-muted: rgb(255 255 255 / var(--opacity-muted-text));
1048        --color-foreground-subdued: rgb(255 255 255 / var(--opacity-subdued-text));
1049        --color-border: #ffffff;
1050        --color-border-rgb: 255 255 255;
1051      
1052    }
1053
1054    
1055      .color-custom-badge-sold-out {
1056        /* Form-related tokens stay on .color-custom only — .text-block is a prose
1057           container (text/announcement/inline-text/blog-post-description/
1058           collection-link/price/sku) and never holds form inputs. */
1059        --input-disabled-background-color: rgb(255 255 255 / var(--opacity-10));
1060        --input-disabled-border-color: rgb(255 255 255 / var(--opacity-5));
1061        --input-disabled-text-color: rgb(255 255 255 / var(--opacity-50));
1062        --checkbox-border: 1px solid rgb(255 255 255 / var(--opacity-35-55));
1063      }
1064    
1065
1066    .color-custom-badge-sold-out {
1067      color: var(--color, var(--color-foreground));
1068      background-color: var(--color-background);
1069    }
1070  </style>
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089<style data-shopify>
1090  /* Palette colors */
1091  :root {
1092    --color-background: #ffffff;
1093    --color-background-rgb: 255 255 255;
1094    --color-foreground: #000000;
1095    --color-foreground-rgb: 0 0 0;
1096    --color-border: #000000;
1097    --color-border-rgb: 0 0 0;
1098    --palette-lightest: #ffffff;
1099    --palette-lightest-rgb: 255 255 255;
1100    --palette-darkest: #000000;
1101    --palette-darkest-rgb: 0 0 0;
1102    
1103--opacity-5-15: 0.05; --opacity-10-25: 0.1; --opacity-35-55: 0.35; --opacity-40-60:
11040.4; --opacity-30-60: 0.3; --opacity-60: 0.6;
1105
1106
1107    --color-primary-button-text: rgb(255 255 255 / 1.0);
1108    --color-primary-button-background: rgb(0 0 0 / 1.0);
1109    --color-primary-button-border: rgb(0 0 0 / 1.0);
1110    --color-primary-button-focus-outline: rgb(0 0 0);
1111    --color-primary-button-hover-text: rgb(255 255 255 / 1.0);
1112    --color-primary-button-hover-background: #262626;
1113    --color-primary-button-hover-border: #262626;
1114
1115    --color-secondary-button-text: rgb(0 0 0 / 1.0);
1116    --color-secondary-button-background: rgb(239 239 239 / 1.0);
1117    --color-secondary-button-border: rgb(239 239 239 / 1.0);
1118    --color-secondary-button-hover-text: rgb(0 0 0 / 1.0);
1119    --color-secondary-button-hover-background: #e2e2e2;
1120    --color-secondary-button-hover-border: #e2e2e2;
1121
1122    --color-input-background: rgb(255 255 255 / 1.0);
1123    --color-input-text: rgb(0 0 0 / 1.0);
1124    --color-input-text-rgb: 0 0 0;
1125    --color-input-border: rgb(0 0 0 / 0.13);
1126
1127    --color-variant-background: rgb(255 255 255 / 1.0);
1128    --color-variant-border: rgb(230 230 230 / 1.0);
1129    --color-variant-text: rgb(0 0 0 / 1.0);
1130    --color-variant-text-rgb: 0 0 0;
1131    --color-variant-hover-background: #f2f2f2;
1132    --color-variant-hover-text: rgb(0 0 0 / 1.0);
1133    --color-variant-hover-border: #d9d9d9;
1134
1135    --color-selected-variant-background: rgb(0 0 0 / 1.0);
1136    --color-selected-variant-border: rgb(0 0 0 / 1.0);
1137    --color-selected-variant-text: rgb(255 255 255 / 1.0);
1138    --color-selected-variant-text-rgb: 255 255 255;
1139    --color-selected-variant-hover-background: #262626;
1140    --color-selected-variant-hover-text: rgb(255 255 255 / 1.0);
1141    --color-selected-variant-hover-border: #262626;
1142
1143    --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10));
1144    --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15));
1145    --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
1146    --color-foreground-muted: rgb(var(--color-rgb, var(--color-foreground-rgb)) / var(--opacity-muted-text));
1147    --color-foreground-subdued: rgb(var(--color-rgb, var(--color-foreground-rgb)) / var(--opacity-subdued-text));
1148    --color-drawer-shadow-rgb: ;
1149    --color-popover-shadow-rgb: 0 0 0;
1150
1151    /* Shadows */
1152    
1153    
1154      --shadow-blur: 20px;
1155      --shadow-popover: 0px 4px 20px rgb(var(--color-popover-shadow-rgb) / var(--opacity-15));
1156    
1157  }
1158
1159  body {
1160    color: var(--color-foreground);
1161    background-color: var(--color-background);
1162  }
1163</style>
1164
1165
1166    
1166<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
1166<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/99124740437/digital_wallets/dialog">
1167<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="buy" href="/cart/54555719467349:1?ucp/version=2026-08-25&amp;context/payment/0/handler=dev.shopify.shop_pay" payment="dev.shopify.shop_pay com.google.pay dev.shopify.card"><link rel="alternate" type="application/json+oembed" href="https://artoffaceless.com/products/the-hollow-circuit-book-1.oembed">
1168<script async="async" src="/checkouts/internal/preloads.js?locale=en-GB"></script>
1168
1169<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
1170<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-GB&shop_id=99124740437" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1170
1170
1171<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":99124740437,"countryCode":"GB","currencyCode":"GBP","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/99124740437","merchantName":"Art of FACELESS","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","maestro","masterCard","amex","discover","elo"],"total":{"type":"pending","label":"Art of FACELESS","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 1171
1171
1172<script id="shopify-features" type="application/json">{"accessToken":"297f8b4b315cd8ff0f00d185adacfdfb","betas":["rich-media-storefront-analytics"],"domain":"artoffaceless.com","predictiveSearch":true,"shopId":99124740437,"locale":"en"}</script>
vendor: 1 bytes, line 1172
1172
1173<script>var Shopify = Shopify || {};
1174Shopify.shop = "gqrw8b-as.myshopify.com";
1175Shopify.locale = "en";
1176Shopify.currency = {"active":"GBP","rate":"1.0"};
1177Shopify.country = "GB";
1178Shopify.theme = {"name":"Featured image fallback (og:image fix) - draft","id":202604052821,"schema_name":"Atelier","schema_version":"4.1.4","theme_store_id":3621,"role":"main"};
1179Shopify.theme.handle = "null";
1180Shopify.theme.style = {"id":null,"handle":null};
1181Shopify.cdnHost = "artoffaceless.com/cdn";
1182Shopify.routes = Shopify.routes || {};
1183Shopify.routes.root = "/";
1184Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
1185Shopify.SignInWithShop = Shopify.SignInWithShop || {};
1186Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
1187Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 1187
1187
1188<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 1188
1188
1189<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 1189
1189
1190<script>
1191  window.ShopifyPay = window.ShopifyPay || {};
1192  window.ShopifyPay.apiHost = "shop.app\/pay";
1193  window.ShopifyPay.redirectState = null;
1194</script>
vendor: 1 bytes, line 1194
1194
1195<script>
1196  window.Shopify = window.Shopify || {};
1197  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
1198  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
1199  window.Shopify.SignInWithShop.eligible = true;
1200</script>
vendor: 1 bytes, line 1200
1200
1201<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
vendor: 1 bytes, line 1201
1201
1202<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 1202
1202
1203<script type="module">
1204  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
1205
1206  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
1207
1208</script>
vendor: 1 bytes, line 1208
1208
1209<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.payment-terms.en.esm.js"></script>
vendor: 1 bytes, line 1209
1209
1210<script type="module">
1211  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.payment-terms.en.esm.js");
1212
1213  
1214</script>
vendor: 1 bytes, line 1214
1214
1215<script>
1216  window.Shopify = window.Shopify || {};
1217  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
1218  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"]};
1219</script>
vendor: 1 bytes, line 1219
1219
1220<script>(function() {
1221  var isLoaded = false;
1222  function asyncLoad() {
1223    if (isLoaded) return;
1224    isLoaded = true;
1225    var urls = ["https:\/\/ecommerce-editor-connector.live.gelato.tech\/ecommerce-editor\/v1\/shopify.esm.js?c=58de9079-7b7a-420c-ab94-fee8912a3901\u0026s=33b52892-067a-4a81-af02-a32d5dcdb685\u0026shop=gqrw8b-as.myshopify.com"];
1226    for (var i = 0; i < urls.length; i++) {
1227      var s = document.createElement('script');
1228      s.type = 'text/javascript';
1229      s.async = true;
1230      s.src = urls[i];
1231      var x = document.getElementsByTagName('script')[0];
1232      x.parentNode.insertBefore(s, x);
1233    }
1234  };
1235  if(window.attachEvent) {
1236    window.attachEvent('onload', asyncLoad);
1237  } else {
1238    window.addEventListener('load', asyncLoad, false);
1239  }
1240})();</script>
vendor: 1 bytes, line 1240
1240
1241<script id="__st">var __st={"a":99124740437,"offset":3600,"reqid":"67587c28-7e0a-4bc8-b624-0300b2098da3-1791099356","pageurl":"artoffaceless.com\/products\/the-hollow-circuit-book-1","u":"65be0fc287ae","p":"product","rtyp":"product","rid":11491165929813};</script>
vendor: 1 bytes, line 1241
1241
1242<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 1242
1242
1243<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 1243
1243
1244<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//artoffaceless.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1244
1244
1245<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 = "//artoffaceless.com/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>
1245<script crossorigin="anonymous" defer="defer" src="//artoffaceless.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 1245
1245
1246<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 1246
1246
1247<script>
1248  window.Shopify = window.Shopify || {};
1249  window.Shopify.MCP = window.Shopify.MCP || {};
1250  window.Shopify.MCP.enabled = true;
1251  window.Shopify.MCP.shop = "gqrw8b-as.myshopify.com";
1252  window.Shopify.MCP.mcpEndpoint = "https:\/\/artoffaceless.com\/api\/mcp";
1253  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"]}}];
1254</script>
vendor: 1 bytes, line 1254
1254
1255<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("\/\/artoffaceless.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
1256</script>
vendor: 1 bytes, line 1256
1256
1257<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://artoffaceless.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
1258</script>
vendor: 1 bytes, line 1258
1258
1259<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
1260  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);
1261</script>
vendor: 1 bytes, line 1261
1261
1262<script>
1263  function portableWalletsCleanup(e){e&&e.src&&console.error("Failed to load portable wallets script "+e.src);var t=document.querySelectorAll("shopify-accelerated-checkout .shopify-payment-button__skeleton, shopify-accelerated-checkout-cart .wallet-cart-button__skeleton"),e=document.getElementById("shopify-buyer-consent");for(let e=0;e<t.length;e++)t[e].remove();e&&e.remove()}function portableWalletsNotLoadedAsModule(e){e instanceof ErrorEvent&&"string"==typeof e.message&&e.message.includes("import.meta")&&"string"==typeof e.filename&&e.filename.includes("portable-wallets")&&(window.removeEventListener("error",portableWalletsNotLoadedAsModule),window.Shopify.PaymentButton.failedToLoad=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",window.Shopify.PaymentButton.init):window.Shopify.PaymentButton.init())}window.addEventListener("error",portableWalletsNotLoadedAsModule);
1264</script>
1264
1265
1266<script type="module" src="https://artoffaceless.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js" onError="portableWalletsCleanup(this)" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1266
1266
1267<script nomodule>
1268  document.addEventListener("DOMContentLoaded", portableWalletsCleanup);
1269</script>
1269
1270
1271<script id='scb4127' type='text/javascript' async='' src='https://artoffaceless.com/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
1271<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://artoffaceless.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
1272<style id="shopify-accelerated-checkout-cart">
1273        #shopify-buyer-consent {
1274  margin-top: 1em;
1275  display: inline-block;
1276  width: 100%;
1277}
1278
1279#shopify-buyer-consent.hidden {
1280  display: none;
1281}
1282
1283#shopify-subscription-policy-button {
1284  background: none;
1285  border: none;
1286  padding: 0;
1287  text-decoration: underline;
1288  font-size: inherit;
1289  cursor: pointer;
1290}
1291
1292#shopify-subscription-policy-button::before {
1293  box-shadow: none;
1294}
1295
1296      </style>
1297<link rel="stylesheet" media="screen" href="//artoffaceless.com/cdn/shop/t/8/compiled_assets/styles.css?v=184126386464591067751787756450">
1298<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
1298
1299  <link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1300<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: 99124740437,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "product"};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 1300
1300
1301<script>
1302  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
1303</script>
vendor: 1 bytes, line 1303
1303
1304<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}
1304).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: 99124740437,storefrontBaseUrl: "https://artoffaceless.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://artoffaceless.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"5229576533","configuration":"{\"tagID\":\"2614471893518\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7ae565e198624b39e0856d352b9a6b4c","type":"APP","apiClientId":3009811,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"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":"Art of FACELESS","paymentSettings":{"currencyCode":"GBP"},"myshopifyDomain":"gqrw8b-as.myshopify.com","countryCode":"GB","storefrontUrl":"https:\/\/artoffaceless.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":5.0,"currencyCode":"GBP"},"product":{"title":"The Hollow Circuit [Book 1] ePUB Edition","vendor":"Art of FACELESS","id":"11491165929813","untranslatedTitle":"The Hollow Circuit [Book 1] ePUB Edition","url":"\/products\/the-hollow-circuit-book-1","type":"Digital Download"},"id":"54555719467349","image":{"src":"\/\/artoffaceless.com\/cdn\/shop\/files\/hollow_circuit_maroon_palette.png?v=1789261802"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}
1304],"products":[{"id":"11491165929813","handle":"the-hollow-circuit-book-1","isCollective":null,"title":"The Hollow Circuit [Book 1] ePUB Edition","type":"Digital Download","untranslatedTitle":"The Hollow Circuit [Book 1] ePUB Edition","url":"\/products\/the-hollow-circuit-book-1","vendor":"Art of FACELESS","remoteShopId":null,"variants":[{"id":"54555719467349","image":{"src":"\/\/artoffaceless.com\/cdn\/shop\/files\/hollow_circuit_maroon_palette.png?v=1789261802"},"price":{"amount":5.0,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"11528517386581","handle":"bubble-free-stickers","isCollective":null,"title":"404 QR Code Sticker","type":"Print Material","untranslatedTitle":"404 QR Code Sticker","url":"\/products\/bubble-free-stickers","vendor":"Art of FACELESS","remoteShopId":null,"variants":[{"id":"54729991881045","image":{"src":"\/\/artoffaceless.com\/cdn\/shop\/files\/kiss-cut-stickers-white-3x3-default-6a8b3850cd983.jpg?v=1787508846"},"price":{"amount":1.93,"currencyCode":"GBP"},"sku":"7758709_10163","title":"3″×3″","untranslatedTitle":"3″×3″"}]},{"id":"11607023944021","handle":"cowards-on-the-central-line-explicit","isCollective":null,"title":"Cowards on the Central Line [Explicit] HD WAV, 24-bit, 24K Audio","type":"Digital Download","untranslatedTitle":"Cowards on the Central Line [Explicit] HD WAV, 24-bit, 24K Audio","url":"\/products\/cowards-on-the-central-line-explicit","vendor":"Art of FACELESS","remoteShopId":null,"variants":[{"id":"54964027261269","image":{"src":"\/\/artoffaceless.com\/cdn\/shop\/files\/cowards-on-the-central-line-album-art.jpg?v=1789380503"},"price":{"amount":0.79,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"11528453980501","handle":"digital-product","isCollective":null,"title":"iz it coz i iz on Blogger? [Explicit] HD WAV, 24-bit, 24K Audio","type":"Digital Download","untranslatedTitle":"iz it coz i iz on Blogger? [Explicit] HD WAV, 24-bit, 24K Audio","url":"\/products\/digital-product","vendor":"Art of FACELESS","remoteShopId":null,"variants":[{"id":"54729483125077","image":{"src":"\/\/artoffaceless.com\/cdn\/shop\/files\/album_cover_1_glitch_icon_6b1183a2-945f-4ae5-abfa-3be5d87eefeb.png?v=1789383275"},"price":{"amount":0.79,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"11488239223125","handle":"mar00n-epub-edition","isCollective":null,"title":"MAR00N — ePUB Edition","type":"Digital Download","untranslatedTitle":"MAR00N — ePUB Edition","url":"\/products\/mar00n-epub-edition","vendor":"Art of FACELESS","remoteShopId":null,"variants":[{"id":"54546808701269","image":{"src":"\/\/artoffaceless.com\/cdn\/shop\/files\/maroon-ebook-cover.png?v=1790058339"},"price":{"amount":5.0,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]}],"purchasingCompany":null},},"https://artoffaceless.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"202604052821","themeStoreId":"3621","themePublished":"true","eventMetadataId":"d1348eb9-5f68-4a1d-a91d-985d0c19ffdb","pageType":"product","resourceId":"11491165929813","shopId":"99124740437","storefrontBaseUrl":"https:\/\/artoffaceless.com","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\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":5.0,\"currencyCode\":\"GBP\"},\"product\":{\"title\":\"The Hollow Circuit [Book 1] ePUB Edition\",\"vendor\":\"Art of FACELESS\",\"id\":\"11491165929813\",\"untranslatedTitle\":\"The Hollow Circuit [Book 1] ePUB Edition\",\"url\":\"\/products\/the-hollow-circuit-book-1\",\"type\":\"Digital Download\"},\"id\":\"54555719467349\",\"image\":{\"src\":\"\/\/artoffaceless.com\/cdn\/shop\/files\/hollow_circuit_maroon_palette.png?v=1789261802\"},\"sku\":null,\"title\":\"Default Title\",\"untranslatedTitle\":\"Default Title\"}}]]"});})();</script>
1304<script>
1305  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
1306  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
1307  window.ShopifyAnalytics.meta.currency = 'GBP';
1308  var meta = {"product":{"id":11491165929813,"gid":"gid:\/\/shopify\/Product\/11491165929813","vendor":"Art of FACELESS","type":"Digital Download","handle":"the-hollow-circuit-book-1","variants":[{"id":54555719467349,"price":500,"name":"The Hollow Circuit [Book 1] ePUB Edition","public_title":null,"sku":null}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":11491165929813,"requestId":"67587c28-7e0a-4bc8-b624-0300b2098da3-1791099356"}};
1309  for (var attr in meta) {
1310    window.ShopifyAnalytics.meta[attr] = meta[attr];
1311  }
1312</script>
vendor: 1 bytes, line 1312
1312
1313<script class="analytics">
1314  (function () {
1315    var customDocumentWrite = function(content) {
1316      var jquery = null;
1317
1318      if (window.jQuery) {
1319        jquery = window.jQuery;
1320      } else if (window.Checkout && window.Checkout.$) {
1321        jquery = window.Checkout.$;
1322      }
1323
1324      if (jquery) {
1325        jquery('body').append(content);
1326      }
1327    };
1328
1329    var hasLoggedConversion = function(token) {
1330      if (token) {
1331        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
1332      }
1333      return false;
1334    }
1335
1336    var setCookieIfConversion = function(token) {
1337      if (token) {
1338        var twoMonthsFromNow = new Date(Date.now());
1339        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
1340
1341        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
1342      }
1343    }
1344
1345    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
1346    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
1347    if (trekkie.integrations) {
1348      return;
1349    }
1350    trekkie.methods = [
1351      'identify',
1352      'page',
1353      'ready',
1354      'track',
1355      'trackForm',
1356      'trackLink'
1357    ];
1358    trekkie.factory = function(method) {
1359      return function() {
1360        var args = Array.prototype.slice.call(arguments);
1361        args.unshift(method);
1362        trekkie.push(args);
1363        if (method == 'track' || method == 'page') {
1364          var pageUrl;
1365          try {
1366            pageUrl = window.location.href;
1367          } catch (e) {}
1368          var pageReferrer;
1369          try {
1370            pageReferrer = document.referrer;
1371          } catch (e) {}
1372          try {
1373            if (window.__TREKKIE_SHIM_QUEUE == null) {
1374              window.__TREKKIE_SHIM_QUEUE = [];
1375            }
1376            window.__TREKKIE_SHIM_QUEUE.push({
1377              from: 'trekkie-stub',
1378              method: method,
1379              args: args.slice(1),
1380              pageContext: {
1381                url: pageUrl,
1382                referrer: pageReferrer
1383              }
1384            });
1385          } catch (e) {
1386            // no-op
1387          }
1388        }
1389        return trekkie;
1390      };
1391    };
1392    for (var i = 0; i < trekkie.methods.length; i++) {
1393      var key = trekkie.methods[i];
1394      trekkie[key] = trekkie.factory(key);
1395    }
1396    trekkie.load = function(config) {
1397      trekkie.config = config || {};
1398      trekkie.config.initialDocumentCookie = document.cookie;
1399      var first = document.getElementsByTagName('script')[0];
1400var script = document.createElement('script');
1401script.type = 'text/javascript';
1402script.onerror = function(e) {
1403  var scriptFallback = document.createElement('script');
1404  scriptFallback.type = 'text/javascript';
1405  scriptFallback.onerror = function(error) {
1406          var Monorail = {
1407      produce: function produce(monorailDomain, schemaId, payload) {
1408        var currentMs = new Date().getTime();
1409        var event = {
1410          schema_id: schemaId,
1411          payload: payload,
1412          metadata: {
1413            event_created_at_ms: currentMs,
1414            event_sent_at_ms: currentMs
1415          }
1416        };
1417        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
1418      },
1419      sendRequest: function sendRequest(endpointUrl, payload) {
1420        // Try the sendBeacon API
1421        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
1422          var blobData = new window.Blob([payload], {
1423            type: 'text/plain'
1424          });
1425
1426          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
1427            return true;
1428          } // sendBeacon was not successful
1429
1430        } // XHR beacon
1431
1432        var xhr = new XMLHttpRequest();
1433
1434        try {
1435          xhr.open('POST', endpointUrl);
1436          xhr.setRequestHeader('Content-Type', 'text/plain');
1437          xhr.send(payload);
1438        } catch (e) {
1439          console.log(e);
1440        }
1441
1442        return false;
1443      },
1444      isIos12: function isIos12() {
1445        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
1446      }
1447    };
1448    Monorail.produce('monorail-edge.shopifysvc.com',
1449      'trekkie_storefront_load_errors/1.1',
1450      {shop_id: 99124740437,
1451      theme_id: 202604052821,
1452      app_name: "storefront",
1453      context_url: window.location.href,
1454      source_url: "//artoffaceless.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
1455
1456  };
1457  scriptFallback.async = true;
1458  scriptFallback.src = '//artoffaceless.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1459  first.parentNode.insertBefore(scriptFallback, first);
1460};
1461script.async = true;
1462script.src = '//artoffaceless.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1463first.parentNode.insertBefore(script, first);
1464
1465    };
1466    trekkie.load(
1467      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":99124740437,"isMerchantRequest":null,"themeId":202604052821,"themeCityHash":"7177933740706828519","contentLanguage":"en","currency":"GBP","eventMetadataId":"d1348eb9-5f68-4a1d-a91d-985d0c19ffdb"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
1468    );
1469
1470    var loaded = false;
1471    trekkie.ready(function() {
1472      if (loaded) return;
1473      loaded = true;
1474
1475      window.ShopifyAnalytics.lib = window.trekkie;
1476
1477      var originalDocumentWrite = document.write;
1478      document.write = customDocumentWrite;
1479      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
1480      document.write = originalDocumentWrite;
1481
1482      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
1483      var token = match? match[1]: undefined;
1484      if (!hasLoggedConversion(token)) {
1485        setCookieIfConversion(token);
1486        window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"GBP","variantId":54555719467349,"productId":11491165929813,"productGid":"gid:\/\/shopify\/Product\/11491165929813","name":"The Hollow Circuit [Book 1] ePUB Edition","price":"5.00","sku":null,"brand":"Art of FACELESS","variant":null,"category":"Digital Download","nonInteraction":true,"remote":false,"available":true},undefined,undefined,{"shopifyEmitted":true});
1487      }
1488    });
1489
1490    window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":11491165929813,"requestId":"67587c28-7e0a-4bc8-b624-0300b2098da3-1791099356","shopifyEmitted":true});
1491
1492    var eventsListenerScript = document.createElement('script');
1493    eventsListenerScript.async = true;
1494    eventsListenerScript.src = "//artoffaceless.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
1495    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
1496})();</script>
vendor: 1 bytes, line 1496
1496
1497<script
1498  defer
1499  src="https://artoffaceless.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
1500  data-application="storefront-renderer"
1501  data-shop-id="99124740437"
1502  data-render-region="gcp-us-west1"
1503  data-page-type="product"
1504  data-theme-instance-id="202604052821"
1505  data-theme-name="Atelier"
1506  data-theme-version="4.1.4"
1507  data-monorail-region="shop_domain"
1508  data-resource-timing-sampling-rate="10"
1509  data-shs="true"
1510  data-shs-beacon="true"
1511  data-shs-export-with-fetch="true"
1512  data-shs-logs-sample-rate="1"
1513  data-shs-beacon-endpoint="https://artoffaceless.com/api/collect"
1514></script>
vendor: 1 bytes, line 1514
1514
1515<script src="https://cdn.shopify.com/storefront/web-components/account.js" type="module" crossorigin fetchpriority="low" async></script>
1515<script id="shopify-customer-account-data" type="application/json">{"customer":null,"shop":{"id":"99124740437","customerAccountTranslations":[{"key":"account_menu.signed_out_state.sheet_title","value":"Sign in or create account"},{"key":"account_menu.signed_out_state.section_divider","value":"More ways to sign in"},{"key":"account_menu.signed_out_state.alternate_divider","value":"OR"},{"key":"account_menu.signed_out_state.email_field_label","value":"Email"},{"key":"account_menu.signed_out_state.orders_button","value":"Orders"},{"key":"account_menu.signed_out_state.profile_button","value":"Profile"},{"key":"account_menu.signed_out_state.shop_login_button","value":"Sign in with Shop"},{"key":"account_menu.signed_out_state.continue_with_google","value":"Continue with Google"},{"key":"account_menu.signed_out_state.continue_with_facebook","value":"Continue with Facebook"},{"key":"account_menu.signed_out_state.marketing_consent_label","value":"Email me with news and offers"},{"key":"account_menu.signed_in_state.greeting_with_name","value":"Hi, {{first_name}}"},{"key":"account_menu.signed_in_state.greeting_without_name","value":"Account"},{"key":"account_menu.signed_in_state.orders_button","value":"Orders"},{"key":"account_menu.signed_in_state.profile_button","value":"Profile"},{"key":"account_menu.location_picker.sheet_title","value":"Locations"},{"key":"account_menu.location_picker.search_field_placeholder","value":"Search"},{"key":"account_menu.aria_labels.close_menu","value":"Close menu"},{"key":"account_menu.aria_labels.back_to_main_menu","value":"Back to main menu from {{title}}"},{"key":"account_menu.aria_labels.open_submenu","value":"{{title}}, opens submenu"},{"key":"account_menu.aria_labels.loading_menu","value":"Loading menu"},{"key":"account_menu.aria_labels.account","value":"Account"},{"key":"account_menu.aria_labels.sign_in_with_email","value":"Sign in with email"},{"key":"account_menu.aria_labels.sign_in","value":"Sign in"}],"socialLoginProviders":[{"handle":"Shop"}],"legacyCustomerAccounts":false,"signInLinksVisible":true,"b2bEnabled":false,"marketingConsentSigninEnabled":false},"visitor":{"country":"GB","language":"en"}}</script>
1515
1516<meta name="shopify-y" content="1a0ba9e8-782f-4b8e-b8d1-d6bcd387ffb6" data-expiration="1822656956000"><meta name="shopify-s" content="ba665907-2f84-42e8-818b-da4d5b6da540" data-expiration="1791101156000"><meta name="new-cookie-storage-activated" content="t">
1517</head>
1518
1519  <body class="page-width-narrow card-hover-effect-lift">
1520    <a
1521  class="skip-to-content-link button-secondary"
1522  href="#MainContent"
1523>
1524  Skip to content
1525</a>
1526
1527
1528
1529
1530    
1531
1532<theme-drawer id="chat-drawer">
1533  <dialog
1534    ref="panel"
1535    class="theme-drawer__dialog chat-drawer"
1536  >
1537    <shopify-chat
1538      mode="standalone"
1539      mode-switch
1540    ></shopify-chat>
1541  </dialog>
1542</theme-drawer>
1543
1544<script type="module">
1545  const chatDrawer = document.querySelector('#chat-drawer');
1546  const shopifyChat = document.querySelector('shopify-chat');
1547
1548  document.addEventListener('theme-drawer:open', (event) => {
1549    if (/** @type {Element} */ (event.target).id !== 'chat-drawer') return;
1550    shopifyChat?.setAttribute('mode', 'managed');
1551  });
1552
1553  document.addEventListener('theme-drawer:close', (event) => {
1554    if (/** @type {Element} */ (event.target).id !== 'chat-drawer') return;
1555    // If mode is still managed, this is a theme-initiated close (backdrop /
1556    // Escape) — close the chat so the FAB appears. If mode is already
1557    // standalone, the close was triggered by an undock (enter-standalone sets
1558    // mode before closing the drawer) — leave the chat open as a floating panel.
1559    if (shopifyChat?.getAttribute('mode') === 'managed') {
1560      shopifyChat?.removeAttribute('open');
1561    }
1562    shopifyChat?.setAttribute('mode', 'standalone');
1563  });
1564
1565  document.addEventListener('shopify-chat:enter-managed', () => {
1566    // Captured at event-fire time — the dock-transition animation hint below
1567    // depends on state as it was when the event was dispatched.
1568    const isStandaloneAndOpen = shopifyChat?.hasAttribute('open') && shopifyChat?.getAttribute('mode') === 'standalone';
1569
1570    // The activator-click path (FAB click on desktop with stored
1571    // preferredMode=managed) dispatches enter-managed *before* calling show(),
1572    // so the chat's `open` attribute at event time understates the imminent
1573    // outcome. Defer to a microtask: by then show() (if any) has run, and we
1574    // can distinguish the viewport-driven mobile→desktop transition that left
1575    // a minimized FAB (chat stays closed → don't open an empty drawer) from
1576    // an activator click (chat just opened → open the drawer).
1577    queueMicrotask(() => {
1578      if (!shopifyChat?.hasAttribute('open') && !chatDrawer?.hasAttribute('open')) {
1579        return;
1580      }
1581      chatDrawer?.open?.(isStandaloneAndOpen ? { enter: 'inline-start' } : undefined);
1582    });
1583  });
1584
1585  document.addEventListener('shopify-chat:enter-standalone', () => {
1586    shopifyChat?.setAttribute('mode', 'standalone');
1587    chatDrawer?.close?.();
1588  });
1589
1590  document.addEventListener('shopify-chat:close', () => {
1591    if (shopifyChat?.getAttribute('mode') === 'managed') {
1592      chatDrawer?.close?.();
1593    }
1594  });
1595
1596  document.addEventListener('megaMenu:hover', () => {
1597    if (shopifyChat?.hasAttribute('open') && shopifyChat?.getAttribute('mode') === 'standalone') {
1598      shopifyChat?.removeAttribute('open');
1599    }
1600  });
1601
1602  // After the chat upgrades it self-restores its preferred mode from
1603  // sessionStorage. Reconcile any mismatch with the theme-drawer's state
1604  // — the drawer is the source of truth for which mode the chat should
1605  // be in (open → managed, closed → standalone).
1606  customElements.whenDefined('shopify-chat').then(() => {
1607    const mode = chatDrawer?.hasAttribute('open') ? 'managed' : 'standalone';
1608    if (shopifyChat?.getAttribute('mode') !== mode) {
1609      // When switching managed → standalone (e.g. narrow viewport skipped
1610      // drawer restore), also close the chat so it renders as the FAB
1611      // rather than an open standalone panel.
1612      if (mode === 'standalone' && shopifyChat?.hasAttribute('open')) {
1613        shopifyChat?.removeAttribute('open');
1614      }
1615      shopifyChat?.setAttribute('mode', mode);
1616    }
1617  });
1618</script>
1618
1619
1620
1621
1622
1623    <div class="page-wrapper">
1624      <div id="header-group">
1625        <!-- BEGIN sections: header-group -->
1626<header id="shopify-section-sections--30935194534229__header_section" class="shopify-section shopify-section-group-header-group header-section">
1627
1628
1629
1630
1631
1632
1633<script type="application/ld+json">
1634  {
1635    "@context": "http://schema.org",
1636    "@type": "Organization",
1637    "name": "Art of FACELESS",
1638    
1639      "logo": "https:\/\/artoffaceless.com\/cdn\/shop\/files\/aof-stamp-pink-black-clean-3000.png?v=1790189977\u0026width=500",
1640    
1641    "url": "https:\/\/artoffaceless.com"
1642  }
1643</script>
1643
1644
1645<header-component
1646  id="header-component"
1647  class="header"
1648  data-theme-color="rgb(255 255 255)"
1649  data-bubble-style="default"
1650  
1651    transparent="not-sticky"
1652  
1653  
1654    sticky="always"
1655  
1656  data-skip-node-update
1657  data-scroll-direction="none"
1658  
1659  
1660    data-transparent-background="bottom"
1661  
1662  style="
1663    --color-background-top-row: rgba(255 255 255 / 1.0);
1664    --color-background-bottom-row: rgba(255 255 255 / 1.0);
1665    
1666      --color-transparent-text: #000000;
1667      --color-transparent-text-rgb: 0 0 0;
1668      --color-transparent-text-contrast: var(--palette-lightest);
1669    
1670    
1671      --cart-bubble-background: var(--palette-darkest);
1672      --cart-bubble-text: #ffffff;
1673    
1674    
1675  "
1676>
1677  <div class="header__underlay header__underlay-closed"></div>
1678  <div
1679    class="header__underlay header__underlay-open"
1680  ></div>
1681    
1682
1683    
1684
1685    
1686    
1687      <div
1688        class="header__row header__row--top color-#ffffff section section--full-width-margin section--page-width color-custom-top-sections--30935194534229__header_section"
1689        ref="headerRowTop"style="--border-bottom-width: 0px; --border-bottom-width-mobile: 0px; --border-bottom-color-mobile: var(--color-border);">
1690        <div class="header__columns spacing-style">
1691          <style data-shopify>
1692    .color-custom-top-sections--30935194534229__header_section,
1693    .color-custom-top-sections--30935194534229__header_section .text-block {
1694      /* Background */
1695      --color-background: #ffffff;
1696      --color-background-rgb: 255 255 255;
1697
1698      /* Opacity values adjusted for background brightness */
1699      
1700--opacity-5-15: 0.05; --opacity-10-25: 0.1; --opacity-35-55: 0.35; --opacity-40-60:
17010.4; --opacity-30-60: 0.3; --opacity-60: 0.6;
1702
1703
1704      
1705        /* Foreground / text — explicit or smart-contrasted */
1706        --color: #000000;
1707        --color-rgb: 0 0 0;
1708        --color-foreground: #000000;
1709        --color-foreground-rgb: 0 0 0;
1710        --color-foreground-muted: rgb(0 0 0 / var(--opacity-muted-text));
1711        --color-foreground-subdued: rgb(0 0 0 / var(--opacity-subdued-text));
1712        --color-border: var(--palette-darkest);
1713        --color-border-rgb: var(--palette-darkest-rgb);
1714      
1715    }
1716
1717    
1718      .color-custom-top-sections--30935194534229__header_section {
1719        /* Form-related tokens stay on .color-custom only — .text-block is a prose
1720           container (text/announcement/inline-text/blog-post-description/
1721           collection-link/price/sku) and never holds form inputs. */
1722        --input-disabled-background-color: rgb(0 0 0 / var(--opacity-10));
1723        --input-disabled-border-color: rgb(0 0 0 / var(--opacity-5));
1724        --input-disabled-text-color: rgb(0 0 0 / var(--opacity-50));
1725        --checkbox-border: 1px solid rgb(0 0 0 / var(--opacity-35-55));
1726      }
1727    
1728
1729    .color-custom-top-sections--30935194534229__header_section {
1730      color: var(--color, var(--color-foreground));
1731      background-color: var(--color-background);
1732    }
1733  </style>
1734
1735
1736      
1737      
1738<div
1739      class="header__column header__column--left"
1740      data-testid="header-top-left"
1741    >
1742      
1743        
1744          
1745              
1746
1747
1748
1749    <div
1750      class="header__drawer"
1751      ref="headerDrawerContainer"
1752      data-hydration-key="header-drawer-mobile"
1753      
1754    >
1755      
1756
1757
1758
1759
1760
1761
1762
1763  <style data-shopify>
1764    .color-custom-AMmZLWXpuWWNHRU5aR__header-menu-1,
1765    .color-custom-AMmZLWXpuWWNHRU5aR__header-menu-1 .text-block {
1766      /* Background */
1767      --color-background: #ffffff;
1768      --color-background-rgb: 255 255 255;
1769
1770      /* Opacity values adjusted for background brightness */
1771      
1772--opacity-5-15: 0.05; --opacity-10-25: 0.1; --opacity-35-55: 0.35; --opacity-40-60:
17730.4; --opacity-30-60: 0.3; --opacity-60: 0.6;
1774
1775
1776      
1777        /* Foreground / text — explicit or smart-contrasted */
1778        --color: #000000;
1779        --color-rgb: 0 0 0;
1780        --color-foreground: #000000;
1781        --color-foreground-rgb: 0 0 0;
1782        --color-foreground-muted: rgb(0 0 0 / var(--opacity-muted-text));
1783        --color-foreground-subdued: rgb(0 0 0 / var(--opacity-subdued-text));
1784        --color-border: var(--palette-darkest);
1785        --color-border-rgb: var(--palette-darkest-rgb);
1786      
1787    }
1788
1789    
1790      .color-custom-AMmZLWXpuWWNHRU5aR__header-menu-1 {
1791        /* Form-related tokens stay on .color-custom only — .text-block is a prose
1792           container (text/announcement/inline-text/blog-post-description/
1793           collection-link/price/sku) and never holds form inputs. */
1794        --input-disabled-background-color: rgb(0 0 0 / var(--opacity-10));
1795        --input-disabled-border-color: rgb(0 0 0 / var(--opacity-5));
1796        --input-disabled-text-color: rgb(0 0 0 / var(--opacity-50));
1797        --checkbox-border: 1px solid rgb(0 0 0 / var(--opacity-35-55));
1798      }
1799    
1800
1801    .color-custom-AMmZLWXpuWWNHRU5aR__header-menu-1 {
1802      color: var(--color, var(--color-foreground));
1803      background-color: var(--color-background);
1804    }
1805  </style>
1806
1807
1808
1809<script
1810  src="//artoffaceless.com/cdn/shop/t/8/assets/header-drawer.js?v=121243031541024704371787751266"
1811  type="module"
1812  fetchpriority="low"
1813></script>
1813
1814
1815<header-drawer
1816  class="header-drawer "
1817  style="--menu-image-border-radius: 0px; --resource-card-corner-radius: 0px;"
1818>
1819  <details
1820    id="Details-menu-drawer-container"
1821    data-skip-node-update="true"
1822    class="menu-drawer-container"
1823    ref="details"
1824    scroll-lock
1825  >
1826    <summary
1827      class="header__icon header__icon--menu header__icon--summary"
1828      aria-label="Menu"
1829      on:click="/toggle"
1830    >
1831      <span class="svg-wrapper header-drawer-icon header-drawer-icon--open"><svg aria-hidden="true" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
1832  <path d="M1 3.5H13" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/>
1833  <path d="M1 10.5H13" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/>
1834</svg>
1835</span>
1836      <span class="svg-wrapper header-drawer-icon header-drawer-icon--close"><svg aria-hidden="true" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
1837  <path d="M3.75 3.75L10.25 10.25M10.25 3.75L3.75 10.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
1838</svg>
1839</span>
1840    </summary>
1841    <div
1842      ref="menuDrawer"
1843      class="
1844        menu-drawer
1845        
1846          color-custom-AMmZLWXpuWWNHRU5aR__header-menu-1
1847        
1848      "
1849    >
1850      <button
1851        class="button close-button menu-drawer__close-button focus-inset"
1852        type="button"
1853        aria-label="Close"
1854        on:click="/close"
1855      >
1856        <span class="svg-wrapper header-drawer-icon header-drawer-icon--close"><svg aria-hidden="true" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
1857  <path d="M3.75 3.75L10.25 10.25M10.25 3.75L3.75 10.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
1858</svg>
1859</span>
1860      </button>
1861      <nav
1862        class="menu-drawer__navigation"
1863        style="--menu-top-level-font-family: var(--font-primary--family);
1864--menu-top-level-font-size-desktop: var(--font-size--body-sm); --menu-top-level-font-style: var(--font-primary--style); --menu-top-level-font-weight: var(--font-primary--weight); --menu-top-level-font-case:uppercase;
1865
1866  --menu-top-level-font-size: var(--menu-font-2xl--size); --menu-top-level-font-line-height:
1867  var(--menu-font-2xl--line-height);
1868
1869--menu-top-level-font-color: var(--color-foreground); --menu-top-level-font-color-rgb: var(--color-foreground-rgb);
1870
1871--menu-parent-font-family: var(--font-primary--family); --menu-parent-font-style:
1872var(--font-primary--style); --menu-parent-font-weight: var(--font-primary--weight); --menu-parent-font-case:
1873uppercase;
1874
1875    --menu-parent-font-size: var(--menu-font-sm--size); --menu-parent-font-line-height:
1876    var(--menu-font-sm--line-height); --menu-parent-font-color: var(--color-foreground-subdued);
1877    --menu-parent-active-font-color: var(--color-foreground);
1878  
1879--menu-child-font-family: var(--font-primary--family); --menu-child-font-style:var(--font-primary--style); --menu-child-font-weight: var(--font-primary--weight); --menu-child-font-case:
1880uppercase;
1881
1882    --menu-child-font-size: var(--menu-font-md--size); --menu-child-font-line-height: var(--menu-font-md--line-height);
1883    --menu-child-font-color: var(--color-foreground); --menu-child-active-font-color: var(--color-foreground-subdued);
1884  
1885
1886        "
1887        aria-label="Primary"
1888      >
1889        <ul
1890          class="menu-drawer__menu has-submenu"
1891          role="list"
1892        >
1893            
1894            
1895
1896              <li
1897                style="--menu-drawer-animation-index: 1;"
1898                class="menu-drawer__list-item--flat"
1899              >
1900                
1901<a
1902                    id="HeaderDrawer-home"
1903                    href="/"
1904                    class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element"
1905                    
1906                  >
1907                    <span class="menu-drawer__menu-item-text wrap-text">Home</span>
1908                  </a>
1909                
1910              </li>
1911              <li
1912                style="--menu-drawer-animation-index: 2;"
1913                class="menu-drawer__list-item--flat"
1914              >
1915                
1916<a
1917                    id="HeaderDrawer-about"
1918                    href="/pages/about-art-of-faceless"
1919                    class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element"
1920                    
1921                  >
1922                    <span class="menu-drawer__menu-item-text wrap-text">About</span>
1923                  </a>
1924                
1925              </li>
1926              <li
1927                style="--menu-drawer-animation-index: 3;"
1928                class="menu-drawer__list-item--flat"
1929              >
1930                
1931<a
1932                    id="HeaderDrawer-blog"
1933                    href="https://blog.artoffaceless.com/"
1934                    class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element"
1935                    
1936                  >
1937                    <span class="menu-drawer__menu-item-text wrap-text">Blog</span>
1938                  </a>
1939                
1940              </li>
1941              <li
1942                style="--menu-drawer-animation-index: 4;"
1943                class="menu-drawer__list-item--flat"
1944              >
1945                
1946<a
1947                    id="HeaderDrawer-our-network"
1948                    href="https://linktr.ee/ArtofFACELESS"
1949                    class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element"
1950                    
1951                  >
1952                    <span class="menu-drawer__menu-item-text wrap-text">Our Network</span>
1953                  </a>
1954                
1955              </li>
1956              <li
1957                style="--menu-drawer-animation-index: 5;"
1958                class="menu-drawer__list-item--flat"
1959              >
1960                
1961<a
1962                    id="HeaderDrawer-contact"
1963                    href="/pages/contact"
1964                    class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element"
1965                    
1966                  >
1967                    <span class="menu-drawer__menu-item-text wrap-text">Contact</span>
1968                  </a>
1969                
1970              </li>
1971        </ul>
1972      </nav>
1973      <div
1974        class="menu-drawer__utility-links menu-drawer__animated-element"
1975        style="--menu-drawer-animation-index: 5;"
1976      >
1977        
1978        </div>
1979
1980      
1981    </div>
1982    <div
1983      class="menu-drawer__backdrop"
1984      on:click="header-drawer/close"
1985    ></div>
1986  </details>
1987</header-drawer>
1988
1989
1990
1991    </div>
1992
1993  
1994
1995<style data-shopify>
1996  .header__underlay {
1997    --color-submenu: rgb(255 255 255);
1998  }
1999</style>
2000
2001
2002
2003
2004            
2005        
2006      
2007        
2008          
2009              
2010  <search-button
2011    class="search-action search-action--hidden-on-menu"
2012  >
2013    <button
2014      on:click="#search-modal/showDialog"
2015      class="button-unstyled header-actions__action"
2016      aria-label="Search"
2017      aria-haspopup="dialog"
2018    >
2019      <span class="hidden">
2020        Search
2021      </span>
2022
2023      <span class="svg-wrapper ">
2024        <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>
2025
2026      </span>
2027    </button>
2028  </search-button>
2029
2030
2031
2032
2033            
2034        
2035      
2036        
2037          
2038              
2039
2040
2041
2042    
2043
2044
2045
2046
2047  <style data-shopify>
2048    .color-custom-AMmZLWXpuWWNHRU5aR__header-menu,
2049    .color-custom-AMmZLWXpuWWNHRU5aR__header-menu .text-block {
2050      /* Background */
2051      --color-background: #ffffff;
2052      --color-background-rgb: 255 255 255;
2053
2054      /* Opacity values adjusted for background brightness */
2055      
2056--opacity-5-15: 0.05; --opacity-10-25: 0.1; --opacity-35-55: 0.35; --opacity-40-60:
20570.4; --opacity-30-60: 0.3; --opacity-60: 0.6;
2058
2059
2060      
2061        /* Foreground / text — explicit or smart-contrasted */
2062        --color: #000000;
2063        --color-rgb: 0 0 0;
2064        --color-foreground: #000000;
2065        --color-foreground-rgb: 0 0 0;
2066        --color-foreground-muted: rgb(0 0 0 / var(--opacity-muted-text));
2067        --color-foreground-subdued: rgb(0 0 0 / var(--opacity-subdued-text));
2068        --color-border: var(--palette-darkest);
2069        --color-border-rgb: var(--palette-darkest-rgb);
2070      
2071    }
2072
2073    
2074      .color-custom-AMmZLWXpuWWNHRU5aR__header-menu {
2075        /* Form-related tokens stay on .color-custom only — .text-block is a prose
2076           container (text/announcement/inline-text/blog-post-description/
2077           collection-link/price/sku) and never holds form inputs. */
2078        --input-disabled-background-color: rgb(0 0 0 / var(--opacity-10));
2079        --input-disabled-border-color: rgb(0 0 0 / var(--opacity-5));
2080        --input-disabled-text-color: rgb(0 0 0 / var(--opacity-50));
2081        --checkbox-border: 1px solid rgb(0 0 0 / var(--opacity-35-55));
2082      }
2083    
2084
2085    .color-custom-AMmZLWXpuWWNHRU5aR__header-menu {
2086      color: var(--color, var(--color-foreground));
2087      background-color: var(--color-background);
2088    }
2089  </style>
2090
2091
2092
2093    
2094
2095    <header-menu
2096      ref="headerMenu"
2097      class="header-menu"
2098      
2099      data-hydration-key="header-menu"
2100    >
2101      <div class="header-menu__inner">
2102        <nav
2103          class="menu-list"
2104          aria-label="Primary"
2105          style="--menu-top-level-font-family: var(--font-primary--family);
2106--menu-top-level-font-size-desktop: var(--font-size--body-sm); --menu-top-level-font-style: var(--font-primary--style);
2106 --menu-top-level-font-weight: var(--font-primary--weight); --menu-top-level-font-case:uppercase;
2107
2108  --menu-top-level-font-size: var(--menu-font-sm--size); --menu-top-level-font-line-height:
2109  var(--menu-font-sm--line-height);
2110
2111--menu-top-level-font-color: var(--color-foreground); --menu-top-level-font-color-rgb: var(--color-foreground-rgb);
2112"
2113        >
2114          
2115          <overflow-list
2116  
2117    ref="overflowMenu"
2118  
2119  
2120    class="overflow-menu background-matches-parent"
2121  
2122  
2123    minimum-items="2"
2124  
2125  
2126    data-testid="header-menu-overflow-list"
2127  
2128  
2129    data-skip-node-update
2130  
2131>
2132  <template shadowrootmode="open">
2133    <link href="//artoffaceless.com/cdn/shop/t/8/assets/overflow-list.css?v=16727044177065489451787751266" rel="stylesheet" type="text/css" media="all" />
2134
2135    <ul part="list">
2136      <slot></slot>
2137      <slot
2138        name="more"
2139        part="more"
2140        hidden
2141        
2142      >
2143        <li
2144          part="more"
2145        >
2146          <button
2147            class="button"
2148            type="button"
2149            tabindex="0"
2150            
2151          >
2152            More
2153          </button>
2154        </li>
2155      </slot>
2156      <li
2157        part="placeholder"
2158        hidden
2159      ></li>
2160    </ul>
2161
2162    <div part="overflow">
2163      <ul part="overflow-list">
2164        <slot name="overflow"></slot>
2165      </ul>
2166    </div>
2167  </template>
2168
2169  
2170      
2171        <li
2172          class="menu-list__list-item"
2173          on:blur="/deactivate"
2174          on:pointerenter="/activate"
2175          on:pointerleave="/deactivate"
2176        ><a
2177            href="/"
2178            data-skip-node-update="true"
2179            class="menu-list__link"
2180            
2181            ref="menuitem"
2182          >
2183            <span class="menu-list__link-title">Home</span>
2184          </a></li>
2185      
2186        <li
2187          class="menu-list__list-item"
2188          on:blur="/deactivate"
2189          on:pointerenter="/activate"
2190          on:pointerleave="/deactivate"
2191        ><a
2192            href="/pages/about-art-of-faceless"
2193            data-skip-node-update="true"
2194            class="menu-list__link"
2195            
2196            ref="menuitem"
2197          >
2198            <span class="menu-list__link-title">About</span>
2199          </a></li>
2200      
2201        <li
2202          class="menu-list__list-item"
2203          on:blur="/deactivate"
2204          on:pointerenter="/activate"
2205          on:pointerleave="/deactivate"
2206        ><a
2207            href="https://blog.artoffaceless.com/"
2208            data-skip-node-update="true"
2209            class="menu-list__link"
2210            
2211            ref="menuitem"
2212          >
2213            <span class="menu-list__link-title">Blog</span>
2214          </a></li>
2215      
2216        <li
2217          class="menu-list__list-item"
2218          on:blur="/deactivate"
2219          on:pointerenter="/activate"
2220          on:pointerleave="/deactivate"
2221        ><a
2222            href="https://linktr.ee/ArtofFACELESS"
2223            data-skip-node-update="true"
2224            class="menu-list__link"
2225            
2226            ref="menuitem"
2227          >
2228            <span class="menu-list__link-title">Our Network</span>
2229          </a></li>
2230      
2231        <li
2232          class="menu-list__list-item"
2233          on:blur="/deactivate"
2234          on:pointerenter="/activate"
2235          on:pointerleave="/deactivate"
2236        ><a
2237            href="/pages/contact"
2238            data-skip-node-update="true"
2239            class="menu-list__link"
2240            
2241            ref="menuitem"
2242          >
2243            <span class="menu-list__link-title">Contact</span>
2244          </a></li>
2245      
2246      <li
2247        class="menu-list__list-item"
2248        slot="more"
2249        on:blur="/deactivate"
2250        on:pointerenter="/activate"
2251        on:pointerleave="/deactivate"
2252      >
2253        <button
2254          class="menu-list__link button-unstyled"
2255          aria-haspopup="true"
2256          aria-expanded="false"
2257          ref="menuitem"
2258          on:click="/toggle"
2259          data-testid="header-menu-more-button"
2260        >
2261          <span class="menu-list__link-title">More</span>
2262        </button>
2263      </li>
2264    
2265</overflow-list>
2266
2267        </nav>
2268      </div>
2269
2270      
2270<script
2271        src="//artoffaceless.com/cdn/shop/t/8/assets/header-menu.js?v=1177411761452820701787751266"
2272        type="module"
2273        fetchpriority="low"
2274      ></script>
2274
2275    </header-menu>
2276
2277
2278<style data-shopify>
2279  .header__underlay {
2280    --color-submenu: rgb(255 255 255);
2281  }
2282</style>
2283
2284
2285
2286
2287            
2288        
2289      
2290    </div><div
2291      class="header__column header__column--center"
2292      data-testid="header-top-center"
2293    >
2294      
2295        
2296          
2297              
2298
2299
2300
2301
2302<a
2303  
2304  href="/"
2305  class="size-style spacing-style header-logo"
2306  style="
2307    --size-style-width: ;--size-style-height: ;
2308    --padding-block-start: 0px;--padding-block-end: 0px;
2309    --font-family: var(--font-body--family);
2310    --font-style: var(--font-body--style);
2311    --font-weight: 600;
2312  "
2313  
2314>
2315  
2316
2317  <span
2318    class="header-logo__image-container header-logo__image-container--original"
2319    data-testid="header-logo"
2320  >
2321    
2322  
2323  
2324  
2325  
2326
2327  
2328
2329  
2330
2331  
2332
2333  <img src="//artoffaceless.com/cdn/shop/files/aof-stamp-pink-black-clean-3000.png?height=36&amp;v=1790189977" alt="Art of FACELESS - Home" width="36" height="36" class="header-logo__image" srcset="//artoffaceless.com/cdn/shop/files/aof-stamp-pink-black-clean-3000.png?height=36&amp;v=1790189977 1x, //artoffaceless.com/cdn/shop/files/aof-stamp-pink-black-clean-3000.png?height=72&amp;v=1790189977 2x, //artoffaceless.com/cdn/shop/files/aof-stamp-pink-black-clean-3000.png?height=108&amp;v=1790189977 3x" style="--header-logo-image-width: 36px;--header-logo-image-width-mobile: 28px; --header-logo-image-height: 36px; --header-logo-image-height-mobile: 28px;">
2334
2335
2336  </span>
2337
2338  
2339</a>
2340
2341
2342
2343
2344
2345            
2346        
2347      
2348    </div><div
2349      class="header__column header__column--right"
2350      data-testid="header-top-right"
2351    >
2352      
2353        
2354          
2355              
2356  
2357  
2358
2359            
2360        
2361      
2362        
2363          
2364              
2365  <search-button
2366    class="search-action search-action--hidden-on-drawer"
2367  >
2368    <button
2369      on:click="#search-modal/showDialog"
2370      class="button-unstyled header-actions__action"
2371      aria-label="Search"
2372      aria-haspopup="dialog"
2373    >
2374      <span class="hidden">
2375        Search
2376      </span>
2377
2378      <span class="svg-wrapper ">
2379        <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>
2380
2381      </span>
2382    </button>
2383  </search-button>
2384
2385
2386
2387
2388            
2389        
2390      
2391        
2392          
2393              
2394
2395<script
2396  type="module"
2397  src="//artoffaceless.com/cdn/shop/t/8/assets/cart-icon.js?v=109428858171217037751787751266"
2398  fetchpriority="low"
2399></script>
2399
2400
2401
2402
2403
2404
2405<header-actions
2406  
2407>
2408  
2409    
2410    <div
2411      class="account-button header-actions__action color-custom-popover"
2412    >
2413      <shopify-store store-domain="https://artoffaceless.com" country="GB" language="en"></shopify-store>
2414<shopify-account
2415        menu="customer-account-main-menu"
2416        
2417      >
2418        
2419          <span
2420            slot="signed-out-avatar"
2421            class="account-button__text header-actions__text-style hidden"
2422          >
2423            Account
2424          </span>
2425
2426          <span
2427            slot="signed-out-avatar"
2428            class=""
2429            aria-hidden="true"
2430          >
2431            
2432  <svg
2433    xmlns="http://www.w3.org/2000/svg"
2434    width="15"
2435    height="17"
2436    viewBox="0 0 15 17"
2437    fill="none"
2438    slot="signed-out-avatar"
2439    class="account-button__icon"
2440  >
2441    <path
2442      stroke="currentColor"
2443      stroke-linejoin="round"
2444      stroke-width="var(--icon-stroke-width)"
2445      d="M10.375 3.813a3.063 3.063 0 1 1-6.125 0 3.063 3.063 0 0 1 6.125 0ZM7.313 9.5c-3.667 0-6.24 2.691-6.563 6.125h13.125C13.552 12.191 10.979 9.5 7.312 9.5Z"
2446    />
2447  </svg>
2448
2449          </span>
2450        
2451      </shopify-account>
2452    </div>
2453  
2454
2455  
2456    <button
2457      class="header-actions__action button-unstyled"
2458      on:click="#cart-drawer/toggle"
2459      aria-haspopup="dialog"
2460      aria-expanded="false"
2461      aria-controls="cart-drawer"
2462      aria-label="Cart"
2463      aria-describedby="cart-bubble-text"
2464      data-testid="cart-drawer-trigger"
2465    >
2466      
2467  <cart-icon
2468    class="header-actions__cart-icon"
2469    data-testid="cart-icon"
2470  >
2471    <span class="hidden">
2472      Cart
2473    </span>
2474
2475    <span
2476      class="svg-wrapper "
2477      aria-hidden="true"
2478    >
2479      <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="M3.392 6.875h13.216v8.016c0 .567-.224 1.112-.624 1.513-.4.402-.941.627-1.506.627H5.522a2.13 2.13 0 0 1-1.506-.627 2.15 2.15 0 0 1-.624-1.513zM8.818 2.969h2.333c.618 0 1.211.247 1.649.686a2.35 2.35 0 0 1 .683 1.658v1.562H6.486V5.313c0-.622.246-1.218.683-1.658a2.33 2.33 0 0 1 1.65-.686"/></svg>
2480
2481    </span>
2482
2483    
2484
2485<div
2486  ref="cartBubble"
2487  class="cart-bubble visually-hidden"
2488  style="--cart-bubble-background-fallback: #000000; --cart-bubble-text-fallback: #ffffff;"
2489  
2490  
2491    data-maintain-ratio
2492  
2493>
2494  <span class="cart-bubble__background"></span>
2495  <span
2496    ref="cartBubbleText"
2497    id="cart-bubble-text"
2498    class="cart-bubble__text"
2499  >
2500    <span
2501      class="cart-bubble__text-count hidden"
2502      ref="cartBubbleCount"
2503      aria-hidden="true"
2504      data-testid="cart-bubble"
2505    >
25060</span>
2507  </span>
2508</div>
2509
2510
2511
2512  </cart-icon>
2513
2514    </button>
2515  
2516
2517  <span
2518    ref="liveRegion"
2519    class="visually-hidden"
2520    role="status"
2521    data-testid="cart-count-live-region"
2522  ></span>
2523</header-actions>
2524
2525<script
2526  type="module"
2527  src="//artoffaceless.com/cdn/shop/t/8/assets/header-actions.js?v=157135685635924702181787751266"
2528  fetchpriority="low"
2529></script>
2529
2530
2531
2532
2533          
2534        
2535      
2536    </div>
2537        </div>
2538      </div>
2539    
2540  
2541    
2542
2543    
2544
2545    
2546    
2547  
2548
2549  
2550    <div class="header__row header__navigation-bar-row">
2551      
2552
2553
2554
2555    
2556  
2557
2558<style data-shopify>
2559  .header__underlay {
2560    --color-submenu: rgb(255 255 255);
2561  }
2562</style>
2563
2564
2565
2566
2567    </div>
2568  
2569</header-component>
2570
2571<script
2572  src="//artoffaceless.com/cdn/shop/t/8/assets/header.js?v=183210491532312943441787751266"
2573  type="module"
2574></script>
2574
2575
2576
2577
2578
2579  
2579<script type="module">
2580    import { hydrate } from '@theme/section-hydration';
2581    const url = new URL(window.location.href);
2582    url.searchParams.delete('page');
2583    hydrate('sections--30935194534229__header_section', url);
2584  </script>
2584
2585
2586
2587
2588</header>
2589<!-- END sections: header-group -->
2590      </div>
2591
2592      
2592<script>
2593        /**
2594         * Sets `--header-height` and `--header-group-height` to measured values before first paint.
2595         *
2596         * A few CSS rules position content relative to the header at first paint — a hero sized to
2597         * the remaining viewport, a transparent header's negative margin. Without a measured value
2598         * those rules use the `60px` fallback from `sections/header.liquid`, and the content visibly
2599         * jumps once `header.js` corrects the values after load.
2600         *
2601         * Measuring forces layout mid-parse, so it only runs where a consuming rule exists.
2602         * Callers opt in: the transparent-header branch below, or `snippets/measure-header-heights.liquid`,
2603         * which any new first-paint consumer must render too.
2604         *
2605         * Measures once per page; after load, header.js's ResizeObservers keep the values fresh.
2606         * The group-height walk mimics calculateHeaderGroupHeight() in utilities.js — keep them
2607         * in sync.
2608         */
2609        window.measureHeaderHeights = (function () {
2610          let measured = false;
2611
2612          return function measureHeaderHeights() {
2613            if (measured) return;
2614
2615            const header = document.querySelector('#header-component');
2616            const headerGroup = document.querySelector('#header-group');
2617
2618            if (!header || !headerGroup) return;
2619            measured = true;
2620
2621            const headerHeight = header.offsetHeight;
2622
2623            let headerGroupHeight = 0;
2624            for (const element of headerGroup.children) {
2625              if (element instanceof HTMLElement) headerGroupHeight += element.offsetHeight;
2626            }
2627
2628            /**
2629             * A transparent header is absolutely positioned, so the loop above counts its section
2630             * wrapper as 0px. When a section follows it in the group, header.liquid pushes that
2631             * section down by the header's height using a margin, which offsetHeight also
2632             * excludes — so the header's height has to be added back manually.
2633             */
2634            if (header.hasAttribute('transparent') && header.parentElement?.nextElementSibling) {
2635              headerGroupHeight += headerHeight;
2636            }
2637
2638            document.body.style.setProperty('--header-height', `${headerHeight}px`);
2639            document.body.style.setProperty('--header-group-height', `${headerGroupHeight}px`);
2640          };
2641        })();
2642
2643        /**
2644         * Transparent-header rules consume the measured heights at first paint on every
2645         * template, so the transparent case opts in globally here instead of per-section.
2646         */
2647        if (document.querySelector('#header-component')?.hasAttribute('transparent')) {
2648          measureHeaderHeights();
2649        }
2650
2651        /**
2652         * Sets `--top-row-height`, consumed by the header underlays and submenus. Deferred to a
2653         * rAF so the `offsetHeight` read doesn't force layout mid-parse, and scoped to the
2654         * header, where all consumers live, so the write only invalidates the header subtree.
2655         * Mimics the `--top-row-height` write in updateHeaderHeights() in utilities.js
2656         */
2657        (function setTopRowHeight() {
2658          const header = document.querySelector('#header-component');
2659          const headerTopRow = header?.querySelector('.header__row--top');
2660          if (!headerTopRow) return;
2661
2662          window.requestAnimationFrame(function () {
2663            header.style.setProperty('--top-row-height', `${headerTopRow.offsetHeight}px`);
2664          });
2665        })();
2666
2667        /**
2668         * Sets `--transparent-header-offset-boolean` when the first section must offset itself
2669         * under a transparent header. The non-offset case relies on the `0` default declared in
2670         * sections/header.liquid — unlike updateTransparentHeaderOffset() in utilities.js, which
2671         * re-runs on editor changes and must write '0' to reset a previously written '1'.
2672         */
2673        (function updateTransparentHeaderOffset() {
2674          const header = document.querySelector('#header-component');
2675          const headerSection = document.querySelector('#header-group .header-section');
2676          if (!headerSection || !header?.hasAttribute('transparent')) return;
2677
2678          const hasImmediateSection = headerSection.nextElementSibling?.classList.contains('shopify-section');
2679          if (!hasImmediateSection) {
2680            document.body.style.setProperty('--transparent-header-offset-boolean', '1');
2681          }
2682        })();
2683
2684        /**
2685         * Sets the initial menu style (inline menu vs. drawer) on the header component.
2686         * Mimics setHeaderMenuStyle() in utilities.js
2687         */
2688        (function setHeaderMenuStyle() {
2689          const headerComponent = document.querySelector('#header-component');
2690          if (headerComponent) {
2691            const isTouchDevice = 'ontouchstart' in window && navigator.maxTouchPoints > 0;
2692            const overflowList = headerComponent.querySelector('overflow-list');
2693            const hasReachedMinimum = overflowList && overflowList.hasAttribute('minimum-reached');
2694            headerComponent.dataset.menuStyle = isTouchDevice || hasReachedMinimum ? 'drawer' : 'menu';
2695          }
2696        })();
2697      </script>
2697
2698
2699      <main
2700        id="MainContent"
2701        class="content-for-layout"
2702        role="main"
2703        data-page-transition-enabled="true"
2704        data-product-transition="true"
2705        data-template="product"
2706      >
2707        <div id="shopify-section-template--30935200563541__main" class="shopify-section">
2708
2709<script type="application/ld+json">
2710  {"@context":"http:\/\/schema.org\/","@id":"\/products\/the-hollow-circuit-book-1#product","@type":"Product","brand":{"@type":"Brand","name":"Art of FACELESS"},"category":"Print Books","description":"THE HOLLOW CIRCUIT — BIOPUNK NOVEL \u0026amp; TRANSMEDIA UNIVERSE\nThis is not a seamless story.\nIn a city where memory is power and history is edited into sterile perfection, the poet Veylon is pursued by echoes of himself across collapsing timelines. Beneath the surface, the Hollow Circuit breathes.\nThe text glitches. It contradicts. It loops. Some of that is intentional. Some of it is the nature of the material. By the time you finish, you will not be entirely certain which is which.\nThis is the first node in a wider transmission. The story has already begun.\nPart of the Art of FACELESS transmedia ecosystem. This is a work of adult speculative fiction containing complex themes, experimental structure, body horror, and existential recursion. Recommended for readers 18+.","image":"https:\/\/artoffaceless.com\/cdn\/shop\/files\/hollow_circuit_maroon_palette.png?v=1789261802\u0026width=1920","name":"The Hollow Circuit [Book 1] ePUB Edition","offers":{"@id":"\/products\/the-hollow-circuit-book-1?variant=54555719467349#offer","@type":"Offer","availability":"http:\/\/schema.org\/InStock","price":"5.00","priceCurrency":"GBP","url":"https:\/\/artoffaceless.com\/products\/the-hollow-circuit-book-1?variant=54555719467349"},"url":"https:\/\/artoffaceless.com\/products\/the-hollow-circuit-book-1"}
2711</script>
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725  
2726
2727
2728  
2729
2730  <sticky-add-to-cart
2731    class="sticky-add-to-cart"
2732    data-variant-available="true"
2733    data-product-id="11491165929813"
2734    data-current-variant-id="54555719467349"
2735    data-initial-quantity="1"
2736    data-default-variant-title="Default Title"
2737  >
2738    <div
2739      class="sticky-add-to-cart__bar color-custom-popover"
2740      data-stuck="false"
2741      ref="stickyBar"
2742      role="region"
2743      aria-label="Quick add to cart bar"
2744    >
2745      
2746      
2747        <div
2748          class="sticky-add-to-cart__image"
2749        >
2750          
2751          <img src="//artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=120" alt="The Hollow Circuit [Book 1] ePUB Edition" width="120" height="180" loading="lazy" class="sticky-add-to-cart__image-img" data-testid="sticky-product-image" ref="productImage">
2752        </div>
2753      
2754
2755      
2756      <div
2757        class="sticky-add-to-cart__info"
2758        data-has-image="true"
2759        data-singleton="true"
2760        data-single-option="false"
2761      >
2762        <p
2763          class="sticky-add-to-cart__title"
2764          data-testid="sticky-product-title"
2765        >
2766          The Hollow Circuit [Book 1] ePUB Edition
2767        </p>
2768        <div
2769          class="sticky-add-to-cart__variant"
2770          data-testid="sticky-variant-title"
2771          
2772            style="display: none;"
2773          
2774        >
2775          
2776        </div>
2777      </div>
2778
2779      <div
2780        class="sticky-add-to-cart__price"
2781        data-testid="sticky-price-display"
2782      >
2783        
2784
2785<div ref="priceContainer">
2786  
2787    
2788    
2789      <span class="price">£5.00</span>
2790    
2791  
2792</div>
2793      </div>
2794
2795      <button
2796        type="button"
2797        class="sticky-add-to-cart__button add-to-cart-button button"
2798        ref="addToCartButton"
2799        on:click="/handleAddToCartClick"
2800        
2801      >
2802        <span
2803          class="add-to-cart-text"
2804        >
2805          
2806            <span class="svg-wrapper"><svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="M16.608 9.421V6.906H3.392v8.016c0 .567.224 1.112.624 1.513.4.402.941.627 1.506.627H8.63M8.818 3h2.333c.618 0 1.212.247 1.649.686a2.35 2.35 0 0 1 .683 1.658v1.562H6.486V5.344c0-.622.246-1.218.683-1.658A2.33 2.33 0 0 1 8.82 3"/><path stroke="currentColor" stroke-linecap="round" stroke-width="var(--icon-stroke-width)" d="M14.608 12.563v5m2.5-2.5h-5"/></svg>
2807</span>
2808          
2809          <span class="add-to-cart-text__content">
2810            <span>Add to cart</span>
2811            <span
2812              ref="quantityDisplay"
2813              
2814                style="display: none;"
2815              
2816            > (<span ref="quantityNumber">1</span>)</span>
2817          </span>
2818        </span>
2819        <span class="add-to-cart__added">
2820          <span class="svg-wrapper add-to-cart__added-icon"><svg aria-hidden="true" class="checkmark-burst" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2821  <g class="check">
2822    <circle class="ring" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2823    <path class="tick" d="M9 12.75L11.25 15L15 9.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2824  </g>
2825  <g class="burst">
2826    <g style="--index: 0;">
2827      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
2828    </g>
2829    <g style="--index: 1;">
2830      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
2831    </g>
2832    <g style="--index: 2;">
2833      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
2834    </g>
2835    <g style="--index: 3;">
2836      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
2837    </g>
2838    <g style="--index: 4;">
2839      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
2840    </g>
2841    <g style="--index: 5;">
2842      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
2843    </g>
2844    <g style="--index: 6;">
2845      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
2846    </g>
2847    <g style="--index: 7;">
2848      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
2849    </g>
2850  </g>
2851</svg>
2852</span>
2853        </span>
2854      </button>
2855    </div>
2856  </sticky-add-to-cart>
2857
2858  
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871  <style data-shopify>
2872    .color-custom-template--30935200563541__main,
2873    .color-custom-template--30935200563541__main .text-block {
2874      /* Background */
2875      --color-background: #ffffff;
2876      --color-background-rgb: 255 255 255;
2877
2878      /* Opacity values adjusted for background brightness */
2879      
2880--opacity-5-15: 0.05; --opacity-10-25: 0.1; --opacity-35-55: 0.35; --opacity-40-60:
28810.4; --opacity-30-60: 0.3; --opacity-60: 0.6;
2882
2883
2884      
2885        /* Foreground / text — explicit or smart-contrasted */
2886        --color: #000000;
2887        --color-rgb: 0 0 0;
2888        --color-foreground: #000000;
2889        --color-foreground-rgb: 0 0 0;
2890        --color-foreground-muted: rgb(0 0 0 / var(--opacity-muted-text));
2891        --color-foreground-subdued: rgb(0 0 0 / var(--opacity-subdued-text));
2892        --color-border: var(--palette-darkest);
2893        --color-border-rgb: var(--palette-darkest-rgb);
2894      
2895    }
2896
2897    
2898      .color-custom-template--30935200563541__main {
2899        /* Form-related tokens stay on .color-custom only — .text-block is a prose
2900           container (text/announcement/inline-text/blog-post-description/
2901           collection-link/price/sku) and never holds form inputs. */
2902        --input-disabled-background-color: rgb(0 0 0 / var(--opacity-10));
2903        --input-disabled-border-color: rgb(0 0 0 / var(--opacity-5));
2904        --input-disabled-text-color: rgb(0 0 0 / var(--opacity-50));
2905        --checkbox-border: 1px solid rgb(0 0 0 / var(--opacity-35-55));
2906      }
2907    
2908
2909    .color-custom-template--30935200563541__main {
2910      color: var(--color, var(--color-foreground));
2911      background-color: var(--color-background);
2912    }
2913  </style>
2914
2915
2916
2917<div
2918  class="section-background color-custom-template--30935200563541__main"
2919></div>
2920<div
2921  class="product-information section section--full-width spacing-style color-custom-template--30935200563541__main relative"
2922  style="--padding-block-start: 0px;--padding-block-end: 0px; --gap: 0px;"
2923  data-testid="product-information"
2924>
2925  
2926    
2927    <a
2928  class="skip-to-content-link button-secondary"
2929  href="#ProductInformation-template--30935200563541__main"
2930>
2931  Skip to product information
2932</a>
2933
2934
2935
2936  
2937  <product-component
2938    class="product-information__grid product-information--media-left product-information__grid--half product-information__grid--limit-details"
2939    data-product-grid-content
2940    
2941    view-event-payload="{&quot;product&quot;:{&quot;id&quot;:11491165929813,&quot;title&quot;:&quot;The Hollow Circuit [Book 1] ePUB Edition&quot;,&quot;handle&quot;:&quot;the-hollow-circuit-book-1&quot;,&quot;selectedVariant&quot;:null},&quot;context&quot;:null,&quot;selectedOptions&quot;:[]}"
2942    
2943  >
2944    
2945    
2946
2947    
2948      
2949        
2950      <div
2951        class="product-information__media"
2952        data-testid="product-information-media"
2953      >
2954        
2955
2956
2957<script
2958    src="//artoffaceless.com/cdn/shop/t/8/assets/drag-zoom-wrapper.js?v=49654226587051563631787751266"
2959    type="module"
2960  ></script>
2960
2961  
2962
2963
2964  
2964<script>
2965    if (window.matchMedia('(min-width: 750px)').matches) {
2966      window.measureHeaderHeights?.();
2967    }
2968  </script>
2968
2969
2970
2971<style data-shopify>
2972  
2973
2974  
2975    .media-fit-contain {
2976      --product-media-fit: contain;
2977    }
2978
2979    /* Media fit for all media elements */
2980    .media-fit-contain :is(img, video, iframe, .deferred-media__poster-image) {
2981      object-fit: contain;
2982      width: 100%;
2983      height: 100%;
2984    }
2985
2986    /* 3D Models (no object-fit support, just sizing) */
2987    .media-fit-contain model-viewer {
2988      width: 100%;
2989      height: 100%;
2990    }
2991  
2992
2993  
2994
2995  /* Add background color so carousel arrows' mix-blend-mode works correctly even on transparent areas. */
2996  
2997    .media-fit-contain :is(img, .deferred-media__poster-image) {
2998      background-color: var(--color-background);
2999    }
3000  
3001
3002  
3003  
3004  
3005    
3006    ::view-transition-old(gallery-item-open),
3007    ::view-transition-new(gallery-item-open),
3008    ::view-transition-old(gallery-item-close),
3009    ::view-transition-new(gallery-item-close) {
3010      height: auto;
3011      width: 100%;
3012      object-fit: contain;
3013      top: 50%;
3014      transform: translateY(-50%);
3015    }
3016  
3017  
3018
3019  :root { --gallery-media-border-radius: 0px; }
3020</style>
3021
3022
3023  <media-gallery
3024    class="
3025      spacing-style
3026      sticky-content
3027      
3028        media-gallery--one-column
3029        
3030      
3031      media-gallery--grid
3032      
3033      
3034        media-gallery--extend
3035      
3036    "
3037    style="--padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px; --thumbnail-width: 57px; --media-radius: 0px;--image-gap: 0px;"
3038    data-presentation="grid"
3039    
3040  >
3041    
3042
3043    
3044
3045    
3046
3047    <slideshow-component
3048  
3049    ref="slideshow"
3050  
3051  
3052    class="product-media-gallery__slideshow--single-media slideshow--single-media"
3053  
3054  style="--slideshow-timeline: --slide-0;--slide-min-height: auto;--slide-min-height-desktop: auto;"
3055  
3056  initial-slide="0"
3057  
3058  
3059    infinite
3060  
3061
3062  
3063>
3064  
3065  <slideshow-container ref="slideshowContainer">
3066    
3067    
3068    <slideshow-slides
3069      tabindex="-1"
3070      ref="scroller"
3071      
3072    >
3073      
3074      
3075        
3076        
3077        
3078        
3079
3080        <slideshow-slide
3081  ref="slides[]"
3082  aria-hidden="false"
3083  style="--slideshow-timeline: --slide-0; --product-media-fit: contain; --grid-template-rows: 50dvh 1fr; --grid-template-rows-desktop: 70dvh 1fr;"
3084  
3085    class="product-media-container constrain-height media-fit-contain product-media-container--image product-media-container--tallest"
3086  
3087  
3088  
3089    style="--media-preview-ratio: 0.6666666666666666;"
3090  
3091  
3092  
3093  
3094  
3095>
3096  
3097
3098
3099
3100<div
3101  class="product-media"
3102  style="--ratio: 0.6666666666666666"
3103  data-media-id="58602902585685"
3104>
3105  
3106  <img src="//artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=3840" alt="The Hollow Circuit [Book 1] ePUB Edition" srcset="//artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=240 240w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=352 352w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=832 832w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=1200 1200w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=1600 1600w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=1920 1920w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=2560 2560w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=3840 3840w" width="3840" height="5760" sizes="(min-width: 750px) calc(50vw - 0px), 100vw" class="product-media__image" data_max_resolution="//artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=3840" fetchpriority="high" style="--focal-point: 50.0% 50.0%;">
3107
3108  
3109
3110  
3111</div>
3112
3113
3114
3115
3116        
3117</slideshow-slide>
3118
3119
3120
3121
3122      
3123    
3124    </slideshow-slides>
3125  </slideshow-container>
3126  
3127</slideshow-component>
3128
3129
3130
3131
3132
3133    
3134      <ul
3135        class="media-gallery__grid list-unstyled"
3136        data-testid="media-gallery-grid"
3137      >
3138        
3139          <li
3140            ref="media[]"
3141            class="product-media-container constrain-height media-fit-contain product-media-container--image "
3142            style=" --media-preview-ratio: 0.6666666666666666; --media-radius: 0px;"
3143            
3144              data-view-transition-type="product-image-transition"
3145            
3146            
3147              data-focal-point="50.0% 50.0%"
3148            
3149          >
3150
3151
3152<div
3153  class="product-media"
3154  style="--ratio: 0.6666666666666666"
3155  data-media-id="58602902585685"
3156>
3157  
3158  <img src="//artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=3840" alt="The Hollow Circuit [Book 1] ePUB Edition" srcset="//artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=240 240w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=352 352w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=832 832w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=1200 1200w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=1600 1600w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=1920 1920w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=2560 2560w, //artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=3840 3840w" width="3840" height="5760" sizes="(min-width: 750px) calc(50vw - 0px), 100vw" class="product-media__image" data_max_resolution="//artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&amp;width=3840" fetchpriority="high" style="--focal-point: 50.0% 50.0%;">
3159
3160  
3161
3162  
3163</div>
3164
3165
3166
3167
3168          </li>
3169        
3170      </ul>
3171    
3172</media-gallery>
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185      </div>
3186    
3187      
3188    
3189      
3190        
3191  
3192<div
3193  id="ProductInformation-template--30935200563541__main"
3194  class="
3195    product-details
3196     sticky-content--desktop
3197    "
3198  style="--details-position: flex-start;"
3199  data-testid="product-information-details"
3200  
3201    data-view-transition-type="product-details"
3202  
3203>
3204  
3205
3206  
3207
3208
3209
3210
3211
3212
3213
3214<div
3215  class="
3216    group-block
3217    group-block--height-fit
3218    group-block--width-fill
3219    border-style
3220    spacing-style
3221    size-style
3222    
3223    
3224  "
3225  style="
3226    
3227--border-width: 1px; --border-style: none; --border-color:
3228rgb(var(--color-border-rgb) / 1.0); --border-radius: 0px; 
3229
3230    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
3231    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
3232    
3233  "
3234  
3235  data-testid="group-block"
3236><div class="group-block__media-wrapper">
3237    
3238
3239
3240
3241
3242
3243
3244    
3245  </div>
3246
3247  <div
3248    class="
3249      group-block-content
3250      
3251      layout-panel-flex
3252      layout-panel-flex--column
3253      
3254    "
3255    style="--flex-direction: column; --flex-wrap: nowrap; --flex-wrap-mobile: wrap;
3256
3257--gap: 12px;
3258
3259--horizontal-alignment: ; --vertical-alignment: ;
3260--vertical-alignment-mobile: ;
3261"
3262  >
3263    <div class="view-product-title">
3264      <a
3265        href="/products/the-hollow-circuit-book-1?variant=54555719467349"
3266      >The Hollow Circuit [Book 1] ePUB Edition
3267      </a>
3268    </div>
3269    
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281  <div class=" spacing-style text-block text-block--AaEJob3hOVGRuVTNEe__text_9WaLn7 h3    text-block--align-center  "  style="    --padding-block-start: 50px; --padding-block-end:0px; --padding-inline-start:0px; --padding-inline-end:0px;            --width: 100%;    --max-width: var(--max-width--body-normal);          --text-align: center;          ">
3282    <h1>The Hollow Circuit [Book 1] ePUB Edition</h1>
3283  </div>
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296<product-price
3297  class="text-block text-block--align-center text-center h5 spacing-style"
3298  data-block-id="ALzlLOVI2ZTNZTWY2N__price_a7krng"
3299  data-product-id="11491165929813"
3300  style="
3301    
3302
3303    --padding-block-start: 0px;--padding-block-end: max(20px, calc(var(--spacing-scale) * 50px));--padding-inline-start: 0px;--padding-inline-end: 0px;
3304    
3305    --width: 100%;
3306  "
3307  
3308>
3309  
3310
3311<div ref="priceContainer">
3312  
3313    
3314    
3315      <span class="price">£5.00</span>
3316    
3317  
3318</div>
3319
3320  
3321    <div class="tax-note">Taxes included.
3322</div>
3323  
3324<div class="installments"><form method="post" action="/cart/add" id="product-form-installment-ALzlLOVI2ZTNZTWY2N__price_a7krng" accept-charset="UTF-8" class="payment-terms" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input
3325          type="hidden"
3326          name="id"
3327          value="54555719467349"
3328        >
3329        <shopify-payment-terms variant-id="54555719467349" shopify-meta="{&quot;type&quot;:&quot;product&quot;,&quot;currency_code&quot;:&quot;GBP&quot;,&quot;country_code&quot;:&quot;GB&quot;,&quot;variants&quot;:[{&quot;id&quot;:54555719467349,&quot;price_per_term&quot;:&quot;£1.66&quot;,&quot;price_per_term_amount&quot;:1.66,&quot;full_price&quot;:&quot;£5.00&quot;,&quot;full_price_amount&quot;:5.0,&quot;eligible&quot;:false,&quot;available&quot;:true,&quot;number_of_payment_terms&quot;:3}],&quot;min_price&quot;:&quot;£50.00&quot;,&quot;min_price_amount&quot;:50.0,&quot;max_price&quot;:&quot;£30,000.00&quot;,&quot;max_price_amount&quot;:30000.0,&quot;financing_plans&quot;:[{&quot;min_price&quot;:&quot;£50.00&quot;,&quot;max_price&quot;:&quot;£149.99&quot;,&quot;terms&quot;:[{&quot;apr&quot;:0,&quot;loan_type&quot;:&quot;split_pay&quot;,&quot;installments_count&quot;:2}],&quot;min_price_amount&quot;:50.0,&quot;max_price_amount&quot;:149.99},{&quot;min_price&quot;:&quot;£150.00&quot;,&quot;max_price&quot;:&quot;£999.99&quot;,&quot;terms&quot;:[{&quot;apr&quot;:0,&quot;loan_type&quot;:&quot;split_pay&quot;,&quot;installments_count&quot;:2},{&quot;apr&quot;:15,&quot;loan_type&quot;:&quot;interest&quot;,&quot;installments_count&quot;:3},{&quot;apr&quot;:15,&quot;loan_type&quot;:&quot;interest&quot;,&quot;installments_count&quot;:6},{&quot;apr&quot;:15,&quot;loan_type&quot;:&quot;interest&quot;,&quot;installments_count&quot;:12}],&quot;min_price_amount&quot;:150.0,&quot;max_price_amount&quot;:999.99},{&quot;min_price&quot;:&quot;£1,000.00&quot;,&quot;max_price&quot;:&quot;£30,000.00&quot;,&quot;terms&quot;:[{&quot;apr&quot;:15,&quot;loan_type&quot;:&quot;interest&quot;,&quot;installments_count&quot;:3},{&quot;apr&quot;:15,&quot;loan_type&quot;:&quot;interest&quot;,&quot;installments_count&quot;:6},{&quot;apr&quot;:15,&quot;loan_type&quot;:&quot;interest&quot;,&quot;installments_count&quot;:12}],&quot;min_price_amount&quot;:1000.0,&quot;max_price_amount&quot;:30000.0}],&quot;installments_buyer_prequalification_enabled&quot;:false,&quot;seller_id&quot;:null}"></shopify-payment-terms>
3330<input type="hidden" name="product-id" value="11491165929813" /><input type="hidden" name="section-id" value="template--30935200563541__main" /></form></div></product-price>
3331
3332
3333
3334
3335
3336
3337
3338<div
3339  class="divider divider-AQVQ1ai9tWU50S053a__divider_HrJgFt spacing-style"
3340  style="
3341    --divider-justify-content: center;
3342    
3343    --padding-block-start: 12px;--padding-block-end: 12px;
3344  "
3345  
3346
3347>
3348  <span
3349    class="divider__line"
3350    style="
3351      --divider-border-thickness: 1px;
3352      
3353        --divider-border-rounded: 0;
3354      
3355      --divider-flex-basis: 100%;
3356    "
3357  ></span>
3358</div>
3359
3360
3361
3362
3363
3364
3365
3366
3367  
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388<span
3389  class="buy-buttons-block buy-buttons-block--ARG52cFJMcHFOeVdWU__buy_buttons_eYQEYi"
3390  
3391  
3392><product-form-component
3393      data-section-id="template--30935200563541__main"
3394      data-product-id="11491165929813"
3395      data-product-url="/products/the-hollow-circuit-book-1"
3396      on:submit="/handleSubmit"
3397      data-quantity-default="1"
3398      data-quantity-error-max="This item has a maximum of {{ maximum }}"
3399    >
3400      <div
3401        class="visually-hidden"
3402        aria-live="assertive"
3403        role="status"
3404        aria-atomic="true"
3405        ref="liveRegion"
3406      ></div><form method="post" action="/cart/add" id="BuyButtons-ProductForm-template--30935200563541__main" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input
3407          type="hidden"
3408          name="id"
3409          ref="variantId"
3410          value="54555719467349"
3411        ><div
3412          class="product-form-buttons spacing-style"
3413          style="--padding-block-start: 0px;--padding-block-end: max(20px, calc(var(--spacing-scale) * 24px));--padding-inline-start: 0px;--padding-inline-end: 0px;"
3414          ref="productFormButtons"
3415        ><span
3416              class="product-form-text__error hidden"
3417              ref="addToCartTextError"
3418            >
3419              <span class="svg-wrapper"><svg aria-hidden="true" class="icon icon-error" viewBox="0 0 13 13">
3420  <circle cx="6.5" cy="6.5" r="5.5" stroke="#fff" stroke-width="var(--icon-stroke-width)"/>
3421  <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width=".7"/>
3422  <path fill="#fff" d="m5.874 3.528.1 4.044h1.053l.1-4.044zm.627 6.133c.38 0 .68-.288.68-.656s-.3-.656-.68-.656-.681.288-.681.656.3.656.68.656"/>
3423  <path fill="#fff" stroke="#EB001B" stroke-width=".7" d="M5.874 3.178h-.359l.01.359.1 4.044.008.341h1.736l.008-.341.1-4.044.01-.359H5.873Zm.627 6.833c.56 0 1.03-.432 1.03-1.006s-.47-1.006-1.03-1.006-1.031.432-1.031 1.006.47 1.006 1.03 1.006Z"/>
3424</svg>
3425</span>
3426            </span>
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440<span
3441  
3442  style="--add-to-cart-font-case: ;"
3443>
3444  <add-to-cart-component
3445  ref="addToCartButtonContainer"
3446  data-product-variant-media="//artoffaceless.com/cdn/shop/files/hollow_circuit_maroon_palette.png?v=1789261802&width=100"
3447  data-add-to-cart-animation="true"
3448>
3449  <button
3450    
3451      id="BuyButtons-ProductSubmitButton-AM0ZGcWh1K0xGRU1PV__add-to-cart"
3452    
3453    type="submit"
3454    name="add"
3455    ref="addToCartButton"
3456    on:click="/handleClick"
3457    class="button add-to-cart-button button button--AM0ZGcWh1K0xGRU1PV__add-to-cart"
3458    
3459      data-testid="standalone-add-to-cart"
3460    
3461    
3462  >
3463    
3464      <span
3465        aria-hidden="true"
3466        class="svg-wrapper add-to-cart-icon"
3467      ><svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="M16.608 9.421V6.906H3.392v8.016c0 .567.224 1.112.624 1.513.4.402.941.627 1.506.627H8.63M8.818 3h2.333c.618 0 1.212.247 1.649.686a2.35 2.35 0 0 1 .683 1.658v1.562H6.486V5.344c0-.622.246-1.218.683-1.658A2.33 2.33 0 0 1 8.82 3"/><path stroke="currentColor" stroke-linecap="round" stroke-width="var(--icon-stroke-width)" d="M14.608 12.563v5m2.5-2.5h-5"/></svg>
3468</span>
3469    
3470Add to cart
3471    <span class="add-to-cart__added">
3472      <span class="svg-wrapper add-to-cart__added-icon"><svg aria-hidden="true" class="checkmark-burst" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
3473  <g class="check">
3474    <circle class="ring" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3475    <path class="tick" d="M9 12.75L11.25 15L15 9.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3476  </g>
3477  <g class="burst">
3478    <g style="--index: 0;">
3479      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
3480    </g>
3481    <g style="--index: 1;">
3482      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
3483    </g>
3484    <g style="--index: 2;">
3485      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
3486    </g>
3487    <g style="--index: 3;">
3488      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
3489    </g>
3490    <g style="--index: 4;">
3491      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
3492    </g>
3493    <g style="--index: 5;">
3494      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
3495    </g>
3496    <g style="--index: 6;">
3497      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
3498    </g>
3499    <g style="--index: 7;">
3500      <line class="line" stroke-linecap="round" pathLength="1" x1="12" y1="8.5" x2="12" y2="15.5" stroke="currentColor"/>
3501    </g>
3502  </g>
3503</svg>
3504</span>
3505    </span>
3506  </button>
3507</add-to-cart-component>
3508
3509</span>
3510
3511
3512
3513
3514          
3515
3516
3517
3518
3519
3520  <div
3521    class="accelerated-checkout-block"
3522    ref="acceleratedCheckoutButtonContainer"
3523    
3524    
3525    
3526  >
3527    
3528  
3529    <div data-shopify="payment-button" class="shopify-payment-button"> <shopify-accelerated-checkout recommended="{&quot;supports_subs&quot;:true,&quot;supports_def_opts&quot;:false,&quot;name&quot;:&quot;shop_pay&quot;,&quot;wallet_params&quot;:{&quot;shopId&quot;:99124740437,&quot;merchantName&quot;:&quot;Art of FACELESS&quot;,&quot;personalized&quot;:true}}" fallback="{&quot;supports_subs&quot;:true,&quot;supports_def_opts&quot;:true,&quot;name&quot;:&quot;buy_it_now&quot;,&quot;wallet_params&quot;:{}}
3529" access-token="297f8b4b315cd8ff0f00d185adacfdfb" buyer-country="GB" buyer-locale="en" buyer-currency="GBP" variant-params="[{&quot;id&quot;:54555719467349,&quot;requiresShipping&quot;:false}]" shop-id="99124740437" enabled-flags="[&quot;1172c16a&quot;,&quot;a1d1f9a1&quot;,&quot;f5afabb3&quot;,&quot;370070f3&quot;]" > <div class="shopify-payment-button__button" role="button" disabled aria-hidden="true" style="background-color: transparent; border: none"> <div class="shopify-payment-button__skeleton">&nbsp;</div> </div> <div class="shopify-payment-button__more-options shopify-payment-button__skeleton" role="button" disabled aria-hidden="true">&nbsp;</div> </shopify-accelerated-checkout> </div>
3530  
3531
3532  </div>
3533
3534
3535
3536
3537
3538
3539
3540        </div><input type="hidden" name="product-id" value="11491165929813" /><input type="hidden" name="section-id" value="template--30935200563541__main" /></form></product-form-component></span>
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559<div
3560  class="accordion accordion--ATWVnaFh3SVJNNTZtY__accordion_NKWPiW accordion--caret border-style spacing-style accordion--dividers"
3561  style="
3562    --summary-font-family: var(--font-h6--family);
3563     --summary-font-style: var(--font-h6--style);
3564     --summary-font-weight: var(--font-h6--weight);
3565     --summary-font-size: var(--font-h6--size);
3566     --summary-font-line-height: var(--font-h6--line-height);
3567     --summary-font-case: var(--font-h6--case);
3568    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
3569    
3570--border-width: 1px; --border-style: none; --border-color:
3571rgb(var(--color-border-rgb) / 1.0); --border-radius: 0px; 
3572
3573    
3574  "
3575  
3576>
3577  
3578
3579
3580
3581
3582
3583
3584<accordion-custom
3585  
3586  
3587  
3588  
3589  
3590  
3591  
3592  
3593  
3594>
3595  
3596  <details
3597    class="details"
3598    data-testid="accordion-details"
3599    
3600    
3601  >
3602    <summary class="details__header">
3603      
3604      Description
3605      <span class="svg-wrapper icon-caret icon-animated"><svg aria-hidden="true" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
3606  <path d="M11 5.5L7 9.5L3 5.5" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
3607</svg>
3608</span>
3609      <span class="svg-wrapper icon-plus"><svg aria-hidden="true" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
3610  <path class="vertical" d="M2.75 7H11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/>
3611  <path class="horizontal" d="M7 2.75L7 11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/>
3612</svg>
3613</span>
3614    </summary>
3615
3616    <div class="details-content">
3617      
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629  <div class=" spacing-style text-block text-block--AeFdJNUNPcmVicStpZ__text_n7A9da custom    text-block--align-left custom-typography  custom-font-size  custom-color   "  style="    --padding-block-start: 12px; --padding-block-end:0px; --padding-inline-start:0px; --padding-inline-end:0px;    --font-size: var(--font-size--body-lg);      --font-weight: var(--font-secondary--weight);--font-family: var(--font-secondary--family);    --text-transform: none;    --text-wrap: pretty;          --line-height: var(--line-height--body-normal);        --letter-spacing: var(--letter-spacing--body-normal);        --width: 100%;    --max-width: var(--max-width--body-normal);          --text-align: left;          ">
3630    <h2>THE HOLLOW CIRCUIT — BIOPUNK NOVEL &amp; TRANSMEDIA UNIVERSE</h2>
3631<p><span>This is not a seamless story.</span></p>
3632<p><span>In a city where memory is power and history is edited into sterile perfection, the poet Veylon is pursued by echoes of himself across collapsing timelines. Beneath the surface, the Hollow Circuit breathes.</span></p>
3633<p><span>The text glitches. It contradicts. It loops. Some of that is intentional. Some of it is the nature of the material. By the time you finish, you will not be entirely certain which is which.</span></p>
3634<p><span>This is the first node in a wider transmission. The story has already begun.</span></p>
3635<p><span class="a-text-italic">Part of the Art of FACELESS transmedia ecosystem.</span><span> </span><span><br><br>This is a work of adult speculative fiction containing complex themes, experimental structure, body horror, and existential recursion. Recommended for readers 18+.</span></p>
3636  </div>
3637
3638
3639
3640
3641
3642
3643
3644    </div>
3645  </details>
3646
3647</accordion-custom>
3648
3649
3650
3651
3652
3653
3654</div>
3655
3656
3657
3658
3659
3660
3661  </div>
3662</div>
3663
3664
3665
3666</div>
3667
3668
3669
3670
3671
3672
3673      
3674    
3675  </product-component>
3676
3677  
3678  
3679
3680</div>
3681
3682
3683
3684
3685
3686
3687
3688</div><div id="shopify-section-template--30935200563541__product_recommendations_qnzPkn" class="shopify-section">
3689<script
3690  src="//artoffaceless.com/cdn/shop/t/8/assets/product-recommendations.js?v=127096830375957167321787751266"
3691  type="module"
3692  fetchpriority="low"
3693></script>
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717<product-recommendations
3718  id="product-recommendations-template--30935200563541__product_recommendations_qnzPkn"
3719  class="product-recommendations"
3720  data-url="/recommendations/products?limit=4"
3721  data-section-id="template--30935200563541__product_recommendations_qnzPkn"
3722  data-product-id="11491165929813"
3723  data-intent="related"
3724  data-testid="product-recommendations-section"
3725  data-recommendations-performed="false"
3726  data-hydration-key="product-recommendations-template--30935200563541__product_recommendations_qnzPkn"
3727  
3728>
3729  
3730
3731
3732
3733
3734  <style data-shopify>
3735    .color-custom-template--30935200563541__product_recommendations_qnzPkn,
3736    .color-custom-template--30935200563541__product_recommendations_qnzPkn .text-block {
3737      /* Background */
3738      --color-background: #ffffff;
3739      --color-background-rgb: 255 255 255;
3740
3741      /* Opacity values adjusted for background brightness */
3742      
3743--opacity-5-15: 0.05; --opacity-10-25: 0.1; --opacity-35-55: 0.35; --opacity-40-60:
37440.4; --opacity-30-60: 0.3; --opacity-60: 0.6;
3745
3746
3747      
3748        /* Foreground / text — explicit or smart-contrasted */
3749        --color: #000000;
3750        --color-rgb: 0 0 0;
3751        --color-foreground: #000000;
3752        --color-foreground-rgb: 0 0 0;
3753        --color-foreground-muted: rgb(0 0 0 / var(--opacity-muted-text));
3754        --color-foreground-subdued: rgb(0 0 0 / var(--opacity-subdued-text));
3755        --color-border: var(--palette-darkest);
3756        --color-border-rgb: var(--palette-darkest-rgb);
3757      
3758    }
3759
3760    
3761      .color-custom-template--30935200563541__product_recommendations_qnzPkn {
3762        /* Form-related tokens stay on .color-custom only — .text-block is a prose
3763           container (text/announcement/inline-text/blog-post-description/
3764           collection-link/price/sku) and never holds form inputs. */
3765        --input-disabled-background-color: rgb(0 0 0 / var(--opacity-10));
3766        --input-disabled-border-color: rgb(0 0 0 / var(--opacity-5));
3767        --input-disabled-text-color: rgb(0 0 0 / var(--opacity-50));
3768        --checkbox-border: 1px solid rgb(0 0 0 / var(--opacity-35-55));
3769      }
3770    
3771
3772    .color-custom-template--30935200563541__product_recommendations_qnzPkn {
3773      color: var(--color, var(--color-foreground));
3774      background-color: var(--color-background);
3775    }
3776  </style>
3777
3778
3779
3780  <div
3781    class="section-background color-custom-template--30935200563541__product_recommendations_qnzPkn"
3782  ></div>
3783  <div
3784    class="
3785      section
3786      section--page-width
3787      color-custom-template--30935200563541__product_recommendations_qnzPkn
3788      section-resource-list
3789      spacing-style
3790      gap-style
3791    "
3792    style="
3793      --padding-block-start: max(20px, calc(var(--spacing-scale) * 48px));--padding-block-end: max(20px, calc(var(--spacing-scale) * 48px));
3794      --gap: max(24px, calc(var(--gap-scale, 1.0) * 28px));
3795      --column-count-mobile: 2;--resource-list-column-gap-desktop: 16px;--resource-list-row-gap-desktop: 16px;--resource-list-columns: repeat(4, 1fr);--resource-list-columns-mobile: repeat(2, 1fr);--resource-list-column-gap-desktop: 16px;--column-count: 4;--column-count-mobile: 2;
3796    "
3797  >
3798    <div class="section-resource-list__content">
3799      
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811  <div class=" spacing-style text-block text-block--Ack1OR1J5U04wNnBGV__text_GbxcYC h4    text-block--align-center  "  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: center;          ">
3812    <h3>You may also like</h3>
3813  </div>
3814
3815
3816
3817
3818
3819
3820
3821    </div><div
3822        class="resource-list resource-list--grid"
3823      >
3824        
3825          <div
3826            class="product-recommendations__skeleton-item"
3827            aria-label="Loading product recommendations"
3828          ></div>
3829        
3830          <div
3831            class="product-recommendations__skeleton-item"
3832            aria-label="Loading product recommendations"
3833          ></div>
3834        
3835          <div
3836            class="product-recommendations__skeleton-item"
3837            aria-label="Loading product recommendations"
3838          ></div>
3839        
3840          <div
3841            class="product-recommendations__skeleton-item"
3842            aria-label="Loading product recommendations"
3843          ></div>
3844        
3845      </div></div>
3846</product-recommendations>
3847
3848
3849</div>
3850      </main>
3851
3852      <footer>
3853        <!-- BEGIN sections: footer-group -->
3854<div id="shopify-section-sections--30935194403157__footer_xrCgkf" class="shopify-section shopify-section-group-footer-group section-wrapper">
3855
3856
3857
3858
3859
3860
3861  <style data-shopify>
3862    .color-custom-sections--30935194403157__footer_xrCgkf,
3863    .color-custom-sections--30935194403157__footer_xrCgkf .text-block {
3864      /* Background */
3865      --color-background: #000000;
3866      --color-background-rgb: 0 0 0;
3867
3868      /* Opacity values adjusted for background brightness */
3869      
3870--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
38710.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
3872
3873
3874      
3875        /* Foreground / text — explicit or smart-contrasted */
3876        --color: var(--palette-lightest);
3877        --color-rgb: var(--palette-lightest-rgb);
3878        --color-foreground: var(--palette-lightest);
3879        --color-foreground-rgb: var(--palette-lightest-rgb);
3880        --color-foreground-muted: rgb(var(--palette-lightest-rgb) / var(--opacity-muted-text));
3881        --color-foreground-subdued: rgb(var(--palette-lightest-rgb) / var(--opacity-subdued-text));
3882        --color-border: var(--palette-lightest);
3883        --color-border-rgb: var(--palette-lightest-rgb);
3884      
3885    }
3886
3887    
3888      .color-custom-sections--30935194403157__footer_xrCgkf {
3889        /* Form-related tokens stay on .color-custom only — .text-block is a prose
3890           container (text/announcement/inline-text/blog-post-description/
3891           collection-link/price/sku) and never holds form inputs. */
3892        --input-disabled-background-color: rgb(var(--palette-lightest-rgb) / var(--opacity-10));
3893        --input-disabled-border-color: rgb(var(--palette-lightest-rgb) / var(--opacity-5));
3894        --input-disabled-text-color: rgb(var(--palette-lightest-rgb) / var(--opacity-50));
3895        --checkbox-border: 1px solid rgb(var(--palette-lightest-rgb) / var(--opacity-35-55));
3896      }
3897    
3898
3899    .color-custom-sections--30935194403157__footer_xrCgkf {
3900      color: var(--color, var(--color-foreground));
3901      background-color: var(--color-background);
3902    }
3903  </style>
3904
3905
3906
3907<div
3908  class="section-background color-custom-sections--30935194403157__footer_xrCgkf"
3909></div>
3910<div
3911  class="section section--page-width color-custom-sections--30935194403157__footer_xrCgkf"
3912>
3913  
3914  <div
3915    class="
3916      footer-content
3917      spacing-style
3918      
3919      
3920    "
3921    style="
3922      --padding-block-start: max(20px, calc(var(--spacing-scale) * 36px));--padding-block-end: max(20px, calc(var(--spacing-scale) * 36px));
3923      --footer-gap: 20px;
3924      --grid-columns: 3;
3925      --last-row-count: 3;
3926      --tablet-last-row-count: 1;
3927    "
3928  >
3929    
3930
3931
3932
3933
3934  
3935
3936
3937
3938
3939
3940
3941  
3942
3943
3944<accordion-custom
3945  
3946    class="menu"
3947  
3948  
3949  
3950    open-by-default-on-desktop
3951  
3952  
3953    open-by-default-on-mobile
3954  
3955  
3956    data-disable-on-desktop="true"
3957  
3958  
3959    data-disable-on-mobile="true"
3960  
3961  
3962  
3963  
3964>
3965  
3966    <details
3967      class="
3968        menu__details
3969        spacing-style
3970        
3971      "
3972      data-testid="menu-details"
3973      style="
3974        --spacing--size: 3px;
3975        --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
3976      "
3977      
3978        open
3979      
3980      
3981    >
3982      <summary class="menu__heading h3">
3983        <span class="menu__heading__default">Links</span>
3984        <span class="menu__heading__accordion">
3985          Links
3986          
3987            <span class="menu__heading__toggle svg-wrapper icon-caret icon-animated"><svg aria-hidden="true" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
3988  <path d="M11 5.5L7 9.5L3 5.5" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
3989</svg>
3990</span>
3991          
3992        </span>
3993      </summary>
3994
3995      <nav
3996        class="details-content"
3997        
3998          aria-label="Links"
3999        
4000      >
4001        
4002          <ul class="list-unstyled">
4003            
4004              <li class="menu__item paragraph">
4005                <a href="/policies/refund-policy">
4006                  Return & Refund Policy
4007                </a>
4008              </li>
4009            
4010              <li class="menu__item paragraph">
4011                <a href="/policies/privacy-policy">
4012                  Privacy Policy
4013                </a>
4014              </li>
4015            
4016          </ul>
4017        
4018      </nav>
4019    </details>
4020  
4021</accordion-custom>
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045  <a
4046    href="https://store.steampowered.com/app/3879830/The_Hollow_Cir
4046cuit_Book_One/"
4047    class="
4048  image-block image-block--AR0E3cjMydUd1T0dFd__image_R9EzLt image-block--height-fit spacing-style size-style
4049"
4050    style="
4051  --ratio: 16 / 9;
4052  --size-style-width: fit-content;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
4053  --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
4054"
4055    
4056  >
4057    
4058<img src="//artoffaceless.com/cdn/shop/files/Header_Capsule.png?v=1787654980&amp;width=3840" alt="" srcset="//artoffaceless.com/cdn/shop/files/Header_Capsule.png?v=1787654980&amp;width=240 240w, //artoffaceless.com/cdn/shop/files/Header_Capsule.png?v=1787654980&amp;width=352 352w, //artoffaceless.com/cdn/shop/files/Header_Capsule.png?v=1787654980&amp;width=832 832w, //artoffaceless.com/cdn/shop/files/Header_Capsule.png?v=1787654980&amp;width=1200 1200w, //artoffaceless.com/cdn/shop/files/Header_Capsule.png?v=1787654980&amp;width=1600 1600w, //artoffaceless.com/cdn/shop/files/Header_Capsule.png?v=1787654980&amp;width=1920 1920w, //artoffaceless.com/cdn/shop/files/Header_Capsule.png?v=1787654980&amp;width=2560 2560w, //artoffaceless.com/cdn/shop/files/Header_Capsule.png?v=1787654980&amp;width=3840 3840w" width="920" height="430" class="image-block__image border-style" style="
4059  --ratio: 16 / 9;
4060  
4061--border-width: 1px; --border-style: none; --border-color:
4062rgb(var(--color-border-rgb) / 1.0); --border-radius: 0px; 
4063
4064" sizes="auto, (min-width: 750px) 100vw, 100vw">
4065
4066  </a>
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083<div
4084  class="
4085    group-block
4086    group-block--height-fit
4087    group-block--width-fill
4088    border-style
4089    spacing-style
4090    size-style
4091    
4092    
4093  "
4094  style="
4095    
4096--border-width: 1px; --border-style: none; --border-color:
4097rgb(var(--color-border-rgb) / 1.0); --border-radius: 0px; 
4098
4099    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
4100    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
4101    
4102  "
4103  
4104  data-testid="group-block"
4105><div class="group-block__media-wrapper">
4106    
4107
4108
4109
4110
4111
4112
4113    
4114  </div>
4115
4116  <div
4117    class="
4118      group-block-content
4119      
4120      layout-panel-flex
4121      layout-panel-flex--column
4122       mobile-column
4123    "
4124    style="--flex-direction: column; --flex-wrap: nowrap; --flex-wrap-mobile: wrap;
4125
4126--gap: 6px;
4127
4128--horizontal-alignment: flex-start; --vertical-alignment: center;
4129--vertical-alignment-mobile: center;
4130"
4131  >
4132  
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167</div>
4168</div>
4169
4170
4171
4172
4173
4174
4175  </div>
4176</div>
4177
4178
4179
4180
4181</div><div id="shopify-section-sections--30935194403157__footer_KEF4rh" class="shopify-section shopify-section-group-footer-group section-wrapper">
4182
4183
4184
4185
4186
4187
4188  <style data-shopify>
4189    .color-custom-sections--30935194403157__footer_KEF4rh,
4190    .color-custom-sections--30935194403157__footer_KEF4rh .text-block {
4191      /* Background */
4192      --color-background: #000000;
4193      --color-background-rgb: 0 0 0;
4194
4195      /* Opacity values adjusted for background brightness */
4196      
4197--opacity-5-15: 0.15; --opacity-10-25: 0.25; --opacity-35-55: 0.55; --opacity-40-60:
41980.6; --opacity-30-60: 0.6; --opacity-60: 0.6;
4199
4200
4201      
4202        /* Foreground / text — explicit or smart-contrasted */
4203        --color: var(--palette-lightest);
4204        --color-rgb: var(--palette-lightest-rgb);
4205        --color-foreground: var(--palette-lightest);
4206        --color-foreground-rgb: var(--palette-lightest-rgb);
4207        --color-foreground-muted: rgb(var(--palette-lightest-rgb) / var(--opacity-muted-text));
4208        --color-foreground-subdued: rgb(var(--palette-lightest-rgb) / var(--opacity-subdued-text));
4209        --color-border: var(--palette-lightest);
4210        --color-border-rgb: var(--palette-lightest-rgb);
4211      
4212    }
4213
4214    
4215      .color-custom-sections--30935194403157__footer_KEF4rh {
4216        /* Form-related tokens stay on .color-custom only — .text-block is a prose
4217           container (text/announcement/inline-text/blog-post-description/
4218           collection-link/price/sku) and never holds form inputs. */
4219        --input-disabled-background-color: rgb(var(--palette-lightest-rgb) / var(--opacity-10));
4220        --input-disabled-border-color: rgb(var(--palette-lightest-rgb) / var(--opacity-5));
4221        --input-disabled-text-color: rgb(var(--palette-lightest-rgb) / var(--opacity-50));
4222        --checkbox-border: 1px solid rgb(var(--palette-lightest-rgb) / var(--opacity-35-55));
4223      }
4224    
4225
4226    .color-custom-sections--30935194403157__footer_KEF4rh {
4227      color: var(--color, var(--color-foreground));
4228      background-color: var(--color-background);
4229    }
4230  </style>
4231
4232
4233
4234<div
4235  class="section-background color-custom-sections--30935194403157__footer_KEF4rh"
4236></div>
4237<div
4238  class="section section--page-width color-custom-sections--30935194403157__footer_KEF4rh"
4239>
4240  
4241  <div
4242    class="
4243      footer-content
4244      spacing-style
4245      
4246      
4247    "
4248    style="
4249      --padding-block-start: max(20px, calc(var(--spacing-scale) * 36px));--padding-block-end: max(20px, calc(var(--spacing-scale) * 36px));
4250      --footer-gap: 20px;
4251      --grid-columns: 2;
4252      --last-row-count: 2;
4253      --tablet-last-row-count: 2;
4254    "
4255  >
4256    
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267<div
4268  class="
4269    group-block
4270    group-block--height-fit
4271    group-block--width-fill
4272    border-style
4273    spacing-style
4274    size-style
4275    
4276    
4277  "
4278  style="
4279    
4280--border-width: 1px; --border-style: none; --border-color:
4281rgb(var(--color-border-rgb) / 1.0); --border-radius: 0px; 
4282
4283    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
4284    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
4285    
4286  "
4287  
4288  data-testid="group-block"
4289><div class="group-block__media-wrapper">
4290    
4291
4292
4293
4294
4295
4296
4297    
4298  </div>
4299
4300  <div
4301    class="
4302      group-block-content
4303      
4304      layout-panel-flex
4305      layout-panel-flex--column
4306       mobile-column
4307    "
4308    style="--flex-direction: column; --flex-wrap: nowrap; --flex-wrap-mobile: wrap;
4309
4310--gap: 6px;
4311
4312--horizontal-alignment: flex-start; --vertical-alignment: center;
4313--vertical-alignment-mobile: center;
4314"
4315  >
4316  
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328  <div class=" spacing-style text-block text-block--AeVlVV0F6azlBdWV3d__text_AdV3Ba h3    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;          ">
4329    <h2>Join our email list</h2>
4330  </div>
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349  <rte-formatter class=" spacing-style text-block text-block--AN0xrNGp5ak8ybEE3Q__text_nrBebp rte    text-block--align-left rte   "  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;          ">
4350    <p>Get exclusive deals and early access to new products.</p>
4351  </rte-formatter>
4352
4353
4354
4355
4356
4357
4358
4359</div>
4360</div>
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376<div
4377  class="email-signup-block size-style spacing-style"
4378  style="
4379    --size-style-width: 100%;--size-style-height: ;
4380    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
4381  "
4382  
4383>
4384  
4385<form method="post" action="/contact#contact_form" id="contact_form" accept-charset="UTF-8" class="email-signup__form spacing-style"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" />
4386    
4387<div
4388      class="email-signup__input-group"
4389      style="
4390        --border-width: var(--style-border-width-inputs);
4391        --border-radius: var(--style-border-radius-inputs);
4392        
4393      "
4394    >
4395      <label
4396        for="EmailInput-AQnFKcFUwWlZKU3hBO__email_signup_y4cin8"
4397        class="visually-hidden"
4398      >
4399        Email
4400      </label>
4401      <input
4402        id="EmailInput-AQnFKcFUwWlZKU3hBO__email_signup_y4cin8"
4403        class="email-signup__input email-signup__input--all paragraph "
4404        type="email"
4405        name="contact[email]"
4406        autocorrect="off"
4407        autocapitalize="off"
4408        autocomplete="email"
4409        placeholder="Email address"
4410        required
4411        
4412      >
4413      <button
4414        class="email-signup__button  email-signup__button--text paragraph button button--AQnFKcFUwWlZKU3hBO__email_signup_y4cin8"
4415        
4416      >
4417        
4418          Sign up
4419        
4420      </button>
4421    </div></form>
4422</div>
4423
4424
4425
4426
4427
4428  </div>
4429</div>
4430
4431
4432
4433
4434</div><div id="shopify-section-sections--30935194403157__utilities" class="shopify-section shopify-section-group-footer-group footer-utilities">
4435
4436
4437
4438
4439
4440
4441  <style data-shopify>
4442    .color-custom-sections--30935194403157__utilities,
4443    .color-custom-sections--30935194403157__utilities .text-block {
4444      /* Background */
4445      --color-background: #ffffff;
4446      --color-background-rgb: 255 255 255;
4447
4448      /* Opacity values adjusted for background brightness */
4449      
4450--opacity-5-15: 0.05; --opacity-10-25: 0.1; --opacity-35-55: 0.35; --opacity-40-60:
44510.4; --opacity-30-60: 0.3; --opacity-60: 0.6;
4452
4453
4454      
4455        /* Foreground / text — explicit or smart-contrasted */
4456        --color: #000000;
4457        --color-rgb: 0 0 0;
4458        --color-foreground: #000000;
4459        --color-foreground-rgb: 0 0 0;
4460        --color-foreground-muted: rgb(0 0 0 / var(--opacity-muted-text));
4461        --color-foreground-subdued: rgb(0 0 0 / var(--opacity-subdued-text));
4462        --color-border: var(--palette-darkest);
4463        --color-border-rgb: var(--palette-darkest-rgb);
4464      
4465    }
4466
4467    
4468      .color-custom-sections--30935194403157__utilities {
4469        /* Form-related tokens stay on .color-custom only — .text-block is a prose
4470           container (text/announcement/inline-text/blog-post-description/
4471           collection-link/price/sku) and never holds form inputs. */
4472        --input-disabled-background-color: rgb(0 0 0 / var(--opacity-10));
4473        --input-disabled-border-color: rgb(0 0 0 / var(--opacity-5));
4474        --input-disabled-text-color: rgb(0 0 0 / var(--opacity-50));
4475        --checkbox-border: 1px solid rgb(0 0 0 / var(--opacity-35-55));
4476      }
4477    
4478
4479    .color-custom-sections--30935194403157__utilities {
4480      color: var(--color, var(--color-foreground));
4481      background-color: var(--color-background);
4482    }
4483  </style>
4484
4485
4486
4487<div
4488  class="section-background color-custom-sections--30935194403157__utilities"
4489></div>
4490<div
4491  class="section section--page-width color-custom-sections--30935194403157__utilities"
4492  
4493>
4494  <div
4495    class="utilities utilities--blocks-2 spacing-style"
4496    style="--padding-block-start: 12px;--padding-block-end: 16px; --border-width: 1px; --gap: 24px;"
4497    data-testid="footer-utilities"
4498  >
4499    
4500
4501<div
4502  class="
4503    footer-utilities__group-copyright
4504    custom-typography
4505    custom-font-size
4506  "
4507  style="
4508    
4509--font-size: 0.75rem;      --font-weight: ;--font-family: ;    --text-transform: none;    --text-wrap: pretty;          --line-height: var(--line-height--body-);        --letter-spacing: var(--letter-spacing--body-);
4510    
4511  "
4512  
4513>
4514  <span class="footer-utilities__text">
4515    &copy; 2026
4516    <a href="/" title="">Art of FACELESS</a></span>
4517</div>
4518
4519
4520
4521
4522
4523
4524  <anchored-popover-component
4525    data-hover-triggered="true"
4526  >
4527    <button
4528      class="policy-list-trigger button-unstyled"
4529      popovertarget="terms-policies-popover"
4530      popovertargetaction="toggle"
4531      ref="trigger"
4532      style="
4533        
4534--font-size: 0.75rem;      --font-weight: ;--font-family: ;    --text-transform: none;    --text-wrap: pretty;          --line-height: var(--line-height--body-);        --letter-spacing: var(--letter-spacing--body-);
4535        
4536      "
4537      
4538    >
4539      Terms and Policies
4540    </button>
4541    <div
4542      class="terms-policies-popover color-custom-popover"
4543      id="terms-policies-popover"
4544      popover="auto"
4545      ref="popover"
4546    >
4547      <ul
4548        class="
4549          policy_list list-unstyled
4550          custom-typography
4551          custom-font-size
4552        "
4553      ><li>
4554              <a
4555                href="/policies/privacy-policy"
4556                class="footer-utilities__text"
4557              >Privacy policy</a>
4558            </li><li>
4559              <a
4560                href="/policies/refund-policy"
4561                class="footer-utilities__text"
4562              >Refund policy</a>
4563            </li><li>
4564              <a
4565                href="/policies/terms-of-service"
4566                class="footer-utilities__text"
4567              >Terms of service</a>
4568            </li><li>
4569              <a
4570                href="/policies/contact-information"
4571                class="footer-utilities__text"
4572              >Contact information</a>
4573            </li></ul>
4574    </div>
4575  </anchored-popover-component>
4576
4577
4578
4579
4580
4581
4582  </div>
4583</div>
4584
4585
4586
4587
4588</div>
4589<!-- END sections: footer-group -->
4590      </footer>
4591    </div>
4592
4593    
4594
4595    <div
4596      id="shopify-section-cart-drawer-section"
4597      class="shopify-section"
4598    >
4599  
4600
4601  
4601<script
4602    type="module"
4603    src="//artoffaceless.com/cdn/shop/t/8/assets/cart-drawer.js?v=101430053943909765251787751266"
4604    fetchpriority="low"
4605  ></script>
4605
4606
4607  
4608
4609  <theme-drawer
4610    id="cart-drawer"
4611    data-skip-node-update
4612  >
4613    <dialog
4614      ref="panel"
4615      class="theme-drawer__dialog color-custom-drawer"
4616      aria-labelledby="cart-drawer-heading"
4617      cart-summary-sticky="true"
4618    >
4619      <cart-drawer-component
4620        
4621      >
4622        <template id="empty-cart-template">
4623          
4624    <div
4625      class="cart-drawer__content"
4626      aria-label="Cart"
4627    >
4628      <h2
4629        class="theme-drawer__title h4"
4630        id="cart-drawer-heading"
4631      >
4632        Your cart is empty
4633      </h2>
4634
4635      <div class="cart-drawer__items">
4636        
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646<script
4647  src="//artoffaceless.com/cdn/shop/t/8/assets/component-cart-items.js?v=14476580701730542761787751266"
4648  type="module"
4649  fetchpriority="low"
4650></script>
vendor: 1 bytes, line 4650
4650
4651<script
4652  src="//artoffaceless.com/cdn/shop/t/8/assets/component-cart-quantity-selector.js?v=168493463479860323171787751266"
4653  type="module"
4654  fetchpriority="low"
4655></script>
vendor: 1 bytes, line 4655
4655
4656<script
4657  src="//artoffaceless.com/cdn/shop/t/8/assets/volume-pricing-info.js?v=94479640769665442661787751266"
4658  type="module"
4659  fetchpriority="low"
4660></script>
4660
4661
4662
4663
4664
4665<div
4666  
4667  class="cart-items__wrapper cart-items__wrapper--drawer-empty"
4668  
4669    data-cart-drawer-empty
4670  
4671  style=""
4672>
4673  
4674<p>
4675        Have an account? <a href="https://artoffaceless.com/customer_authentication/redirect?locale=en&region_country=GB">Log in</a> to check out faster.
4676      </p><a
4677      class="button cart-items__empty-button"
4678      href="/collections/all"
4679    >
4680      <span class="button-text">
4681        Continue shopping
4682      </span>
4683    </a></div>
4684
4685
4686
4687      </div>
4688    </div>
4689  
4690        </template>
4691
4692        <div
4693          class="cart-drawer__inner cart-drawer--empty"
4694          data-hydration-key="cart-drawer-inner"
4695        ><div class="theme-drawer__header">
4696              <button
4697                on:click="#cart-drawer/close"
4698                class="theme-drawer__close-button cart-drawer__close-button--empty"
4699                type="button"
4700                aria-label="Close"
4701              >
4702                <span class="svg-wrapper"><svg aria-hidden="true" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
4703<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"/>
4704</svg>
4705</span>
4706              </button>
4707            </div>
4708          
4709
4710<cart-items-component
4711  class="cart-items-component"
4712  
4713    data-drawer
4714    view-event-trigger="dialog"
4715  
4716  data-section-id="cart-drawer-section"
4717  
4718  view-event-payload="{&quot;context&quot;:null,&quot;cart&quot;:null}"
4719  
4720>
4721  
4722
4723    <div
4724      class="cart-drawer__content"
4725      aria-label="Cart"
4726    >
4727      <h2
4728        class="theme-drawer__title h4"
4729        id="cart-drawer-heading"
4730      >
4731        Your cart is empty
4732      </h2>
4733
4734      <div class="cart-drawer__items">
4735        
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745<script
4746  src="//artoffaceless.com/cdn/shop/t/8/assets/component-cart-items.js?v=14476580701730542761787751266"
4747  type="module"
4748  fetchpriority="low"
4749></script>
vendor: 1 bytes, line 4749
4749
4750<script
4751  src="//artoffaceless.com/cdn/shop/t/8/assets/component-cart-quantity-selector.js?v=168493463479860323171787751266"
4752  type="module"
4753  fetchpriority="low"
4754></script>
vendor: 1 bytes, line 4754
4754
4755<script
4756  src="//artoffaceless.com/cdn/shop/t/8/assets/volume-pricing-info.js?v=94479640769665442661787751266"
4757  type="module"
4758  fetchpriority="low"
4759></script>
4759
4760
4761
4762
4763
4764<div
4765  
4766  class="cart-items__wrapper cart-items__wrapper--drawer-empty"
4767  
4768    data-cart-drawer-empty
4769  
4770  style=""
4771>
4772  
4773<p>
4774        Have an account? <a href="https://artoffaceless.com/customer_authentication/redirect?locale=en&region_country=GB">Log in</a> to check out faster.
4775      </p><a
4776      class="button cart-items__empty-button"
4777      href="/collections/all"
4778    >
4779      <span class="button-text">
4780        Continue shopping
4781      </span>
4782    </a></div>
4783
4784
4785
4786      </div>
4787    </div>
4788  
4789
4790</cart-items-component>
4791
4792
4793
4794        </div>
4795      </cart-drawer-component>
4796    </dialog>
4797  </theme-drawer>
4798
4799  
4800    </div>
4801  
4802
4803
4804    
4805
4806
4807
4808
4809
4810
4811<script
4812  type="module"
4813  src="//artoffaceless.com/cdn/shop/t/8/assets/theme-drawer.js?v=155110645205299884131787751266"
4814  fetchpriority="low"
4815></script>
4815
4816
4817<script>
4818  /* Runs synchronously during HTML parsing — opens the correct drawer on first
4819     paint if navigation state was saved, so it renders with the rest of the page. */
4820  (function () {
4821    var drawerIds = (sessionStorage.getItem('theme-drawer-open') || '').split(',').filter(Boolean);
4822    if (!drawerIds.length) return;
4823
4824    // Only restore on wide viewports (squeeze mode). On narrow viewports the
4825    // drawer is a modal overlay — let it start closed after navigation rather
4826    // than re-opening a fullscreen dialog the user may have left behind.
4827    if (!window.matchMedia('(min-width: 990px)').matches) return;
4828
4829    var dialogs = [];
4830    for (var i = 0; i < drawerIds.length; i++) {
4831      var drawer = document.getElementById(drawerIds[i]);
4832      if (!drawer) continue;
4833
4834      drawer.setAttribute('open', '');
4835
4836      // Set [open] directly so the CSS slide-in applies without triggering
4837      // the browser's dialog focusing steps — on wide viewports the drawer is
4838      // a sidebar, not a modal, so focus should stay where it is.
4839      // The instant class suppresses the slide-in transition for the initial restore.
4840      // Set --drawer-stack-order so z-index layering matches the original order.
4841      drawer.style.setProperty('--drawer-stack-order', String(i + 1));
4842
4843      var dialog = drawer.querySelector('dialog');
4844      if (dialog) {
4845        dialog.setAttribute('open', '');
4846        dialog.classList.add('theme-drawer__dialog-instant');
4847        dialogs.push(dialog);
4848      }
4849
4850      // Let each drawer type handle its own restore (e.g. shopify-chat mode).
4851      // Synchronous dispatch — listeners attached during earlier parsing run immediately.
4852      drawer.dispatchEvent(new CustomEvent('theme-drawer:restoring'));
4853    }
4854
4855    // Apply squeeze immediately, bypassing the margin transition.
4856    // Only squeeze if at least one drawer was actually restored — saved
4857    // drawer IDs may not exist on every page (e.g. cart-drawer on /cart).
4858    var pageWrapper = document.querySelector('.page-wrapper');
4859    if (pageWrapper && dialogs.length > 0) {
4860      pageWrapper.style.transition = 'none';
4861      pageWrapper.classList.add('page-wrapper--drawer-open');
4862    }
4863
4864    // Re-enable transitions after one paint so the instant state is rendered first.
4865    requestAnimationFrame(function () {
4866      requestAnimationFrame(function () {
4867        if (pageWrapper) pageWrapper.style.transition = '';
4868        for (var j = 0; j < dialogs.length; j++) {
4869          dialogs[j].classList.remove('theme-drawer__dialog-instant');
4870        }
4871      });
4872    });
4873  })();
4874</script>
4874
4875
4876<script
4877  type="module"
4878>
4879  const pageWrapper = document.querySelector('.page-wrapper');
4880  const squeezeQuery = window.matchMedia('(min-width: 990px)');
4881
4882  // ── Squeeze coordination ──
4883  // Listens to all drawers. Only squeezes on wide viewports.
4884  document.addEventListener('theme-drawer:open', () => {
4885    if (squeezeQuery.matches) {
4886      pageWrapper?.classList.add('page-wrapper--drawer-open');
4887    }
4888  });
4889
4890  document.addEventListener('theme-drawer:close', () => {
4891    const openDrawer = document.querySelector('theme-drawer[open]');
4892    if (!openDrawer) {
4893      pageWrapper?.classList.remove('page-wrapper--drawer-open');
4894    }
4895  });
4896
4897  squeezeQuery.addEventListener('change', () => {
4898    const openDrawer = document.querySelector('theme-drawer[open]');
4899    pageWrapper?.classList.toggle('page-wrapper--drawer-open', Boolean(openDrawer) && squeezeQuery.matches);
4900  });
4901
4902  // ── State persistence ──
4903  // Store open drawer IDs sorted by their visual stack order so
4904  // the restore script can recreate the same z-index layering.
4905  function persistDrawerState() {
4906    const openDrawers = Array.from(document.querySelectorAll('theme-drawer[open]:not([no-persist])'));
4907    if (!openDrawers.length) {
4908      sessionStorage.removeItem('theme-drawer-open');
4909      return;
4910    }
4911
4912    openDrawers.sort((a, b) => {
4913      const orderA = Number(a.style.getPropertyValue('--drawer-stack-order') || 0);
4914      const orderB = Number(b.style.getPropertyValue('--drawer-stack-order') || 0);
4915      return orderA - orderB;
4916    });
4917
4918    sessionStorage.setItem('theme-drawer-open', openDrawers.map((d) => d.id).join(','));
4919  }
4920
4921  document.addEventListener('theme-drawer:open', persistDrawerState);
4922  document.addEventListener('theme-drawer:close', persistDrawerState);
4923</script>
4923
4924
4925
4926    
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937<script
4938  src="//artoffaceless.com/cdn/shop/t/8/assets/dialog.js?v=144816527575655702281787751266"
4939  type="module"
4940></script>
4940
4941
4942<script
4943  src="//artoffaceless.com/cdn/shop/t/8/assets/predictive-search.js?v=162722252387887966571787751266"
4944  type="module"
4945  fetchpriority="low"
4946></script>
4946
4947
4948<dialog-component
4949  id="search-modal"
4950  class="search-modal"
4951  
4952>
4953  <dialog
4954    ref="dialog"
4955    on:click="/closeDialogOnClickOutside"
4956    on:keydown="/closeDialogOnEscapePress"
4957    class="search-modal__content dialog-modal"
4958    scroll-lock
4959    aria-labelledby="search-modal-heading"
4960  >
4961    <h2
4962      id="search-modal-heading"
4963      class="visually-hidden"
4964    >
4965      Search
4966    </h2>
4967    <predictive-search-component
4968      class="predictive-search color-custom-popover"
4969      style="--product-corner-radius: 0px; --card-corner-radius: 0px; --title-case: uppercase;"
4970      data-section-id="predictive-search"
4971      data-testid="search-component--modal"
4972      role="search"
4973      aria-label="Search"
4974    >
4975      <form
4976        action="/search"
4977        method="get"
4978        role="search"
4979        class="predictive-search-form"
4980        ref="form"
4981        on:keydown="/onSearchKeyDown"
4982      >
4983        <div
4984          class="predictive-search-form__header"
4985        >
4986          <div class="predictive-search-form__header-inner">
4987            <label
4988              for="cmdk-input"
4989              class="visually-hidden"
4990            >Search</label>
4991            <input
4992              class="search-input"
4993              id="cmdk-input"
4994              type="search"
4995              name="q"
4996              role="combobox"
4997              aria-expanded="false"
4998              aria-owns="predictive-search-results"
4999              aria-controls="predictive-search-results"
5000              aria-haspopup="listbox"
5001              aria-autocomplete="list"
5002              autocomplete="off"
5003              placeholder="Search"
5004              ref="searchInput"
5005              on:input="/search"
5006              on:keydown="/onSearchKeyDown"
5007            >
5008            <input
5009              name="options[prefix]"
5010              type="hidden"
5011              value="last"
5012            >
5013            <span class="svg-wrapper predictive-search__icon">
5014              <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>
5015
5016            </span>
5017            <button
5018              type="button"
5019              class="button-unstyled predictive-search__reset-button"
5020              ref="resetButton"
5021              hidden
5022              on:click="/resetSearch"
5023            >
5024              Clear
5025            </button>
5026          </div>
5027          <button
5028            type="button"
5029            class="button predictive-search__close-modal-button"
5030            aria-label="Close dialog"
5031            on:click="dialog-component/closeDialog"
5032            ref="closeModalButton"
5033          >
5034            <span class="svg-wrapper">
5035              <svg aria-hidden="true" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
5036<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"/>
5037</svg>
5038
5039            </span>
5040          </button>
5041        </div>
5042
5043        <div class="predictive-search-form__content-wrapper">
5044          <div
5045            class="predictive-search-form__content"
5046            ref="predictiveSearchResults"
5047            on:click="/handleModalClick"
5048          >
5049            
5050
5051<div
5052  id="predictive-search-results"
5053  class="predictive-search-dropdown"
5054  role="listbox"
5055  aria-expanded="true"
5056  style="--color-shadow: rgb(var(--color-foreground-rgb) / 0.1);"
5057>
5058  
5059    <div class="predictive-search-results__inner">
5060      
5061      
5062        
5063        
5064        
5065          <div
5066  id="predictive-search-products"
5067  class="predictive-search-results__products"
5068  
5069    data-testid="products-list-default--modal"
5070  
5071>
5072  
5073    <h4 class="predictive-search-results__title">
5074      Products
5075    </h4>
5076    <ul
5077      class="predictive-search-results__list predictive-search-results__wrapper-products list-unstyled"
5078    >
5079      
5080      
5081        <li
5082          class="predictive-search-results__card predictive-search-results__card--product"
5083          ref="resultsItems[]"
5084        >
5085          
5086<product-card-link
5087    class="resource-card__wrapper"
5088    
5089      data-product-id="11528517386581"
5090      data-featured-media-url="//artoffaceless.com/cdn/shop/files/kiss-cut-stickers-white-3x3-default-6a8b3850cd983.jpg?v=1787508846&width=500"
5091      data-product-transition="true"
5092      on:click="/handleViewTransition"
5093    
5094    
5095    view-event-payload="{&quot;product&quot;:{&quot;id&quot;:11528517386581,&quot;title&quot;:&quot;404 QR Code Sticker&quot;,&quot;handle&quot;:&quot;bubble-free-stickers&quot;,&quot;selectedVariant&quot;:null},&quot;context&quot;:&quot;search&quot;,&quot;selectedOptions&quot;:[]}"
5096    
5097  ><div
5098  class="resource-card"
5099  data-resource-type="product"
5100>
5101  <a
5102    class="resource-card__link"
5103    href="/products/bubble-free-stickers"
5104  >
5105    <span class="visually-hidden">
5106      404 QR Code Sticker
5107    </span>
5108  </a>
5109  <div
5110    class="resource-card__media"
5111    style="--resource-card-aspect-ratio: 4 / 5;"
5112    
5113      ref="cardGallery"
5114      data-view-transition-to-main-product
5115    
5116  >
5117      
5118      
5119
5120        <img src="//artoffaceless.com/cdn/shop/files/kiss-cut-stickers-white-3x3-default-6a8b3850cd983.jpg?v=1787508846&amp;width=500" alt="Product mockup" srcset="//artoffaceless.com/cdn/shop/files/kiss-cut-stickers-white-3x3-default-6a8b3850cd983.jpg?v=1787508846&amp;width=240 240w, //artoffaceless.com/cdn/shop/files/kiss-cut-stickers-white-3x3-default-6a8b3850cd983.jpg?v=1787508846&amp;width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" ref="imagesToTransition[]" style="object-position: 50.0% 50.0%;">
5121
5122          <img src="//artoffaceless.com/cdn/shop/files/kiss-cut-stickers-white-4x4-default-6a8b3850ce912.jpg?v=1787508847&amp;width=500" alt="Product mockup" srcset="//artoffaceless.com/cdn/shop/files/kiss-cut-stickers-white-4x4-default-6a8b3850ce912.jpg?v=1787508847&amp;width=240 240w, //artoffaceless.com/cdn/shop/files/kiss-cut-stickers-white-4x4-default-6a8b3850ce912.jpg?v=1787508847&amp;width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image resource-card__image--secondary" sizes="auto" ref="imagesToTransition[]" data-media-id="58072383357269" style="object-position: 50.0% 50.0%;">
5123</div>
5124
5125  <div class="resource-card__content">
5126    <p class="resource-card__title paragraph">404 QR Code Sticker</p>
5127
5128    
5129      
5130
5131<div ref="priceContainer">
5132  
5133    
5134    
5135      <span class="price">£1.93</span>
5136    
5137  
5138</div>
5139    
5140  </div>
5141</div></product-card-link>
5142
5143        </li>
5144      
5145        <li
5146          class="predictive-search-results__card predictive-search-results__card--product"
5147          ref="resultsItems[]"
5148        >
5149          
5150<product-card-link
5151    class="resource-card__wrapper"
5152    
5153      data-product-id="11607023944021"
5154      data-featured-media-url="//artoffaceless.com/cdn/shop/files/cowards-on-the-central-line-album-art.jpg?v=1789380503&width=500"
5155      data-product-transition="true"
5156      on:click="/handleViewTransition"
5157    
5158    
5159    view-event-payload="{&quot;product&quot;:{&quot;id&quot;:11607023944021,&quot;title&quot;:&quot;Cowards on the Central Line [Explicit] HD WAV, 24-bit, 24K Audio&quot;,&quot;handle&quot;:&quot;cowards-on-the-central-line-explicit&quot;,&quot;selectedVariant&quot;:null},&quot;context&quot;:&quot;search&quot;,&quot;selectedOptions&quot;:[]}"
5160    
5161  ><div
5162  class="resource-card"
5163  data-resource-type="product"
5164>
5165  <a
5166    class="resource-card__link"
5167    href="/products/cowards-on-the-central-line-explicit"
5168  >
5169    <span class="visually-hidden">
5170      Cowards on the Central Line [Explicit] HD WAV, 24-bit, 24K Audio
5171    </span>
5172  </a>
5173  <div
5174    class="resource-card__media"
5175    style="--resource-card-aspect-ratio: 4 / 5;"
5176    
5177      ref="cardGallery"
5178      data-view-transition-to-main-product
5179    
5180  >
5181      
5182      
5183
5184        <img src="//artoffaceless.com/cdn/shop/files/cowards-on-the-central-line-album-art.jpg?v=1789380503&amp;width=500" alt="" srcset="//artoffaceless.com/cdn/shop/files/cowards-on-the-central-line-album-art.jpg?v=1789380503&amp;width=240 240w, //artoffaceless.com/cdn/shop/files/cowards-on-the-central-line-album-art.jpg?v=1789380503&amp;width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" ref="imagesToTransition[]" style="object-position: 50.0% 50.0%;">
5185</div>
5186
5187  <div class="resource-card__content">
5188    <p class="resource-card__title paragraph">Cowards on the Central Line [Explicit] HD WAV, 24-bit, 24K Audio</p>
5189
5190    
5191      
5192
5193<div ref="priceContainer">
5194  
5195    
5196    
5197      <span class="price">£0.79</span>
5198    
5199  
5200</div>
5201    
5202  </div>
5203</div></product-card-link>
5204
5205        </li>
5206      
5207        <li
5208          class="predictive-search-results__card predictive-search-results__card--product"
5209          ref="resultsItems[]"
5210        >
5211          
5212<product-card-link
5213    class="resource-card__wrapper"
5214    
5215      data-product-id="11528453980501"
5216      data-featured-media-url="//artoffaceless.com/cdn/shop/files/album_cover_1_glitch_icon_6b1183a2-945f-4ae5-abfa-3be5d87eefeb.png?v=1789383275&width=500"
5217      data-product-transition="true"
5218      on:click="/handleViewTransition"
5219    
5220    
5221    view-event-payload="{&quot;product&quot;:{&quot;id&quot;:11528453980501,&quot;title&quot;:&quot;iz it coz i iz on Blogger? [Explicit] HD WAV, 24-bit, 24K Audio&quot;,&quot;handle&quot;:&quot;digital-product&quot;,&quot;selectedVariant&quot;:null},&quot;context&quot;:&quot;search&quot;,&quot;selectedOptions&quot;:[]}"
5222    
5223  ><div
5224  class="resource-card"
5225  data-resource-type="product"
5226>
5227  <a
5228    class="resource-card__link"
5229    href="/products/digital-product"
5230  >
5231    <span class="visually-hidden">
5232      iz it coz i iz on Blogger? [Explicit] HD WAV, 24-bit, 24K Audio
5233    </span>
5234  </a>
5235  <div
5236    class="resource-card__media"
5237    style="--resource-card-aspect-ratio: 4 / 5;"
5238    
5239      ref="cardGallery"
5240      data-view-transition-to-main-product
5241    
5242  >
5243      
5244      
5245
5246        <img src="//artoffaceless.com/cdn/shop/files/album_cover_1_glitch_icon_6b1183a2-945f-4ae5-abfa-3be5d87eefeb.png?v=1789383275&amp;width=500" alt="" srcset="//artoffaceless.com/cdn/shop/files/album_cover_1_glitch_icon_6b1183a2-945f-4ae5-abfa-3be5d87eefeb.png?v=1789383275&amp;width=240 240w, //artoffaceless.com/cdn/shop/files/album_cover_1_glitch_icon_6b1183a2-945f-4ae5-abfa-3be5d87eefeb.png?v=1789383275&amp;width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" ref="imagesToTransition[]" style="object-position: 50.0% 50.0%;">
5247</div>
5248
5249  <div class="resource-card__content">
5250    <p class="resource-card__title paragraph">iz it coz i iz on Blogger? [Explicit] HD WAV, 24-bit, 24K Audio</p>
5251
5252    
5253      
5254
5255<div ref="priceContainer">
5256  
5257    
5258    
5259      <span class="price">£0.79</span>
5260    
5261  
5262</div>
5263    
5264  </div>
5265</div></product-card-link>
5266
5267        </li>
5268      
5269        <li
5270          class="predictive-search-results__card predictive-search-results__card--product"
5271          ref="resultsItems[]"
5272        >
5273          
5274<product-card-link
5275    class="resource-card__wrapper"
5276    
5277      data-product-id="11488239223125"
5278      data-featured-media-url="//artoffaceless.com/cdn/shop/files/maroon-ebook-cover.png?v=1790058339&width=500"
5279      data-product-transition="true"
5280      on:click="/handleViewTransition"
5281    
5282    
5283    view-event-payload="{&quot;product&quot;:{&quot;id&quot;:11488239223125,&quot;title&quot;:&quot;MAR00N — ePUB Edition&quot;,&quot;handle&quot;:&quot;mar00n-epub-edition&quot;,&quot;selectedVariant&quot;:null},&quot;context&quot;:&quot;search&quot;,&quot;selectedOptions&quot;:[]}"
5284    
5285  ><div
5286  class="resource-card"
5287  data-resource-type="product"
5288>
5289  <a
5290    class="resource-card__link"
5291    href="/products/mar00n-epub-edition"
5292  >
5293    <span class="visually-hidden">
5294      MAR00N — ePUB Edition
5295    </span>
5296  </a>
5297  <div
5298    class="resource-card__media"
5299    style="--resource-card-aspect-ratio: 4 / 5;"
5300    
5301      ref="cardGallery"
5302      data-view-transition-to-main-product
5303    
5304  >
5305      
5306      
5307
5308        <img src="//artoffaceless.com/cdn/shop/files/maroon-ebook-cover.png?v=1790058339&amp;width=500" alt="" srcset="//artoffaceless.com/cdn/shop/files/maroon-ebook-cover.png?v=1790058339&amp;width=240 240w, //artoffaceless.com/cdn/shop/files/maroon-ebook-cover.png?v=1790058339&amp;width=352 352w" width="500" height="800" loading="lazy" class="resource-card__image" sizes="auto" ref="imagesToTransition[]" style="object-position: 50.0% 50.0%;">
5309</div>
5310
5311  <div class="resource-card__content">
5312    <p class="resource-card__title paragraph">MAR00N — ePUB Edition</p>
5313
5314    
5315      
5316
5317<div ref="priceContainer">
5318  
5319    
5320    
5321      <span class="price">£5.00</span>
5322    
5323  
5324</div>
5325    
5326  </div>
5327</div></product-card-link>
5328
5329        </li>
5330      
5331    </ul>
5332  
5333</div>
5334
5335        
5336      
5337    </div>
5338  
5339</div>
5340
5341          </div>
5342
5343          <div class="predictive-search-form__footer">
5344            <button
5345              class="button predictive-search__search-button"
5346              ref="viewAllButton"
5347            >
5348              View all
5349            </button>
5350          </div>
5351        </div>
5352      </form>
5353    </predictive-search-component>
5354  </dialog>
5355</dialog-component>
5356
5357
5358
5359
5360    
5361      
5361<script
5362  src="//artoffaceless.com/cdn/shop/t/8/assets/gift-card-recipient-form.js?v=170482155849799299241787751266"
5363  type="module"
5364  fetchpriority="low"
5365></script>
5365
5366
5367
5368
5369
5370<quick-add-dialog id="quick-add-dialog">
5371  <dialog
5372    class="quick-add-modal dialog-modal color-custom-popover"
5373    ref="dialog"
5374    scroll-lock
5375  >
5376    <button
5377      ref="closeButton"
5378      on:click="/closeDialog"
5379      class="button button-unstyled close-button quick-add-modal__close"
5380      aria-label="Close dialog"
5381    ><svg aria-hidden="true" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
5382<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"/>
5383</svg>
5384</button>
5385
5386    <product-component
5387      id="quick-add-modal-content"
5388      class="quick-add-modal__content"
5389      view-event-trigger="dialog"
5390    ></product-component>
5391  </dialog>
5392</quick-add-dialog>
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407    
5408  
5408<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
5408
5409</body>
5410</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.