{"id":185,"date":"2026-06-07T14:26:02","date_gmt":"2026-06-07T14:26:02","guid":{"rendered":"https:\/\/max-themes.net\/zylyf\/?page_id=185"},"modified":"2026-06-07T14:26:02","modified_gmt":"2026-06-07T14:26:02","slug":"home-5","status":"publish","type":"page","link":"https:\/\/architruc.com\/_guylessard\/home-5\/","title":{"rendered":"Home 5"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"185\" class=\"elementor elementor-185\">\n\t\t\t\t<div class=\"elementor-element elementor-element-859bf37 e-flex e-con-boxed e-con e-parent\" data-id=\"859bf37\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-06a3562 e-flex e-con-boxed e-con e-parent\" data-id=\"06a3562\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-24f75c1 elementor-widget elementor-widget-zylyf_diagonal_showcase\" data-id=\"24f75c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"zylyf_diagonal_showcase.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<script>\n\t\t\t\/* ===================================================================\n\t\t\t * zylyf-diagonal-showcase \u2014 server-side portfolio image injection\n\t\t\t *\n\t\t\t * PROBLEM: main.js declares `const SHOWCASE_IMAGES = [...]` at\n\t\t\t * module scope. JS `const` shadows any `window.SHOWCASE_IMAGES`\n\t\t\t * assignment we make from outside, so setting window.SHOWCASE_IMAGES\n\t\t\t * has zero effect \u2014 main.js always reads its own hardcoded paths.\n\t\t\t *\n\t\t\t * FIX: We intercept DiagonalShowcase.loadTextures() via a prototype\n\t\t\t * patch that swaps in our real WordPress image URLs on the first call,\n\t\t\t * then restores the original method for subsequent calls.\n\t\t\t * =================================================================== *\/\n\t\t\t(function () {\n\t\t\t\tvar ZYLYF_PORTFOLIO_IMAGES = [\"https:\\\/\\\/architruc.com\\\/_guylessard\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/MC_000_RAIN_108p-768x432.png\",\"https:\\\/\\\/architruc.com\\\/_guylessard\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/MC_000_RAIN_108p-768x432.png\",\"https:\\\/\\\/architruc.com\\\/_guylessard\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/PAC_003_P-768x307.jpg\"];\n\n\t\t\t\t\/* Add body class for CSS scope *\/\n\t\t\t\tdocument.body.classList.add('tfd-diagonal-page');\n\n\t\t\t\t\/* Patch helper \u2014 wraps loadTextures on the DiagonalShowcase object *\/\n\t\t\t\tfunction zylyf_patchLoadTextures(ds) {\n\t\t\t\t\t\/\/ Prevent double-patching\n\t\t\t\t\tif (ds._zylyfPatched) return;\n\t\t\t\t\tds._zylyfPatched = true;\n\n\t\t\t\t\tvar _orig = ds.loadTextures.bind(ds);\n\t\t\t\t\tds.loadTextures = function (urls) {\n\t\t\t\t\t\t\/* Restore the original method immediately *\/\n\t\t\t\t\t\tds.loadTextures = _orig; \n\t\t\t\t\t\t\n\t\t\t\t\t\t\/* Grab our PHP-injected URLs *\/\n\t\t\t\t\t\tvar finalUrls = ZYLYF_PORTFOLIO_IMAGES.slice(0, 3);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/* PAD WITH THEME FALLBACKS IF LESS THAN 3 IMAGES FOUND *\/\n\t\t\t\t\t\tvar themeUris = [\n\t\t\t\t\t\t\t\"https:\/\/architruc.com\/_guylessard\/wp-content\/themes\/zylyf\/assets\/img\/proj-lumina.png\",\n\t\t\t\t\t\t\t\"https:\/\/architruc.com\/_guylessard\/wp-content\/themes\/zylyf\/assets\/img\/proj-architype.png\",\n\t\t\t\t\t\t\t\"https:\/\/architruc.com\/_guylessard\/wp-content\/themes\/zylyf\/assets\/img\/proj-aura.png\"\n\t\t\t\t\t\t];\n\t\t\t\t\t\tfor (var i = 0; i < 3; i++) {\n\t\t\t\t\t\t\tif (!finalUrls[i] || finalUrls[i].indexOf('data:image') === 0 || finalUrls[i].indexOf('placeholder') !== -1) {\n\t\t\t\t\t\t\t\tfinalUrls[i] = themeUris[i];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\/\/ Bypass CSS background-image cache tainting for WebGL\n\t\t\t\t\t\t\t\tfinalUrls[i] += (finalUrls[i].indexOf('?') === -1 ? '?' : '&') + 'webgl=1';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\/* \n\t\t\t\t\t\t * Force crossOrigin on Image dynamically if needed, \n\t\t\t\t\t\t * but since we use relative\/cache-busted URLs, we just pass them.\n\t\t\t\t\t\t *\/\n\t\t\t\t\t\treturn _orig(finalUrls);\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t\/* Intercept TFT_Theme synchronously to avoid ALL race conditions *\/\n\t\t\t\tvar _tft = window.TFT_Theme || {};\n\t\t\t\tObject.defineProperty(window, 'TFT_Theme', {\n\t\t\t\t\tget: function() { return _tft; },\n\t\t\t\t\tset: function(val) {\n\t\t\t\t\t\t_tft = val;\n\t\t\t\t\t\tvar _ds = _tft.DiagonalShowcase;\n\t\t\t\t\t\tObject.defineProperty(_tft, 'DiagonalShowcase', {\n\t\t\t\t\t\t\tget: function() { return _ds; },\n\t\t\t\t\t\t\tset: function(dsVal) {\n\t\t\t\t\t\t\t\t_ds = dsVal;\n\t\t\t\t\t\t\t\tif (_ds) zylyf_patchLoadTextures(_ds);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\t\tenumerable: true\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: true\n\t\t\t\t});\n\n\t\t\t\t\/* If it was already defined before our script, patch immediately *\/\n\t\t\t\tif (window.TFT_Theme && window.TFT_Theme.DiagonalShowcase) {\n\t\t\t\t\tzylyf_patchLoadTextures(window.TFT_Theme.DiagonalShowcase);\n\t\t\t\t}\n\n\t\t\t\t\/* Fallback re-init via window.load just in case *\/\n\t\t\t\twindow.addEventListener('load', function () {\n\t\t\t\t\tvar ds = window.TFT_Theme && window.TFT_Theme.DiagonalShowcase;\n\t\t\t\t\tif (ds && !ds.container) {\n\t\t\t\t\t\tif (typeof ds.loadTextures === 'function' && ds.textures.length === 0) {\n\t\t\t\t\t\t\tzylyf_patchLoadTextures(ds);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tds.init();\n\t\t\t\t\t} else if (ds && ds.textures.length === 0 && ds.webglActive) {\n\t\t\t\t\t\tzylyf_patchLoadTextures(ds);\n\t\t\t\t\t\tds.loadTextures(ZYLYF_PORTFOLIO_IMAGES.slice(0, 3));\n\t\t\t\t\t}\n\t\t\t\t}, { once: true });\n\n\t\t\t})();\n\t\t<\/script>\n\n\t\t<section\n\t\t\tclass=\"tfd-showcase tfd-showcase--diagonal\"\n\t\t\tid=\"wp-block-diagonal-showcase\"\n\t\t\taria-label=\"Zylyf+ \u2014 3 Column Diagonal WebGL Showcase\">\n\n\t\t\t<h1 class=\"cpf-skip-link\" style=\"position:absolute;inset-block-start:-999px\">\n\t\t\t\tZylyf+ \u2014 3 Column Diagonal WebGL Showcase\t\t\t<\/h1>\n\n\t\t\t<!-- WebGL Canvas -->\n\t\t\t<div class=\"tfd-showcase__webgl-container\">\n\t\t\t\t<canvas id=\"tfd-showcase-canvas\"><\/canvas>\n\t\t\t<\/div>\n\n\t\t\t<!-- CSS clip-path Fallback Grid (always rendered; JS shows it on WebGL failure) -->\n\t\t\t<div class=\"tfd-showcase__fallback-grid\">\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"tfd-showcase__fallback-panel tfd-showcase__fallback-panel--left\"\n\t\t\t\t\t\tstyle=\"background-image:url('https:\/\/architruc.com\/_guylessard\/wp-content\/uploads\/2026\/08\/MC_000_RAIN_108p-768x432.png')\"\n\t\t\t\t\t><\/div>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"tfd-showcase__fallback-panel tfd-showcase__fallback-panel--center\"\n\t\t\t\t\t\tstyle=\"background-image:url('https:\/\/architruc.com\/_guylessard\/wp-content\/uploads\/2026\/08\/MC_000_RAIN_108p-768x432.png')\"\n\t\t\t\t\t><\/div>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"tfd-showcase__fallback-panel tfd-showcase__fallback-panel--right\"\n\t\t\t\t\t\tstyle=\"background-image:url('https:\/\/architruc.com\/_guylessard\/wp-content\/uploads\/2022\/05\/PAC_003_P-768x307.jpg')\"\n\t\t\t\t\t><\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t<!-- HTML Label Overlays -->\n\t\t\t<div class=\"tfd-showcase__overlays\">\n\t\t\t\t<div class=\"tfd-showcase__labels\">\n\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"https:\/\/architruc.com\/_guylessard\/portfolio-project\/frenzy-3\/\"\n\t\t\t\t\t\t\tclass=\"tfd-showcase__label-zone tfd-showcase__label-zone--left\"\n\t\t\t\t\t\t\taria-label=\"View Montr\u00e9al capitale &#8211; exp\u00e9rience interactive project\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"tfd-showcase__label-veil\"><\/div>\n\t\t\t\t\t\t\t<span class=\"tfd-showcase__num\">01<\/span>\n\t\t\t\t\t\t\t<h2 class=\"tfd-showcase__title\">Montr\u00e9al capitale &#8211; exp\u00e9rience interactive<\/h2>\n\t\t\t\t\t\t\t<span class=\"tfd-showcase__category\">Mus\u00e9ologie<\/span>\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"https:\/\/architruc.com\/_guylessard\/portfolio-project\/frenzy-2\/\"\n\t\t\t\t\t\t\tclass=\"tfd-showcase__label-zone tfd-showcase__label-zone--center\"\n\t\t\t\t\t\t\taria-label=\"View Montr\u00e9al capitale &#8211; exposition hors murs project\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"tfd-showcase__label-veil\"><\/div>\n\t\t\t\t\t\t\t<span class=\"tfd-showcase__num\">02<\/span>\n\t\t\t\t\t\t\t<h2 class=\"tfd-showcase__title\">Montr\u00e9al capitale &#8211; exposition hors murs<\/h2>\n\t\t\t\t\t\t\t<span class=\"tfd-showcase__category\">Image de marque<\/span>\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"https:\/\/architruc.com\/_guylessard\/portfolio-project\/frenzy\/\"\n\t\t\t\t\t\t\tclass=\"tfd-showcase__label-zone tfd-showcase__label-zone--right\"\n\t\t\t\t\t\t\taria-label=\"View Montr\u00e9al capitale project\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"tfd-showcase__label-veil\"><\/div>\n\t\t\t\t\t\t\t<span class=\"tfd-showcase__num\">03<\/span>\n\t\t\t\t\t\t\t<h2 class=\"tfd-showcase__title\">Montr\u00e9al capitale<\/h2>\n\t\t\t\t\t\t\t<span class=\"tfd-showcase__category\">Mus\u00e9ologie<\/span>\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Zylyf+ \u2014 3 Column Diagonal WebGL Showcase 01 Clandestine Bradning 02 Zylyf Design 03 Naya Wallpaper<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"pages\/page-home-5.php","meta":{"footnotes":""},"class_list":["post-185","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/architruc.com\/_guylessard\/wp-json\/wp\/v2\/pages\/185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/architruc.com\/_guylessard\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/architruc.com\/_guylessard\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/architruc.com\/_guylessard\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/architruc.com\/_guylessard\/wp-json\/wp\/v2\/comments?post=185"}],"version-history":[{"count":0,"href":"https:\/\/architruc.com\/_guylessard\/wp-json\/wp\/v2\/pages\/185\/revisions"}],"wp:attachment":[{"href":"https:\/\/architruc.com\/_guylessard\/wp-json\/wp\/v2\/media?parent=185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}