0x241d…df5c

All memos sent from and to 0x241d…df5c.

<!doctype html><html><head><meta charset="utf-8"><title>shards</title><style> :root { /* Pattern 1: 7 bands */ --color1: #bb44dd; --color2: #000; --pos1: 0%; --pos2: 8.33%; --pos3: 25%; --pos4: 41.67%; --pos5: 58.33%; --pos6: 75%; --pos7: 91.67%; /* Pattern 2: 5 bands */ --color2-1: #6486f5; --color2-2: #000; --pos2-1: 0%; --pos2-2: 12.5%; --pos2-3: 37.5%; --pos2-4: 62.5%; --pos2-5: 87.5%; /* Pattern 3: 3 bands */ --color3-1: #ffffff; --color3-2: #000; --color4-1: #ff00cc; --color4-2: #000; --pos3-1: 0%; --pos3-2: 50%; --pos3-3: 100%; } body { background-color: black; margin: 0; padding: 0; width: 100vw; height: 100vh; overflow: hidden; } .gradient-container { position: absolute; overflow: hidden; transition: all 0.3s ease; clip-path: var(--clip-path); /* Emboss effect */ box-shadow: inset 2px 2px 5px rgba(255, 255, 255, 0.4), inset -2px -2px 5px rgba(0, 0, 0, 0.4); /* Add more depth with a subtle border */ } .gradient-up { background-image: repeating-linear-gradient( to bottom, var(--color1) var(--pos1), var(--color2) var(--pos2), var(--color1) var(--pos3), var(--color2) var(--pos4), var(--color1) var(--pos5), var(--color2) var(--pos6), var(--color1) var(--pos7) ); animation: moveUpwards 5s linear infinite; } .gradient-down { background-image: repeating-linear-gradient( to bottom, var(--color2-1) var(--pos2-1), var(--color2-2) var(--pos2-2), var(--color2-1) var(--pos2-3), var(--color2-2) var(--pos2-4), var(--color2-1) var(--pos2-5) ); animation: moveDownwards 5s linear infinite; } .gradient-left { background-image: repeating-linear-gradient( to right, var(--color3-1) var(--pos3-1), var(--color3-2) var(--pos3-2), var(--color3-1) var(--pos3-3) ); animation: moveLeft 5s linear infinite; } .gradient-right { background-image: repeating-linear-gradient( to right, var(--color4-1) var(--pos1), var(--color4-2) var(--pos2), var(--color4-1) var(--pos3), var(--color4-2) var(--pos4), var(--color4-1) var(--pos5), var(--color4-2) var(--pos6), var(--color4-1) var(--pos7) ); animation: moveRight 5s linear infinite; } .strobe { background-color: #000; } @keyframes strobeEffect { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes moveUpwards { 0% { background-position: 0 100%; } 100% { background-position: 0 -100%; } } @keyframes moveDownwards { 0% { background-position: 0 -100%; } 100% { background-position: 0 100%; } } @keyframes moveLeft { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } } @keyframes moveRight { 0% { background-position: -100% 0; } 100% { background-position: 100% 0; } } :root{--color1:#cd83c2;--color2:#000;--pos1:0%;--pos2:8.33%;--pos3:25%;--pos4:41.67%;--pos5:58.33%;--pos6:75%;--pos7:91.67%;--color2-1:#ff0000;--color2-2:#000;--pos2-1:0%;--pos2-2:12.5%;--pos2-3:37.5%;--pos2-4:62.5%;--pos2-5:87.5%;--color3-1:#494949;--color3-2:#000;--color4-1:#000000;--color4-2:#000;--pos3-1:0%;--pos3-2:50%;--pos3-3:100%;}:root{--color1: #cd83c2; --color2-1: #ff0000; --color3-1: #494949; --color4-1: #000000;}</style></head><body style="margin:0;background-color:black;width:100vw;height:100vh;overflow:hidden;"><div id="puzzle-container"><div class="gradient-container gradient-down" data-x="0" data-y="0" data-width="0.16" data-height="0.10999999999999999" style="left: 0px; top: 0px; width: 56.96px; height: 39.16px; --clip-path: polygon(0% 0%, 104% 0%, 58% 88%, 0% 93%); background-size: 56.96px 78.32px; animation-duration: 48s;"></div><div class="gradient-container gradient-right" data-x="0" data-y="0.10999999999999999" data-width="0.16" data-height="0.5624800000000001" style="left: 0px; top: 39.16px; width: 56.96px; height: 200.243px; --clip-path: polygon(0% -1%, 58% -2%, 137% 110%, 0% 94%); background-size: 113.92px 200.243px; animation-duration: 68s;"></div><div class="gradient-container gradient-left" data-x="0" data-y="0.6724800000000001" data-width="0.16" data-height="0.14952" style="left: 0px; top: 239.403px; width: 56.96px; height: 53.2291px; --clip-path: polygon(0% -22%, 137% 38%, 66% 128%, 0% 98%); background-size: 113.92px 53.2291px; animation-duration: 8s;"></div><div class="gradient-container gradient-right" data-x="0" data-y="0.8220000000000002" data-width="0.016" data-height="0.051798" style="left: 0px; top: 292.632px; width: 5.696px; height: 18.4401px; --clip-path: polygon(0% -6%, 100% -133%, 100% 130%, 0% 246%); background-size: 11.392px 18.4401px; animation-duration: 29s;"></div><div class="gradient-container gradient-right" data-x="0.016" data-y="0.8220000000000002" data-width="0.14400000000000002" data-height="0.051798" style="left: 5.696px; top: 292.632px; width: 51.264px; height: 18.4401px; --clip-path: polygon(0% -133%, 62% 79%, 146% 202%, 0% 130%); background-size: 102.528px 18.4401px; animation-duration: 91s;"></div><div class="gradient-container gradient-left" data-x="0" data-y="0.8737980000000002" data-width="0.0464" data-height="0.120862" style="left: 0px; top: 311.072px; width: 16.5184px; height: 43.0269px; --clip-path: polygon(0% 63%, 167% 10%, 246% 100%, 0% 100%); background-size: 33.0368px 43.0269px; animation-duration: 44s;"></div><div class="gradient-container gradient-up" data-x="0.0464" data-y="0.8737980000000002" data-width="0.1136" data-height="0.120862" style="left: 16.5184px; top: 311.072px; width: 40.4416px; height: 43.0269px; --clip-path: polygon(27% 10%, 158% 44%, 158% 100%, 60% 100%); background-size: 40.4416px 86.0537px; animation-duration: 40s;"></div><div class="gradient-container gradient-down" data-x="0" data-y="0.9946600000000001" data-width="0.16" data-height="0.005339999999999985" style="left: 0px; top: 354.099px; width: 56.96px; height: 1.90104px; --clip-path: polygon(0% 0%, 141% 0%, 136% 100%, 0% 100%); background-size: 56.96px 3.80208px; animation-duration: 90s;"></div><div class="gradient-container gradient-down" data-x="0.16" data-y="0" data-width="0.8400000000000001" data-height="0.43000000000000005" style="left: 56.96px; top: 0px; width: 299.04px; height: 153.08px; --clip-path: polygon(1% 0%, 100% 0%, 100% 112%, -5% 84%); background-size: 299.04px 306.16px; animation-duration: 21s;"></div><div class="gradient-container gradient-down" data-x="0.16" data-y="0.43000000000000005" data-width="0.025200000000000004" data-height="0.21631499999999995" style="left: 56.96px; top: 153.08px; width: 8.9712px; height: 77.0081px; --clip-path: polygon(-178% -32%, 147% 7%, 335% 64%, -263% 100%); background-size: 8.9712px 154.016px; animation-duration: 26s;"></div><div class="gradient-container gradient-right" data-x="0.16" data-y="0.646315" data-width="0.025200000000000004" data-height="0.034014749999999996" style="left: 56.96px; top: 230.088px; width: 8.9712px; height: 12.1093px; --clip-path: polygon(-263% -1%, 335% -229%, 312% 251%, -89% 109%); background-size: 17.9424px 12.1093px; animation-duration: 82s;"></div><div class="gradient-container gradient-down" data-x="0.16" data-y="0.6803297500000001" data-width="0.025200000000000004" data-height="0.06317025" style="left: 56.96px; top: 242.197px; width: 8.9712px; height: 22.4886px; --clip-path: polygon(-89% 5%, 312% 81%, -138% 183%, -317% 218%); background-size: 8.9712px 44.9772px; animation-duration: 57s;"></div><div class="gradient-container gradient-up" data-x="0.16" data-y="0.7434999999999999" data-width="0.010332000000000003" data-height="0.023085" style="left: 56.96px; top: 264.686px; width: 3.67819px; height: 8.21826px; --clip-path: polygon(-774% 323%, -337% -203%, -207% 11%, 412% 79%); background-size: 3.67819px 16.4365px; animation-duration: 85s;"></div><div class="gradient-container gradient-down" data-x="0.170332" data-y="0.7434999999999999" data-width="0.014868000000000001" data-height="0.023085" style="left: 60.6382px; top: 264.686px; width: 5.29301px; height: 8.21826px; --clip-path: polygon(-304% -203%, -303% 226%, 625% 375%, -213% 11%); background-size: 5.29301px 16.4365px; animation-duration: 14s;"></div><div class="gradient-container gradient-left" data-x="0.16" data-y="0.7665849999999998" data-width="0.025200000000000004" data-height="0.1680588" style="left: 56.96px; top: 272.904px; width: 8.9712px; height: 59.8289px; --clip-path: polygon(169% -3%, 410% 38%, -204% 82%, -292% 100%); background-size: 17.9424px 59.8289px; animation-duration: 15s;"></div><div class="gradient-container gradient-left" data-x="0.16" data-y="0.9346437999999999" data-width="0.025200000000000004" data-height="0.0653562" style="left: 56.96px; top: 332.733px; width: 8.9712px; height: 23.2668px; --clip-path: polygon(-292% 0%, -204% -45%, 176% 100%, 227% 100%); background-size: 17.9424px 23.2668px; animation-duration: 88s;"></div><div class="gradient-container gradient-right" data-x="0.1852" data-y="0.43000000000000005" data-width="0.33765312000000003" data-height="0.10829999999999998" style="left: 65.9312px; top: 153.08px; width: 120.205px; height: 38.5548px; --clip-path: polygon(4% 13%, 111% 8%, 100% 117%, 15% 167%); background-size: 240.409px 38.5548px; animation-duration: 63s;"></div><div class="gradient-container gradient-left" data-x="0.1852" data-y="0.5383" data-width="0.33765312000000003" data-height="0.46169999999999994" style="left: 65.9312px; top: 191.635px; width: 120.205px; height: 164.365px; --clip-path: polygon(15% 16%, 100% 4%, 77% 100%, 6% 100%); background-size: 240.409px 164.365px; animation-duration: 26s;"></div><div class="gradient-container gradient-down" data-x="0.5228531200000001" data-y="0.43000000000000005" data-width="0.26529888000000007" data-height="0.07979999999999998" style="left: 186.136px; top: 153.08px; width: 94.4464px; height: 28.4088px; --clip-path: polygon(14% 10%, 121% -12%, 127% 190%, 6% 109%); background-size: 94.4464px 56.8176px; animation-duration: 10s;"></div><div class="gradient-container gradient-down" data-x="0.5228531200000001" data-y="0.5098" data-width="0.26529888000000007" data-height="0.4902" style="left: 186.136px; top: 181.489px; width: 94.4464px; height: 174.511px; --clip-path: polygon(6% 1%, 127% 15%, 102% 100%, -30% 100%); background-size: 94.4464px 349.022px; animation-duration: 48s;"></div><div class="gradient-container gradient-up" data-x="0.7881520000000002" data-y="0.43000000000000005" data-width="0.09533159999999997" data-height="0.1311" style="left: 280.582px; top: 153.08px; width: 33.938px; height: 46.6716px; --clip-path: polygon(58% -7%, 48% -9%, 85% 117%, -74% 80%); background-size: 33.938px 93.3432px; animation-duration: 87s;"></div><div class="gradient-container gradient-up" data-x="0.8834836000000001" data-y="0.43000000000000005" data-width="0.11651639999999995" data-height="0.1311" style="left: 314.52px; top: 153.08px; width: 41.4798px; height: 46.6716px; --clip-path: polygon(-42% -9%, 100% 39%, 100% 40%, -12% 117%); background-size: 41.4798px 93.3432px; animation-duration: 26s;"></div><div class="gradient-container gradient-right" data-x="0.7881520000000002" data-y="0.5611" data-width="0.21184799999999993" data-height="0.39501" style="left: 280.582px; top: 199.752px; width: 75.4179px; height: 140.624px; --clip-path: polygon(-33% -7%, 100% -20%, 100% 118%, -22% 118%); background-size: 150.836px 140.624px; animation-duration: 9s;"></div><div class="gradient-container gradient-up" data-x="0.7881520000000002" data-y="0.95611" data-width="0.21184799999999993" data-height="0.04389000000000002" style="left: 280.582px; top: 340.375px; width: 75.4179px; height: 15.6248px; --clip-path: polygon(-22% 162%, 100% 164%, 100% 100%, 2% 100%); background-size: 75.4179px 31.2497px; animation-duration: 76s;"></div></div><script>function layoutShards(){var vw=window.innerWidth;var vh=window.innerHeight;document.querySelectorAll(".gradient-container").forEach(function(div){var x=parseFloat(div.dataset.x||0);var y=parseFloat(div.dataset.y||0);var w=parseFloat(div.dataset.width||0);var h=parseFloat(div.dataset.height||0);div.style.left=(x*vw)+"px";div.style.top=(y*vh)+"px";div.style.width=(w*vw)+"px";div.style.height=(h*vh)+"px";if(div.classList.contains("gradient-left")||div.classList.contains("gradient-right")){div.style.backgroundSize=(w*vw*2)+"px "+(h*vh)+"px";}else{div.style.backgroundSize=(w*vw)+"px "+(h*vh*2)+"px";}});}window.addEventListener("resize",layoutShards);window.addEventListener("load",layoutShards);layoutShards();</script></body></html>
<!doctype html><html><head><meta charset="utf-8"><title>smear</title><style> * { margin: 0; padding: 0; box-sizing: border-box; } body, html { width: 100%; height: 100%; overflow: hidden; background: #000; } smear-partition { display: block; width: 100%; height: 100%; position: relative; } smear-canvas { display: block; position: absolute; } smear-canvas canvas { display: block; width: 100%; height: 100%; image-rendering: pixelated; image-rendering: -moz-crisp-edges; image-rendering: crisp-edges; -ms-interpolation-mode: nearest-neighbor; } .smear-container { position: absolute; overflow: hidden; } .smear-container canvas { display: block; width: 100%; height: 100%; image-rendering: pixelated; image-rendering: crisp-edges; } </style></head><body style="margin:0;background-color:black;width:100vw;height:100vh;overflow:hidden;"><div id="puzzle-container"><div class="smear-container" data-x="0" data-y="0" data-width="0.99975" data-height="0.02931432584269663" data-start-edge="top" data-speed="69" data-source-interval="578" data-pixel-size="2" data-color-fg="#FF69B4" data-color-bg="#FF0000" data-source-type="perlin" style="left: 0px; top: 0px; width: 355.911px; height: 10.4359px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.02931432584269663" data-width="0.99975" data-height="0.004813904494382023" data-start-edge="bottom" data-speed="60" data-source-interval="1973" data-pixel-size="6" data-color-fg="#333333" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 10.4359px; width: 355.911px; height: 1.71375px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.03412837078651685" data-width="0.99975" data-height="0.020265533707865168" data-start-edge="top" data-speed="33" data-source-interval="1677" data-pixel-size="2" data-color-fg="#FFFFFF" data-color-bg="#FF00CC" data-source-type="perlin" style="left: 0px; top: 12.1497px; width: 355.911px; height: 7.21453px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.0543938202247191" data-width="0.99975" data-height="0.009673314606741574" data-start-edge="top" data-speed="81" data-source-interval="1288" data-pixel-size="5" data-color-fg="#0000FF" data-color-bg="#FF69B4" data-source-type="perlin" style="left: 0px; top: 19.3642px; width: 355.911px; height: 3.4437px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.06406713483146068" data-width="0.99975" data-height="0.0224336797752809" data-start-edge="right" data-speed="38" data-source-interval="1169" data-pixel-size="3" data-color-fg="#FFFFFF" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 22.8079px; width: 355.911px; height: 7.98639px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.08650084269662921" data-width="0.99975" data-height="0.005733595505617977" data-start-edge="left" data-speed="65" data-source-interval="1731" data-pixel-size="5" data-color-fg="#87CEEB" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 30.7943px; width: 355.911px; height: 2.04116px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.09223455056179776" data-width="0.99975" data-height="0.009095365168539326" data-start-edge="right" data-speed="54" data-source-interval="546" data-pixel-size="4" data-color-fg="#FF69B4" data-color-bg="#FF0000" data-source-type="perlin" style="left: 0px; top: 32.8355px; width: 355.911px; height: 3.23795px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.10132977528089887" data-width="0.99975" data-height="0.028455337078651687" data-start-edge="right" data-speed="29" data-source-interval="962" data-pixel-size="2" data-color-fg="#0000FF" data-color-bg="#FF69B4" data-source-type="perlin" style="left: 0px; top: 36.0734px; width: 355.911px; height: 10.1301px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.12978511235955056" data-width="0.99975" data-height="0.021457331460674158" data-start-edge="top" data-speed="70" data-source-interval="839" data-pixel-size="2" data-color-fg="#800080" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 46.2035px; width: 355.911px; height: 7.63881px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.1512424157303371" data-width="0.99975" data-height="0.003611825842696629" data-start-edge="right" data-speed="65" data-source-interval="916" data-pixel-size="1" data-color-fg="#FFFFFF" data-color-bg="#CCCCCC" data-source-type="perlin" style="left: 0px; top: 53.8423px; width: 355.911px; height: 1.28581px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.15485449438202248" data-width="0.99975" data-height="0.027288707865168536" data-start-edge="left" data-speed="60" data-source-interval="1687" data-pixel-size="6" data-color-fg="#FFFF00" data-color-bg="#FF0000" data-source-type="perlin" style="left: 0px; top: 55.1282px; width: 355.911px; height: 9.71478px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.1821429775280899" data-width="0.99975" data-height="0.025732050561797754" data-start-edge="left" data-speed="66" data-source-interval="1933" data-pixel-size="1" data-color-fg="#FFFFFF" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 64.8429px; width: 355.911px; height: 9.16061px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.207875" data-width="0.99975" data-height="0.01757008426966292" data-start-edge="top" data-speed="83" data-source-interval="1488" data-pixel-size="1" data-color-fg="#FF0000" data-color-bg="#0000FF" data-source-type="perlin" style="left: 0px; top: 74.0035px; width: 355.911px; height: 6.25495px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.2254452247191011" data-width="0.99975" data-height="0.027232162921348314" data-start-edge="top" data-speed="56" data-source-interval="1142" data-pixel-size="2" data-color-fg="#FF00CC" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 80.2585px; width: 355.911px; height: 9.69465px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.25267724719101126" data-width="0.99975" data-height="0.018020168539325844" data-start-edge="top" data-speed="85" data-source-interval="1971" data-pixel-size="6" data-color-fg="#87CEEB" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 89.9531px; width: 355.911px; height: 6.41518px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.2706974719101124" data-width="0.99975" data-height="0.02018955056179775" data-start-edge="top" data-speed="68" data-source-interval="1198" data-pixel-size="5" data-color-fg="#800080" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 96.3683px; width: 355.911px; height: 7.18748px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.2908876404494382" data-width="0.99975" data-height="0.021199747191011236" data-start-edge="left" data-speed="64" data-source-interval="968" data-pixel-size="5" data-color-fg="#FF00CC" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 103.556px; width: 355.911px; height: 7.54711px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.3120870786516854" data-width="0.99975" data-height="0.019605308988764045" data-start-edge="bottom" data-speed="59" data-source-interval="1819" data-pixel-size="2" data-color-fg="#FF0000" data-color-bg="#FFFFFF" data-source-type="perlin" style="left: 0px; top: 111.103px; width: 355.911px; height: 6.97949px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.331691011235955" data-width="0.99975" data-height="0.023859044943820223" data-start-edge="top" data-speed="83" data-source-interval="781" data-pixel-size="4" data-color-fg="#87CEEB" data-color-bg="#808080" data-source-type="perlin" style="left: 0px; top: 118.082px; width: 355.911px; height: 8.49382px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.3555505617977528" data-width="0.99975" data-height="0.007808314606741573" data-start-edge="right" data-speed="53" data-source-interval="1935" data-pixel-size="2" data-color-fg="#87CEEB" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 126.576px; width: 355.911px; height: 2.77976px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.36335955056179775" data-width="0.99975" data-height="0.006966404494382022" data-start-edge="left" data-speed="33" data-source-interval="1865" data-pixel-size="2" data-color-fg="#0000FF" data-color-bg="#666666" data-source-type="perlin" style="left: 0px; top: 129.356px; width: 355.911px; height: 2.48004px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.37032584269662927" data-width="0.99975" data-height="0.020025421348314608" data-start-edge="bottom" data-speed="65" data-source-interval="1008" data-pixel-size="2" data-color-fg="#FFFF00" data-color-bg="#FF0000" data-source-type="perlin" style="left: 0px; top: 131.836px; width: 355.911px; height: 7.12905px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.3903511235955056" data-width="0.99975" data-height="0.02249373595505618" data-start-edge="right" data-speed="99" data-source-interval="788" data-pixel-size="2" data-color-fg="#800080" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 138.965px; width: 355.911px; height: 8.00777px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.41284550561797756" data-width="0.99975" data-height="0.016069578651685394" data-start-edge="top" data-speed="56" data-source-interval="1766" data-pixel-size="2" data-color-fg="#FFFFFF" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 146.973px; width: 355.911px; height: 5.72077px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.42891573033707864" data-width="0.99975" data-height="0.00454376404494382" data-start-edge="top" data-speed="71" data-source-interval="948" data-pixel-size="1" data-color-fg="#FF69B4" data-color-bg="#FF0000" data-source-type="perlin" style="left: 0px; top: 152.694px; width: 355.911px; height: 1.61758px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.43345786516853935" data-width="0.99975" data-height="0.02728859550561798" data-start-edge="right" data-speed="79" data-source-interval="786" data-pixel-size="3" data-color-fg="#87CEEB" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 154.311px; width: 355.911px; height: 9.71474px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.46074719101123596" data-width="0.99975" data-height="0.02272064606741573" data-start-edge="left" data-speed="51" data-source-interval="1464" data-pixel-size="3" data-color-fg="#FF00CC" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 164.026px; width: 355.911px; height: 8.08855px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.4834662921348315" data-width="0.99975" data-height="0.01569112359550562" data-start-edge="bottom" data-speed="64" data-source-interval="919" data-pixel-size="6" data-color-fg="#FFFFFF" data-color-bg="#FF00CC" data-source-type="perlin" style="left: 0px; top: 172.114px; width: 355.911px; height: 5.58604px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.49916011235955055" data-width="0.99975" data-height="0.016917893258426967" data-start-edge="right" data-speed="65" data-source-interval="787" data-pixel-size="6" data-color-fg="#FFFFFF" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 177.701px; width: 355.911px; height: 6.02277px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.5160758426966292" data-width="0.99975" data-height="0.008911404494382023" data-start-edge="left" data-speed="98" data-source-interval="1420" data-pixel-size="1" data-color-fg="#FF8000" data-color-bg="#FFFFFF" data-source-type="perlin" style="left: 0px; top: 183.723px; width: 355.911px; height: 3.17246px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.5249887640449438" data-width="0.99975" data-height="0.017995196629213485" data-start-edge="left" data-speed="45" data-source-interval="927" data-pixel-size="2" data-color-fg="#FF8000" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 186.896px; width: 355.911px; height: 6.40629px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.5429831460674157" data-width="0.99975" data-height="0.026927275280898874" data-start-edge="top" data-speed="84" data-source-interval="1014" data-pixel-size="1" data-color-fg="#FF69B4" data-color-bg="#FF0000" data-source-type="perlin" style="left: 0px; top: 193.302px; width: 355.911px; height: 9.58611px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.5699101123595506" data-width="0.99975" data-height="0.021109691011235953" data-start-edge="bottom" data-speed="55" data-source-interval="1685" data-pixel-size="1" data-color-fg="#FF0000" data-color-bg="#0000FF" data-source-type="perlin" style="left: 0px; top: 202.888px; width: 355.911px; height: 7.51505px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.5910196629213483" data-width="0.99975" data-height="0.027590983146067418" data-start-edge="bottom" data-speed="60" data-source-interval="726" data-pixel-size="3" data-color-fg="#FFFFFF" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 210.403px; width: 355.911px; height: 9.82239px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.6186123595505618" data-width="0.99975" data-height="0.024115421348314604" data-start-edge="right" data-speed="55" data-source-interval="934" data-pixel-size="4" data-color-fg="#FF0000" data-color-bg="#0000FF" data-source-type="perlin" style="left: 0px; top: 220.226px; width: 355.911px; height: 8.58509px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.6427275280898876" data-width="0.99975" data-height="0.027828904494382023" data-start-edge="bottom" data-speed="86" data-source-interval="1999" data-pixel-size="1" data-color-fg="#0000FF" data-color-bg="#666666" data-source-type="perlin" style="left: 0px; top: 228.811px; width: 355.911px; height: 9.90709px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.6705561797752808" data-width="0.99975" data-height="0.020523988764044945" data-start-edge="right" data-speed="63" data-source-interval="714" data-pixel-size="5" data-color-fg="#FF8000" data-color-bg="#FFFFFF" data-source-type="perlin" style="left: 0px; top: 238.718px; width: 355.911px; height: 7.30654px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.6910786516853933" data-width="0.99975" data-height="0.010462837078651685" data-start-edge="top" data-speed="94" data-source-interval="991" data-pixel-size="4" data-color-fg="#FFFF00" data-color-bg="#FF0000" data-source-type="perlin" style="left: 0px; top: 246.024px; width: 355.911px; height: 3.72477px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.7015421348314607" data-width="0.99975" data-height="0.010338960674157304" data-start-edge="bottom" data-speed="98" data-source-interval="1975" data-pixel-size="6" data-color-fg="#FF69B4" data-color-bg="#FF0000" data-source-type="perlin" style="left: 0px; top: 249.749px; width: 355.911px; height: 3.68067px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.7118820224719101" data-width="0.99975" data-height="0.004564747191011236" data-start-edge="bottom" data-speed="63" data-source-interval="992" data-pixel-size="4" data-color-fg="#87CEEB" data-color-bg="#808080" data-source-type="perlin" style="left: 0px; top: 253.43px; width: 355.911px; height: 1.62505px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.7164466292134831" data-width="0.99975" data-height="0.0263011797752809" data-start-edge="bottom" data-speed="39" data-source-interval="672" data-pixel-size="5" data-color-fg="#87CEEB" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 255.055px; width: 355.911px; height: 9.36322px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.742747191011236" data-width="0.99975" data-height="0.015835870786516854" data-start-edge="top" data-speed="70" data-source-interval="1235" data-pixel-size="4" data-color-fg="#FFFFFF" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 264.418px; width: 355.911px; height: 5.63757px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.7585842696629213" data-width="0.99975" data-height="0.012434044943820225" data-start-edge="right" data-speed="66" data-source-interval="1541" data-pixel-size="5" data-color-fg="#FF0000" data-color-bg="#FFFFFF" data-source-type="perlin" style="left: 0px; top: 270.056px; width: 355.911px; height: 4.42652px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.7710168539325843" data-width="0.99975" data-height="0.01935308988764045" data-start-edge="bottom" data-speed="75" data-source-interval="739" data-pixel-size="1" data-color-fg="#0000FF" data-color-bg="#FF69B4" data-source-type="perlin" style="left: 0px; top: 274.482px; width: 355.911px; height: 6.8897px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.790370786516854" data-width="0.99975" data-height="0.02250449438202247" data-start-edge="bottom" data-speed="94" data-source-interval="1465" data-pixel-size="4" data-color-fg="#FFFF00" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 281.372px; width: 355.911px; height: 8.0116px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.8128735955056179" data-width="0.99975" data-height="0.015517921348314607" data-start-edge="left" data-speed="83" data-source-interval="1004" data-pixel-size="3" data-color-fg="#FF8000" data-color-bg="#FFFFFF" data-source-type="perlin" style="left: 0px; top: 289.383px; width: 355.911px; height: 5.52438px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.8283932584269663" data-width="0.99975" data-height="0.02502438202247191" data-start-edge="top" data-speed="56" data-source-interval="1995" data-pixel-size="6" data-color-fg="#FF00CC" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 294.908px; width: 355.911px; height: 8.90868px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.8534157303370786" data-width="0.99975" data-height="0.024326376404494383" data-start-edge="right" data-speed="79" data-source-interval="1712" data-pixel-size="1" data-color-fg="#FFFF00" data-color-bg="#FF0000" data-source-type="perlin" style="left: 0px; top: 303.816px; width: 355.911px; height: 8.66019px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.8777443820224718" data-width="0.99975" data-height="0.013149719101123596" data-start-edge="bottom" data-speed="72" data-source-interval="786" data-pixel-size="3" data-color-fg="#FF0000" data-color-bg="#FFFFFF" data-source-type="perlin" style="left: 0px; top: 312.477px; width: 355.911px; height: 4.6813px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.8908932584269663" data-width="0.99975" data-height="0.02690696629213483" data-start-edge="bottom" data-speed="68" data-source-interval="1217" data-pixel-size="2" data-color-fg="#FF8000" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 317.158px; width: 355.911px; height: 9.57888px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.9178005617977528" data-width="0.99975" data-height="0.01155" data-start-edge="left" data-speed="77" data-source-interval="1905" data-pixel-size="2" data-color-fg="#87CEEB" data-color-bg="#808080" data-source-type="perlin" style="left: 0px; top: 326.737px; width: 355.911px; height: 4.1118px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.9293511235955055" data-width="0.99975" data-height="0.007373202247191011" data-start-edge="left" data-speed="74" data-source-interval="850" data-pixel-size="6" data-color-fg="#FFFFFF" data-color-bg="#FF00CC" data-source-type="perlin" style="left: 0px; top: 330.849px; width: 355.911px; height: 2.62486px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.9367247191011235" data-width="0.99975" data-height="0.02897752808988764" data-start-edge="top" data-speed="86" data-source-interval="1661" data-pixel-size="4" data-color-fg="#FFFF00" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 333.474px; width: 355.911px; height: 10.316px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.9656994382022471" data-width="0.99975" data-height="0.006147275280898876" data-start-edge="bottom" data-speed="68" data-source-interval="1605" data-pixel-size="1" data-color-fg="#FF00CC" data-color-bg="#000000" data-source-type="perlin" style="left: 0px; top: 343.789px; width: 355.911px; height: 2.18843px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.9718483146067416" data-width="0.99975" data-height="0.006478286516853933" data-start-edge="bottom" data-speed="50" data-source-interval="876" data-pixel-size="5" data-color-fg="#0000FF" data-color-bg="#FF69B4" data-source-type="perlin" style="left: 0px; top: 345.978px; width: 355.911px; height: 2.30627px;"><canvas></canvas></div><div class="smear-container" data-x="0" data-y="0.9783258426966291" data-width="0.99975" data-height="0.021424044943820227" data-start-edge="top" data-speed="69" data-source-interval="599" data-pixel-size="2" data-color-fg="#87CEEB" data-color-bg="#808080" data-source-type="perlin" style="left: 0px; top: 348.284px; width: 355.911px; height: 7.62696px;"><canvas></canvas></div></div><script> class SmearCanvas { constructor(c) { this.container = c; this.canvas = c.querySelector("canvas") || document.createElement("canvas"); if (!c.querySelector("canvas")) c.appendChild(this.canvas); this.ctx = this.canvas.getContext("2d"); this.ctx.imageSmoothingEnabled = false; this.imageData = null; this.lastTime = 0; this.animationId = null; this.speed = parseInt(c.dataset.speed) || 50; this.pixelSize = parseInt(c.dataset.pixelSize) || 2; this.sourceInterval = parseInt(c.dataset.sourceInterval) || 1000; this.colorFg = c.dataset.colorFg || "#FFFFFF"; this.colorBg = c.dataset.colorBg || "#000000"; this.sourceType = c.dataset.sourceType || "noise"; this.startEdge = c.dataset.startEdge || "top"; this.fgRGB = this.hexToRGB(this.colorFg); this.bgRGB = this.hexToRGB(this.colorBg); this.moveSpeed = (1000 / 60) / this.speed; this.subPixelX = 0; this.subPixelY = 0; this.leadX = 0; this.leadY = 0; this.initDirection(); this.lastDirectionChange = 0; this.nextDirectionInterval = this.randomInterval(); this.sourceParams = this.generateSourceParams(); this.lastSourceTime = 0; this.resize(); this.initCanvas(); this.generateSourceEdge(); this.initLeadPosition(); this.startAnimation(); this.resizeObserver = new ResizeObserver(() => this.resize()); this.resizeObserver.observe(this.container); } generateSourceParams() { return { steps: 3 + Math.floor(Math.random() * 6), stripeWidth: 2 + Math.floor(Math.random() * 8), checkSize: 1 + Math.floor(Math.random() * 4), phase: 0, dashLength: 3 + Math.floor(Math.random() * 10), gapLength: 2 + Math.floor(Math.random() * 6), density: 0.05 + Math.random() * 0.25, frequency: 1 + Math.random() * 4, sinePhase: Math.random() * Math.PI * 2, seed1: Math.random() * 100, seed2: Math.random() * 100, seed3: Math.random() * 100, counter: Math.floor(Math.random() * 65536), caRule: Math.random() > 0.5 ? 30 : 110 }; } initDirection() { switch (this.startEdge) { case "top": this.dx = 0; this.dy = 1; break; case "bottom": this.dx = 0; this.dy = -1; break; case "left": this.dx = 1; this.dy = 0; break; case "right": this.dx = -1; this.dy = 0; break; default: this.dx = 0; this.dy = 1; } } initLeadPosition() { switch (this.startEdge) { case "top": this.leadX = Math.floor(this.internalWidth / 2); this.leadY = 1; break; case "bottom": this.leadX = Math.floor(this.internalWidth / 2); this.leadY = this.internalHeight - 2; break; case "left": this.leadX = 1; this.leadY = Math.floor(this.internalHeight / 2); break; case "right": this.leadX = this.internalWidth - 2; this.leadY = Math.floor(this.internalHeight / 2); break; } } resize() { var rect = this.container.getBoundingClientRect(); if (rect.width === 0 || rect.height === 0) return; this.internalWidth = Math.ceil(rect.width / this.pixelSize); this.internalHeight = Math.ceil(rect.height / this.pixelSize); var oldImageData = this.imageData; var oldWidth = this.canvas.width; var oldHeight = this.canvas.height; this.canvas.width = this.internalWidth; this.canvas.height = this.internalHeight; this.imageData = this.ctx.createImageData(this.internalWidth, this.internalHeight); if (oldImageData && oldWidth > 0 && oldHeight > 0) { var minW = Math.min(oldWidth, this.internalWidth); var minH = Math.min(oldHeight, this.internalHeight); for (var y = 0; y < minH; y++) { for (var x = 0; x < minW; x++) { var oi = (y * oldWidth + x) * 4; var ni = (y * this.internalWidth + x) * 4; this.imageData.data[ni] = oldImageData.data[oi]; this.imageData.data[ni + 1] = oldImageData.data[oi + 1]; this.imageData.data[ni + 2] = oldImageData.data[oi + 2]; this.imageData.data[ni + 3] = oldImageData.data[oi + 3]; } } } } hexToRGB(hex) { var r = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return r ? { r: parseInt(r[1], 16), g: parseInt(r[2], 16), b: parseInt(r[3], 16) } : { r: 255, g: 255, b: 255 }; } lerpColor(t) { return { r: Math.round(this.bgRGB.r + (this.fgRGB.r - this.bgRGB.r) * t), g: Math.round(this.bgRGB.g + (this.fgRGB.g - this.bgRGB.g) * t), b: Math.round(this.bgRGB.b + (this.fgRGB.b - this.bgRGB.b) * t) }; } getSourceValue(pos, length) { var t = pos / length; switch (this.sourceType) { case "noise": return Math.random() > 0.5 ? this.fgRGB : this.bgRGB; case "linear-gradient": return this.lerpColor(t); case "stepped-gradient": var steps = this.sourceParams.steps || 5; return this.lerpColor(Math.floor(t * steps) / (steps - 1)); case "random-gradient": if (!this.gradientCache || this.gradientCache.length !== length) this.generateRandomGradient(length); return this.lerpColor(this.gradientCache[pos]); case "stripes": return (Math.floor(pos / (this.sourceParams.stripeWidth || 4)) % 2 === 0) ? this.fgRGB : this.bgRGB; case "checkerboard": return ((Math.floor(pos / (this.sourceParams.checkSize || 2)) + (this.sourceParams.phase || 0)) % 2 === 0) ? this.fgRGB : this.bgRGB; case "dashes": var cycle = (this.sourceParams.dashLength || 6) + (this.sourceParams.gapLength || 3); return (pos % cycle < (this.sourceParams.dashLength || 6)) ? this.fgRGB : this.bgRGB; case "dots": return Math.random() < (this.sourceParams.density || 0.15) ? this.fgRGB : this.bgRGB; case "sine": var sv = (Math.sin((t * (this.sourceParams.frequency || 2) * Math.PI * 2) + (this.sourceParams.sinePhase || 0)) + 1) / 2; return this.lerpColor(sv); case "perlin": var p1 = Math.sin(t * 3.7 + this.sourceParams.seed1) * 0.5; var p2 = Math.sin(t * 7.3 + this.sourceParams.seed2) * 0.25; var p3 = Math.sin(t * 13.1 + this.sourceParams.seed3) * 0.125; return this.lerpColor(Math.max(0, Math.min(1, (p1 + p2 + p3 + 0.875) / 1.75))); case "binary-counter": return ((this.sourceParams.counter >> (pos % 16)) & 1) ? this.fgRGB : this.bgRGB; case "cellular-automata": if (!this.caState || this.caState.length !== length) this.initCellularAutomata(length); return this.caState[pos] ? this.fgRGB : this.bgRGB; default: return Math.random() > 0.5 ? this.fgRGB : this.bgRGB; } } generateRandomGradient(length) { var np = 3 + Math.floor(Math.random() * 4); var cp = [0]; for (var i = 1; i < np - 1; i++) cp.push(Math.random()); cp.push(1); cp.sort((a, b) => a - b); var cv = cp.map(() => Math.random()); this.gradientCache = []; for (var i = 0; i < length; i++) { var t = i / length; var si = 0; for (var j = 0; j < cp.length - 1; j++) { if (t >= cp[j] && t <= cp[j + 1]) { si = j; break; } } var st = (t - cp[si]) / (cp[si + 1] - cp[si]); this.gradientCache.push(cv[si] + (cv[si + 1] - cv[si]) * st); } } initCellularAutomata(length) { this.caState = []; for (var i = 0; i < length; i++) this.caState.push(Math.random() > 0.5); } evolveCellularAutomata() { if (!this.caState) return; var rule = this.sourceParams.caRule || 30; var os = [...this.caState]; var len = this.caState.length; for (var i = 0; i < len; i++) { var p = (os[(i - 1 + len) % len] ? 4 : 0) + (os[i] ? 2 : 0) + (os[(i + 1) % len] ? 1 : 0); this.caState[i] = ((rule >> p) & 1) === 1; } } updateSourceParams() { switch (this.sourceType) { case "checkerboard": this.sourceParams.phase = (this.sourceParams.phase + 1) % 2; break; case "sine": this.sourceParams.sinePhase += 0.5; break; case "binary-counter": this.sourceParams.counter++; break; case "cellular-automata": this.evolveCellularAutomata(); break; case "random-gradient": this.gradientCache = null; break; case "perlin": this.sourceParams.seed1 += 0.3; this.sourceParams.seed2 += 0.2; this.sourceParams.seed3 += 0.1; break; } } randomInterval() { return 100 + Math.random() * 900; } changeDirection() { var dirs = [[0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1], [-1, 0], [-1, 1]]; var idx = dirs.findIndex(d => d[0] === this.dx && d[1] === this.dy); if (idx === -1) idx = 0; idx = Math.random() > 0.5 ? (idx + 1) % 8 : (idx + 7) % 8; this.dx = dirs[idx][0]; this.dy = dirs[idx][1]; } initCanvas() { if (!this.imageData) return; var data = this.imageData.data; var w = this.internalWidth, h = this.internalHeight; var isH = (this.startEdge === "top" || this.startEdge === "bottom"); for (var y = 0; y < h; y++) { for (var x = 0; x < w; x++) { var idx = (y * w + x) * 4; var col = this.getSourceValue(isH ? x : y, isH ? w : h); data[idx] = col.r; data[idx + 1] = col.g; data[idx + 2] = col.b; data[idx + 3] = 255; } } this.ctx.putImageData(this.imageData, 0, 0); } generateSourceEdge() { if (!this.imageData) return; this.updateSourceParams(); var data = this.imageData.data; var w = this.internalWidth, h = this.internalHeight; var gen = (getIdx, len) => { for (var i = 0; i < len; i++) { var idx = getIdx(i); var c = this.getSourceValue(i, len); data[idx] = c.r; data[idx + 1] = c.g; data[idx + 2] = c.b; data[idx + 3] = 255; } }; switch (this.startEdge) { case "top": gen(x => x * 4, w); break; case "bottom": gen(x => ((h - 1) * w + x) * 4, w); break; case "left": gen(y => (y * w) * 4, h); break; case "right": gen(y => (y * w + (w - 1)) * 4, h); break; } } getSourceEdgeCoord(x, y) { switch (this.startEdge) { case "top": return y === 0; case "bottom": return y === this.internalHeight - 1; case "left": return x === 0; case "right": return x === this.internalWidth - 1; } return false; } smear() { if (!this.imageData) return; var data = this.imageData.data; var w = this.internalWidth, h = this.internalHeight; this.subPixelX += this.dx * this.moveSpeed; this.subPixelY += this.dy * this.moveSpeed; var moveX = Math.trunc(this.subPixelX), moveY = Math.trunc(this.subPixelY); if (moveX === 0 && moveY === 0) return; this.subPixelX -= moveX; this.subPixelY -= moveY; this.leadX += moveX; this.leadY += moveY; if (this.leadX <= 0 || this.leadX >= w - 1) { this.dx = -this.dx; this.leadX = Math.max(0, Math.min(w - 1, this.leadX)); } if (this.leadY <= 0 || this.leadY >= h - 1) { this.dy = -this.dy; this.leadY = Math.max(0, Math.min(h - 1, this.leadY)); } var oldData = new Uint8ClampedArray(data); for (var y = 0; y < h; y++) { for (var x = 0; x < w; x++) { if (this.getSourceEdgeCoord(x, y)) continue; var srcX = Math.max(0, Math.min(w - 1, x - moveX)); var srcY = Math.max(0, Math.min(h - 1, y - moveY)); var dstIdx = (y * w + x) * 4, srcIdx = (srcY * w + srcX) * 4; data[dstIdx] = oldData[srcIdx]; data[dstIdx + 1] = oldData[srcIdx + 1]; data[dstIdx + 2] = oldData[srcIdx + 2]; data[dstIdx + 3] = oldData[srcIdx + 3]; } } } startAnimation() { var fi = 1000 / 60; var animate = (ts) => { if (!this.lastTime) this.lastTime = ts; if (!this.lastSourceTime) this.lastSourceTime = ts; if (!this.lastDirectionChange) this.lastDirectionChange = ts; if (ts - this.lastDirectionChange >= this.nextDirectionInterval) { this.changeDirection(); this.lastDirectionChange = ts; this.nextDirectionInterval = this.randomInterval(); } if (ts - this.lastSourceTime >= this.sourceInterval) { this.generateSourceEdge(); this.lastSourceTime = ts; } if (ts - this.lastTime >= fi) { this.smear(); if (this.imageData) this.ctx.putImageData(this.imageData, 0, 0); this.lastTime = ts; } this.animationId = requestAnimationFrame(animate); }; this.animationId = requestAnimationFrame(animate); } } function layoutSmears() { var vw = window.innerWidth, vh = window.innerHeight; document.querySelectorAll(".smear-container").forEach(function(div) { var x = parseFloat(div.dataset.x || 0); var y = parseFloat(div.dataset.y || 0); var w = parseFloat(div.dataset.width || 0); var h = parseFloat(div.dataset.height || 0); div.style.left = (x * vw) + "px"; div.style.top = (y * vh) + "px"; div.style.width = (w * vw) + "px"; div.style.height = (h * vh) + "px"; }); } function initSmears() { document.querySelectorAll(".smear-container").forEach(function(c) { if (!c._smearInstance) c._smearInstance = new SmearCanvas(c); }); } window.addEventListener("load", function() { layoutSmears(); initSmears(); }); window.addEventListener("resize", layoutSmears); layoutSmears(); initSmears(); </script></body></html>
<!doctype html><html><head><meta charset="utf-8"><title>shards</title><style> :root { /* Pattern 1: 7 bands */ --color1: #bb44dd; --color2: #000; --pos1: 0%; --pos2: 8.33%; --pos3: 25%; --pos4: 41.67%; --pos5: 58.33%; --pos6: 75%; --pos7: 91.67%; /* Pattern 2: 5 bands */ --color2-1: #6486f5; --color2-2: #000; --pos2-1: 0%; --pos2-2: 12.5%; --pos2-3: 37.5%; --pos2-4: 62.5%; --pos2-5: 87.5%; /* Pattern 3: 3 bands */ --color3-1: #ffffff; --color3-2: #000; --color4-1: #ff00cc; --color4-2: #000; --pos3-1: 0%; --pos3-2: 50%; --pos3-3: 100%; } body { background-color: black; margin: 0; padding: 0; width: 100vw; height: 100vh; overflow: hidden; } .gradient-container { position: absolute; overflow: hidden; transition: all 0.3s ease; clip-path: var(--clip-path); /* Emboss effect */ box-shadow: inset 2px 2px 5px rgba(255, 255, 255, 0.4), inset -2px -2px 5px rgba(0, 0, 0, 0.4); /* Add more depth with a subtle border */ } .gradient-up { background-image: repeating-linear-gradient( to bottom, var(--color1) var(--pos1), var(--color2) var(--pos2), var(--color1) var(--pos3), var(--color2) var(--pos4), var(--color1) var(--pos5), var(--color2) var(--pos6), var(--color1) var(--pos7) ); animation: moveUpwards 5s linear infinite; } .gradient-down { background-image: repeating-linear-gradient( to bottom, var(--color2-1) var(--pos2-1), var(--color2-2) var(--pos2-2), var(--color2-1) var(--pos2-3), var(--color2-2) var(--pos2-4), var(--color2-1) var(--pos2-5) ); animation: moveDownwards 5s linear infinite; } .gradient-left { background-image: repeating-linear-gradient( to right, var(--color3-1) var(--pos3-1), var(--color3-2) var(--pos3-2), var(--color3-1) var(--pos3-3) ); animation: moveLeft 5s linear infinite; } .gradient-right { background-image: repeating-linear-gradient( to right, var(--color4-1) var(--pos1), var(--color4-2) var(--pos2), var(--color4-1) var(--pos3), var(--color4-2) var(--pos4), var(--color4-1) var(--pos5), var(--color4-2) var(--pos6), var(--color4-1) var(--pos7) ); animation: moveRight 5s linear infinite; } .strobe { background-color: #000; } @keyframes strobeEffect { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes moveUpwards { 0% { background-position: 0 100%; } 100% { background-position: 0 -100%; } } @keyframes moveDownwards { 0% { background-position: 0 -100%; } 100% { background-position: 0 100%; } } @keyframes moveLeft { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } } @keyframes moveRight { 0% { background-position: -100% 0; } 100% { background-position: 100% 0; } } :root{--color1:#241a17;--color2:#000;--pos1:0%;--pos2:8.33%;--pos3:25%;--pos4:41.67%;--pos5:58.33%;--pos6:75%;--pos7:91.67%;--color2-1:#1d1d1d;--color2-2:#000;--pos2-1:0%;--pos2-2:12.5%;--pos2-3:37.5%;--pos2-4:62.5%;--pos2-5:87.5%;--color3-1:#494949;--color3-2:#000;--color4-1:#c6c6c6;--color4-2:#000;--pos3-1:0%;--pos3-2:50%;--pos3-3:100%;}:root{--color1: #241a17; --color2-1: #1d1d1d; --color3-1: #494949; --color4-1: #c6c6c6;}</style></head><body style="margin:0;background-color:black;width:100vw;height:100vh;overflow:hidden;"><div id="puzzle-container"><div class="gradient-container gradient-up" data-x="0" data-y="0" data-width="0.1628" data-height="0.14" style="left: 0px; top: 0px; width: 57.9568px; height: 49.84px; --clip-path: polygon(0% 0%, 144% 0%, 112% 133%, 0% 95%); background-size: 57.9568px 99.68px; animation-duration: 47s;"></div><div class="gradient-container gradient-down" data-x="0.1628" data-y="0" data-width="0.039368" data-height="0.11620000000000001" style="left: 57.9568px; top: 0px; width: 14.015px; height: 41.3672px; --clip-path: polygon(183% 0%, 165% 0%, 130% 119%, -127% 63%); background-size: 14.015px 82.7344px; animation-duration: 4s;"></div><div class="gradient-container gradient-down" data-x="0.1628" data-y="0.11620000000000001" data-width="0.039368" data-height="0.023799999999999998" style="left: 57.9568px; top: 41.3672px; width: 14.015px; height: 8.4728px; --clip-path: polygon(-127% -183%, 130% 92%, 219% -187%, 49% 296%); background-size: 14.015px 16.9456px; animation-duration: 50s;"></div><div class="gradient-container gradient-right" data-x="0.202168" data-y="0" data-width="0.00503496" data-height="0.14" style="left: 71.9718px; top: 0px; width: 1.79245px; height: 49.84px; --clip-path: polygon(507% 0%, -687% 0%, 837% 46%, 931% 51%); background-size: 3.58489px 49.84px; animation-duration: 4s;"></div><div class="gradient-container gradient-right" data-x="0.20720296000000002" data-y="0" data-width="0.16279703999999998" data-height="0.14" style="left: 73.7643px; top: 0px; width: 57.9557px; height: 49.84px; --clip-path: polygon(-24% 0%, 84% 0%, 140% 90%, 23% 46%); background-size: 115.911px 49.84px; animation-duration: 78s;"></div><div class="gradient-container gradient-down" data-x="0" data-y="0.14" data-width="0.3626" data-height="0.36" style="left: 0px; top: 49.84px; width: 129.086px; height: 128.16px; --clip-path: polygon(0% -2%, 92% 8%, 102% 114%, 0% 105%); background-size: 129.086px 256.32px; animation-duration: 67s;"></div><div class="gradient-container gradient-left" data-x="0.3626" data-y="0.14" data-width="0.007399999999999999" data-height="0.0252" style="left: 129.086px; top: 49.84px; width: 2.6344px; height: 8.9712px; --clip-path: polygon(-388% 119%, 988% -56%, 903% -4%, 690% 88%); background-size: 5.2688px 8.9712px; animation-duration: 67s;"></div><div class="gradient-container gradient-down" data-x="0.3626" data-y="0.16519999999999999" data-width="0.007399999999999999" data-height="0.3348" style="left: 129.086px; top: 58.8112px; width: 2.6344px; height: 119.189px; --clip-path: polygon(690% -1%, 903% -8%, 204% 109%, 116% 115%); background-size: 2.6344px 238.378px; animation-duration: 27s;"></div><div class="gradient-container gradient-down" data-x="0" data-y="0.5" data-width="0.30339999999999995" data-height="0.065" style="left: 0px; top: 178px; width: 108.01px; height: 23.14px; --clip-path: polygon(0% 26%, 102% 94%, 109% 53%, 0% 176%); background-size: 108.01px 46.28px; animation-duration: 84s;"></div><div class="gradient-container gradient-down" data-x="0.30339999999999995" data-y="0.5" data-width="0.05061600000000002" data-height="0.065" style="left: 108.01px; top: 178px; width: 18.0193px; height: 23.14px; --clip-path: polygon(10% 94%, 123% 110%, 105% 119%, 57% 53%); background-size: 18.0193px 46.28px; animation-duration: 22s;"></div><div class="gradient-container gradient-left" data-x="0.354016" data-y="0.5" data-width="0.015984" data-height="0.046799999999999994" style="left: 126.03px; top: 178px; width: 5.6903px; height: 16.6608px; --clip-path: polygon(73% 153%, 148% 61%, -300% -50%, 322% -58%); background-size: 11.3806px 16.6608px; animation-duration: 66s;"></div><div class="gradient-container gradient-up" data-x="0.354016" data-y="0.5468" data-width="0.015984" data-height="0.018200000000000008" style="left: 126.03px; top: 194.661px; width: 5.6903px; height: 6.4792px; --clip-path: polygon(322% -407%, -300% -384%, -341% -66%, 16% 167%); background-size: 5.6903px 12.9584px; animation-duration: 2s;"></div><div class="gradient-container gradient-left" data-x="0" data-y="0.565" data-width="0.07736699999999999" data-height="0.1044" style="left: 0px; top: 201.14px; width: 27.5427px; height: 37.1664px; --clip-path: polygon(0% 47%, 11% -25%, 9% 39%, 0% 151%); background-size: 55.0853px 37.1664px; animation-duration: 61s;"></div><div class="gradient-container gradient-right" data-x="0.07736699999999999" data-y="0.565" data-width="0.074333" data-height="0.1044" style="left: 27.5427px; top: 201.14px; width: 26.4625px; height: 37.1664px; --clip-path: polygon(-92% -25%, 91% 67%, 196% 40%, -95% 39%); background-size: 52.9251px 37.1664px; animation-duration: 17s;"></div><div class="gradient-container gradient-down" data-x="0.15169999999999997" data-y="0.565" data-width="0.017464" data-height="0.1044" style="left: 54.0052px; top: 201.14px; width: 6.21718px; height: 37.1664px; --clip-path: polygon(-37% 67%, 253% -52%, 147% 29%, 411% 40%); background-size: 6.21718px 74.3328px; animation-duration: 3s;"></div><div class="gradient-container gradient-left" data-x="0.16916399999999998" data-y="0.565" data-width="0.200836" data-height="0.1044" style="left: 60.2224px; top: 201.14px; width: 71.4976px; height: 37.1664px; --clip-path: polygon(13% -52%, 65% -29%, 94% 160%, 4% 29%); background-size: 142.995px 37.1664px; animation-duration: 15s;"></div><div class="gradient-container gradient-down" data-x="0" data-y="0.6694" data-width="0.3293" data-height="0.3306" style="left: 0px; top: 238.306px; width: 117.231px; height: 117.694px; --clip-path: polygon(0% 16%, 78% -5%, 108% 100%, 0% 100%); background-size: 117.231px 235.387px; animation-duration: 11s;"></div><div class="gradient-container gradient-left" data-x="0.3293" data-y="0.6694" data-width="0.04069999999999999" data-height="0.09917999999999999" style="left: 117.231px; top: 238.306px; width: 14.4892px; height: 35.3081px; --clip-path: polygon(-180% -17%, 69% 63%, 11% 31%, 18% 129%); background-size: 28.9784px 35.3081px; animation-duration: 81s;"></div><div class="gradient-container gradient-left" data-x="0.3293" data-y="0.76858" data-width="0.04069999999999999" data-height="0.23142000000000004" style="left: 117.231px; top: 273.614px; width: 14.4892px; height: 82.3855px; --clip-path: polygon(18% 12%, 11% -30%, 190% 100%, 64% 100%); background-size: 28.9784px 82.3855px; animation-duration: 23s;"></div><div class="gradient-container gradient-up" data-x="0.37" data-y="0" data-width="0.63" data-height="0.8600000000000001" style="left: 131.72px; top: 0px; width: 224.28px; height: 306.16px; --clip-path: polygon(-4% 0%, 100% 0%, 100% 101%, -2% 94%); background-size: 224.28px 612.32px; animation-duration: 16s;"></div><div class="gradient-container gradient-down" data-x="0.37" data-y="0.8600000000000001" data-width="0.0378" data-height="0.11479999999999994" style="left: 131.72px; top: 306.16px; width: 13.4568px; height: 40.8688px; --clip-path: polygon(-37% -46%, 122% 23%, -58% 100%, -169% 100%); background-size: 13.4568px 81.7376px; animation-duration: 75s;"></div><div class="gradient-container gradient-left" data-x="0.37" data-y="0.9748" data-width="0.021780360000000002" data-height="0.02519999999999999" style="left: 131.72px; top: 347.029px; width: 7.75381px; height: 8.9712px; --clip-path: polygon(-293% 0%, 220% 0%, 175% 100%, 169% 100%); background-size: 15.5076px 8.9712px; animation-duration: 23s;"></div><div class="gradient-container gradient-up" data-x="0.39178036" data-y="0.9748" data-width="0.003545639999999999" data-height="0.02519999999999999" style="left: 139.474px; top: 347.029px; width: 1.26225px; height: 8.9712px; --clip-path: polygon(737% 0%, 2077% 0%, 1164% 100%, 463% 100%); background-size: 1.26225px 17.9424px; animation-duration: 70s;"></div><div class="gradient-container gradient-down" data-x="0.39532599999999996" data-y="0.9748" data-width="0.012474" data-height="0.013859999999999994" style="left: 140.736px; top: 347.029px; width: 4.44074px; height: 4.93416px; --clip-path: polygon(562% 0%, -378% 0%, 485% 100%, -453% 100%); background-size: 4.44074px 9.86832px; animation-duration: 2s;"></div><div class="gradient-container gradient-up" data-x="0.39532599999999996" data-y="0.98866" data-width="0.012474" data-height="0.011339999999999996" style="left: 140.736px; top: 351.963px; width: 4.44074px; height: 4.03704px; --clip-path: polygon(-453% 0%, 485% 0%, 569% 100%, 302% 100%); background-size: 4.44074px 8.07408px; animation-duration: 39s;"></div><div class="gradient-container gradient-left" data-x="0.40780000000000005" data-y="0.8600000000000001" data-width="0.5922" data-height="0.13999999999999993" style="left: 145.177px; top: 306.16px; width: 210.823px; height: 49.84px; --clip-path: polygon(1% 19%, 100% 8%, 100% 100%, 10% 100%); background-size: 421.646px 49.84px; animation-duration: 94s;"></div></div><script>function layoutShards(){var vw=window.innerWidth;var vh=window.innerHeight;document.querySelectorAll(".gradient-container").forEach(function(div){var x=parseFloat(div.dataset.x||0);var y=parseFloat(div.dataset.y||0);var w=parseFloat(div.dataset.width||0);var h=parseFloat(div.dataset.height||0);div.style.left=(x*vw)+"px";div.style.top=(y*vh)+"px";div.style.width=(w*vw)+"px";div.style.height=(h*vh)+"px";if(div.classList.contains("gradient-left")||div.classList.contains("gradient-right")){div.style.backgroundSize=(w*vw*2)+"px "+(h*vh)+"px";}else{div.style.backgroundSize=(w*vw)+"px "+(h*vh*2)+"px";}});}window.addEventListener("resize",layoutShards);window.addEventListener("load",layoutShards);layoutShards();</script></body></html>
<!doctype html><html><head><meta charset="utf-8"><title>shards</title><style> :root { /* Pattern 1: 7 bands */ --color1: #bb44dd; --color2: #000; --pos1: 0%; --pos2: 8.33%; --pos3: 25%; --pos4: 41.67%; --pos5: 58.33%; --pos6: 75%; --pos7: 91.67%; /* Pattern 2: 5 bands */ --color2-1: #6486f5; --color2-2: #000; --pos2-1: 0%; --pos2-2: 12.5%; --pos2-3: 37.5%; --pos2-4: 62.5%; --pos2-5: 87.5%; /* Pattern 3: 3 bands */ --color3-1: #ffffff; --color3-2: #000; --color4-1: #ff00cc; --color4-2: #000; --pos3-1: 0%; --pos3-2: 50%; --pos3-3: 100%; } body { background-color: black; margin: 0; padding: 0; width: 100vw; height: 100vh; overflow: hidden; } .gradient-container { position: absolute; overflow: hidden; transition: all 0.3s ease; clip-path: var(--clip-path); /* Emboss effect */ box-shadow: inset 2px 2px 5px rgba(255, 255, 255, 0.4), inset -2px -2px 5px rgba(0, 0, 0, 0.4); /* Add more depth with a subtle border */ } .gradient-up { background-image: repeating-linear-gradient( to bottom, var(--color1) var(--pos1), var(--color2) var(--pos2), var(--color1) var(--pos3), var(--color2) var(--pos4), var(--color1) var(--pos5), var(--color2) var(--pos6), var(--color1) var(--pos7) ); animation: moveUpwards 5s linear infinite; } .gradient-down { background-image: repeating-linear-gradient( to bottom, var(--color2-1) var(--pos2-1), var(--color2-2) var(--pos2-2), var(--color2-1) var(--pos2-3), var(--color2-2) var(--pos2-4), var(--color2-1) var(--pos2-5) ); animation: moveDownwards 5s linear infinite; } .gradient-left { background-image: repeating-linear-gradient( to right, var(--color3-1) var(--pos3-1), var(--color3-2) var(--pos3-2), var(--color3-1) var(--pos3-3) ); animation: moveLeft 5s linear infinite; } .gradient-right { background-image: repeating-linear-gradient( to right, var(--color4-1) var(--pos1), var(--color4-2) var(--pos2), var(--color4-1) var(--pos3), var(--color4-2) var(--pos4), var(--color4-1) var(--pos5), var(--color4-2) var(--pos6), var(--color4-1) var(--pos7) ); animation: moveRight 5s linear infinite; } .strobe { background-color: #000; } @keyframes strobeEffect { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes moveUpwards { 0% { background-position: 0 100%; } 100% { background-position: 0 -100%; } } @keyframes moveDownwards { 0% { background-position: 0 -100%; } 100% { background-position: 0 100%; } } @keyframes moveLeft { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } } @keyframes moveRight { 0% { background-position: -100% 0; } 100% { background-position: 100% 0; } } :root{--color1:#c6c6c6;--color2:#000;--pos1:0%;--pos2:8.33%;--pos3:25%;--pos4:41.67%;--pos5:58.33%;--pos6:75%;--pos7:91.67%;--color2-1:#1d1d1d;--color2-2:#000;--pos2-1:0%;--pos2-2:12.5%;--pos2-3:37.5%;--pos2-4:62.5%;--pos2-5:87.5%;--color3-1:#0600ff;--color3-2:#000;--color4-1:#1d1d1d;--color4-2:#000;--pos3-1:0%;--pos3-2:50%;--pos3-3:100%;}:root{--color1: #c6c6c6; --color2-1: #1d1d1d; --color3-1: #0600ff; --color4-1: #1d1d1d;}</style></head><body style="margin:0;background-color:black;width:100vw;height:100vh;overflow:hidden;"><div id="puzzle-container"><div class="gradient-container gradient-right" data-x="0" data-y="0" data-width="0.45999999999999996" data-height="0.56" style="left: 0px; top: 0px; width: 163.76px; height: 199.36px; --clip-path: polygon(0% 0%, 99% 0%, 104% 99%, 0% 102%); background-size: 327.52px 199.36px; animation-duration: 83s;"></div><div class="gradient-container gradient-left" data-x="0" data-y="0.56" data-width="0.032429999999999994" data-height="0.04949999999999999" style="left: 0px; top: 199.36px; width: 11.5451px; height: 17.622px; --clip-path: polygon(0% 19%, -130% 152%, 317% 83%, 0% -10%); background-size: 23.0902px 17.622px; animation-duration: 75s;"></div><div class="gradient-container gradient-up" data-x="0.032429999999999994" data-y="0.56" data-width="0.03656999999999999" data-height="0.04949999999999999" style="left: 11.5451px; top: 199.36px; width: 13.0189px; height: 17.622px; --clip-path: polygon(-204% 152%, 4% 41%, 164% 26%, 193% 83%); background-size: 13.0189px 35.244px; animation-duration: 67s;"></div><div class="gradient-container gradient-right" data-x="0" data-y="0.6095" data-width="0.06899999999999999" data-height="0.16829999999999995" style="left: 0px; top: 216.982px; width: 24.564px; height: 59.9148px; --clip-path: polygon(0% -32%, 134% -22%, 36% 111%, 0% 83%); background-size: 49.128px 59.9148px; animation-duration: 99s;"></div><div class="gradient-container gradient-down" data-x="0" data-y="0.7777999999999999" data-width="0.06899999999999999" data-height="0.11219999999999997" style="left: 0px; top: 276.897px; width: 24.564px; height: 39.9432px; --clip-path: polygon(0% -26%, 36% 17%, 25% 125%, 0% 151%); background-size: 24.564px 79.8864px; animation-duration: 83s;"></div><div class="gradient-container gradient-left" data-x="0" data-y="0.8899999999999999" data-width="0.06899999999999999" data-height="0.08800000000000002" style="left: 0px; top: 316.84px; width: 24.564px; height: 31.328px; --clip-path: polygon(0% 65%, 25% 32%, 171% 100%, 0% 100%); background-size: 49.128px 31.328px; animation-duration: 4s;"></div><div class="gradient-container gradient-up" data-x="0" data-y="0.978" data-width="0.010349999999999998" data-height="0.022000000000000002" style="left: 0px; top: 348.168px; width: 3.6846px; height: 7.832px; --clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%); background-size: 3.6846px 15.664px; animation-duration: 8s;"></div><div class="gradient-container gradient-up" data-x="0.010349999999999998" data-y="0.978" data-width="0.058649999999999994" data-height="0.022000000000000002" style="left: 3.6846px; top: 348.168px; width: 20.8794px; height: 7.832px; --clip-path: polygon(0% 0%, 184% 0%, 217% 100%, 0% 100%); background-size: 20.8794px 15.664px; animation-duration: 99s;"></div><div class="gradient-container gradient-left" data-x="0.06899999999999999" data-y="0.56" data-width="0.05560020000000001" data-height="0.198" style="left: 24.564px; top: 199.36px; width: 19.7937px; height: 70.488px; --clip-path: polygon(-63% 10%, 1% 29%, 68% 106%, -70% 82%); background-size: 39.5873px 70.488px; animation-duration: 16s;"></div><div class="gradient-container gradient-down" data-x="0.1246002" data-y="0.56" data-width="0.2532898" data-height="0.198" style="left: 44.3577px; top: 199.36px; width: 90.1712px; height: 70.488px; --clip-path: polygon(-22% 29%, 88% -29%, 81% 136%, -7% 106%); background-size: 90.1712px 140.976px; animation-duration: 76s;"></div><div class="gradient-container gradient-up" data-x="0.37789" data-y="0.56" data-width="0.08210999999999996" data-height="0.17622" style="left: 134.529px; top: 199.36px; width: 29.2312px; height: 62.7343px; --clip-path: polygon(-37% -32%, 125% -2%, 64% 85%, -4% 140%); background-size: 29.2312px 125.469px; animation-duration: 16s;"></div><div class="gradient-container gradient-right" data-x="0.37789" data-y="0.7362200000000001" data-width="0.08210999999999996" data-height="0.021780000000000008" style="left: 134.529px; top: 262.094px; width: 29.2312px; height: 7.75368px; --clip-path: polygon(-4% 327%, 64% -122%, 49% 103%, -58% 429%); background-size: 58.4623px 7.75368px; animation-duration: 26s;"></div><div class="gradient-container gradient-down" data-x="0.06899999999999999" data-y="0.758" data-width="0.391" data-height="0.24199999999999997" style="left: 24.564px; top: 269.848px; width: 139.196px; height: 86.152px; --clip-path: polygon(-10% -15%, 89% 0%, 96% 100%, 18% 100%); background-size: 139.196px 172.304px; animation-duration: 22s;"></div><div class="gradient-container gradient-right" data-x="0.45999999999999996" data-y="0" data-width="0.015054336000000003" data-height="0.05" style="left: 163.76px; top: 0px; width: 5.35934px; height: 17.8px; --clip-path: polygon(-22% 0%, 341% 0%, 466% -10%, 251% 225%); background-size: 10.7187px 17.8px; animation-duration: 39s;"></div><div class="gradient-container gradient-up" data-x="0.47505433599999997" data-y="0" data-width="0.05337446400000001" data-height="0.05" style="left: 169.119px; top: 0px; width: 19.0013px; height: 17.8px; --clip-path: polygon(68% 0%, 107% 0%, 105% 194%, 103% -10%); background-size: 19.0013px 35.6px; animation-duration: 24s;"></div><div class="gradient-container gradient-left" data-x="0.5284287999999999" data-y="0" data-width="0.03525119999999999" data-height="0.026000000000000002" style="left: 188.121px; top: 0px; width: 12.5494px; height: 9.256px; --clip-path: polygon(10% 0%, 32% 0%, 217% 100%, 119% 100%); background-size: 25.0989px 9.256px; animation-duration: 90s;"></div><div class="gradient-container gradient-up" data-x="0.5284287999999999" data-y="0.026000000000000002" data-width="0.03525119999999999" data-height="0.024" style="left: 188.121px; top: 9.256px; width: 12.5494px; height: 8.544px; --clip-path: polygon(119% 0%, 217% 0%, 77% 227%, 7% 297%); background-size: 12.5494px 17.088px; animation-duration: 36s;"></div><div class="gradient-container gradient-right" data-x="0.56368" data-y="0" data-width="0.014515200000000002" data-height="0.0425" style="left: 200.67px; top: 0px; width: 5.16741px; height: 15.13px; --clip-path: polygon(-166% 0%, 460% 0%, 330% 120%, 475% 150%); background-size: 10.3348px 15.13px; animation-duration: 69s;"></div><div class="gradient-container gradient-left" data-x="0.56368" data-y="0.0425" data-width="0.014515200000000002" data-height="0.0075" style="left: 200.67px; top: 15.13px; width: 5.16741px; height: 2.67px; --clip-path: polygon(475% 283%, 330% 113%, -120% -744%, -55% 507%); background-size: 10.3348px 2.67px; animation-duration: 69s;"></div><div class="gradient-container gradient-down" data-x="0.5781952" data-y="0" data-width="0.07049548800000001" data-height="0.05" style="left: 205.837px; top: 0px; width: 25.0964px; height: 17.8px; --clip-path: polygon(74% 0%, 176% 0%, 9% 243%, -45% -27%); background-size: 25.0964px 35.6px; animation-duration: 23s;"></div><div class="gradient-container gradient-up" data-x="0.648690688" data-y="0" data-width="0.15690931200000002" data-height="0.05" style="left: 230.934px; top: 0px; width: 55.8597px; height: 17.8px; --clip-path: polygon(34% 0%, 110% 0%, 114% 36%, -41% 243%); background-size: 55.8597px 35.6px; animation-duration: 59s;"></div><div class="gradient-container gradient-left" data-x="0.8055999999999999" data-y="0" data-width="0.00723168" data-height="0.02" style="left: 286.794px; top: 0px; width: 2.57448px; height: 7.12px; --clip-path: polygon(220% 0%, -992% 0%, 1189% 100%, 10% 100%); background-size: 5.14896px 7.12px; animation-duration: 69s;"></div><div class="gradient-container gradient-left" data-x="0.8055999999999999" data-y="0.02" data-width="0.00723168" data-height="0.03" style="left: 286.794px; top: 7.12px; width: 2.57448px; height: 10.68px; --clip-path: polygon(10% 0%, 1189% 0%, -8% 230%, 312% -7%); background-size: 5.14896px 10.68px; animation-duration: 86s;"></div><div class="gradient-container gradient-right" data-x="0.81283168" data-y="0" data-width="0.020152281600000002" data-height="0.05" style="left: 289.368px; top: 0px; width: 7.17421px; height: 17.8px; --clip-path: polygon(-392% 0%, 419% 0%, -90% 3%, -39% 178%); background-size: 14.3484px 17.8px; animation-duration: 69s;"></div><div class="gradient-container gradient-left" data-x="0.8329839615999999" data-y="0" data-width="0.032880038400000006" data-height="0.05" style="left: 296.542px; top: 0px; width: 11.7053px; height: 17.8px; --clip-path: polygon(196% 0%, -87% 0%, -48% 61%, -116% 3%); background-size: 23.4106px 17.8px; animation-duration: 42s;"></div><div class="gradient-container gradient-up" data-x="0.8658639999999999" data-y="0" data-width="0.13413599999999998" data-height="0.05" style="left: 308.248px; top: 0px; width: 47.7524px; height: 17.8px; --clip-path: polygon(-46% 0%, 100% 0%, 100% 170%, -36% 61%); background-size: 47.7524px 35.6px; animation-duration: 23s;"></div><div class="gradient-container gradient-down" data-x="0.45999999999999996" data-y="0.05" data-width="0.54" data-height="0.6425799999999999" style="left: 163.76px; top: 17.8px; width: 192.24px; height: 228.758px; --clip-path: polygon(7% 10%, 100% 5%, 100% 101%, 2% 97%); background-size: 192.24px 457.517px; animation-duration: 45s;"></div><div class="gradient-container gradient-left" data-x="0.45999999999999996" data-y="0.69258" data-width="0.324" data-height="0.20292" style="left: 163.76px; top: 246.558px; width: 115.344px; height: 72.2395px; --clip-path: polygon(4% -8%, 81% -28%, 76% 115%, 11% 139%); background-size: 230.688px 72.2395px; animation-duration: 78s;"></div><div class="gradient-container gradient-down" data-x="0.7839999999999999" data-y="0.69258" data-width="0.17064" data-height="0.20292" style="left: 279.104px; top: 246.558px; width: 60.7478px; height: 72.2395px; --clip-path: polygon(-37% -28%, 125% 2%, 132% 97%, -45% 115%); background-size: 60.7478px 144.479px; animation-duration: 9s;"></div><div class="gradient-container gradient-left" data-x="0.9546399999999999" data-y="0.69258" data-width="0.04536000000000001" data-height="0.20292" style="left: 339.852px; top: 246.558px; width: 16.1482px; height: 72.2395px; --clip-path: polygon(93% 2%, 100% 2%, 100% 69%, 119% 97%); background-size: 32.2963px 72.2395px; animation-duration: 65s;"></div><div class="gradient-container gradient-left" data-x="0.45999999999999996" data-y="0.8955" data-width="0.048600000000000004" data-height="0.08151" style="left: 163.76px; top: 318.798px; width: 17.3016px; height: 29.0176px; --clip-path: polygon(71% 98%, 138% -66%, 179% 100%, 146% 100%); background-size: 34.6032px 29.0176px; animation-duration: 10s;"></div><div class="gradient-container gradient-left" data-x="0.45999999999999996" data-y="0.97701" data-width="0.027216" data-height="0.022989999999999997" style="left: 163.76px; top: 347.816px; width: 9.6889px; height: 8.18444px; --clip-path: polygon(261% 0%, -142% 0%, -182% 100%, -60% 100%); background-size: 19.3778px 8.18444px; animation-duration: 33s;"></div><div class="gradient-container gradient-left" data-x="0.487216" data-y="0.97701" data-width="0.021384000000000004" data-height="0.022989999999999997" style="left: 173.449px; top: 347.816px; width: 7.6127px; height: 8.18444px; --clip-path: polygon(-308% 0%, 279% 0%, -263% 100%, -360% 100%); background-size: 15.2254px 8.18444px; animation-duration: 82s;"></div><div class="gradient-container gradient-up" data-x="0.5085999999999999" data-y="0.8955" data-width="0.47665799999999997" data-height="0.1045" style="left: 181.062px; top: 318.798px; width: 169.69px; height: 37.202px; --clip-path: polygon(4% -52%, 100% -66%, 100% 100%, -16% 100%); background-size: 169.69px 74.404px; animation-duration: 81s;"></div><div class="gradient-container gradient-up" data-x="0.985258" data-y="0.8955" data-width="0.014742000000000012" data-height="0.1045" style="left: 350.752px; top: 318.798px; width: 5.24815px; height: 37.202px; --clip-path: polygon(0% -66%, 100% -59%, 100% 100%, 0% 100%); background-size: 5.24815px 74.404px; animation-duration: 40s;"></div></div><script>function layoutShards(){var vw=window.innerWidth;var vh=window.innerHeight;document.querySelectorAll(".gradient-container").forEach(function(div){var x=parseFloat(div.dataset.x||0);var y=parseFloat(div.dataset.y||0);var w=parseFloat(div.dataset.width||0);var h=parseFloat(div.dataset.height||0);div.style.left=(x*vw)+"px";div.style.top=(y*vh)+"px";div.style.width=(w*vw)+"px";div.style.height=(h*vh)+"px";if(div.classList.contains("gradient-left")||div.classList.contains("gradient-right")){div.style.backgroundSize=(w*vw*2)+"px "+(h*vh)+"px";}else{div.style.backgroundSize=(w*vw)+"px "+(h*vh*2)+"px";}});}window.addEventListener("resize",layoutShards);window.addEventListener("load",layoutShards);layoutShards();</script></body></html>