memoscan
← all memos

Memo 0xcdfec7a3…742696 on Ethereum

0xc485e340…8dfd·#25,809,445·view on Etherscan
<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> html, body { position: relative; width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden; background: black; } @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } g.blink-fast { animation: blink 0.1s steps(1, start) infinite; } g.blink-slow { animation: blink var(--ric-blink-slow) steps(1, start) infinite; } #art { width: 100%; height: 100%; background: black; } #art img { max-width: 100%; height: 100%; image-rendering: -webkit-optimize-contrast; -ms-interpolation-mode: nearest-neighbor; image-rendering: -moz-crisp-edges; pointer-events: none; } #art img, #art image { image-rendering: auto; } /* start with a blank screen */ #art { opacity: 0; visibility: hidden; } /* when ready, allow it to render */ html.ready #art { opacity: 1; visibility: visible; } @keyframes reveal { from { opacity: 0; } to { opacity: 1; } } .reveal { opacity: 0; animation: reveal 0.1s steps(1, start) forwards; } /* Phase 3: unfold through center with ease */ g.phase3-unfold{ transform-origin: 400px 400px; /* center of 800x800 */ animation: phase3Unfold var(--dur, 1.6s) cubic-bezier(.22,.61,.36,1) both; animation-delay: var(--delay, 0s); } /* Return from Phase 3 back to original placement */ g.phase3-return{ transform-origin: 400px 400px; animation: phase3Return var(--retDur, 1.0s) cubic-bezier(.22,.61,.36,1) both; animation-delay: 0s; } /* Outlines: grow in phase 3, then return */ g.phase3-outline{ transform-origin: 400px 400px; animation: phase3OutlineGrow var(--outlineDur, 0.9s) cubic-bezier(.22,.61,.36,1) both; animation-delay: var(--outlineDelay, 0s); } g.phase3-outline-return{ transform-origin: 400px 400px; animation: phase3OutlineReturn var(--outlineRetDur, 0.8s) cubic-bezier(.22,.61,.36,1) both; animation-delay: 0s; } g.blink.blink-fast.phase3-unfold { animation: phase3Unfold var(--dur, 1.6s) cubic-bezier(.22,.61,.36,1) both, blink 0.1s steps(1, start) infinite; } g.blink.blink-fast.phase3-outline { animation: phase3OutlineGrow var(--outlineDur, 0.9s) cubic-bezier(.22,.61,.36,1) both, blink 0.1s steps(1, start) infinite; } /* Unfold: go to center (50%) */ @keyframes phase3Unfold{ 0%{ transform: translate(0px,0px) rotate(0deg) scale(var(--s,1)); } 100%{ transform: translate(var(--toCx,0px), var(--toCy,0px)) rotate(calc(var(--rot,0deg)*0.5)) scale(var(--s,1)); } } @keyframes phase3Return{ 0%{ transform: translate(calc(var(--toCx,0px) + var(--outDx,0px)), calc(var(--toCy,0px) + var(--outDy,0px))) rotate(var(--rot,0deg)) scale(var(--s,1)); } 100%{ transform: translate(0px,0px) rotate(0deg) scale(1); } } @keyframes phase3OutlineGrow{ 0%{ transform: scale(1) rotate(0deg); } 100%{ transform: scale(1.2) rotate(calc(var(--rotSign, 1) * 1deg)); } } @keyframes phase3OutlineReturn{ 0%{ transform: scale(1.2) rotate(calc(var(--rotSign, 1) * 1deg)); } 100%{ transform: scale(1) rotate(0deg); } } /* --- Phase toggle panel --- */ #phasePanel{ position: fixed; left: max(12px, env(safe-area-inset-left)); bottom: max(12px, env(safe-area-inset-bottom)); display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 14px; background: rgba(20,20,20,.72); border: 1px solid rgba(255,255,255,.14); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); z-index: 9999; user-select: none; } #phasePanel .panel-body{ display:flex; align-items:center; gap:8px; } #phasePanel .pbtn{ width: 34px; height: 34px; border-radius: 999px; border: 1px solid rgba(255,255,255,.18); background: rgba(0,0,0,.25); color: rgba(255,255,255,.92); font: 600 13px/1 system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; cursor: pointer; } #phasePanel .pbtn:hover{ background: rgba(255,255,255,.08); } #phasePanel .pbtn:active{ transform: translateY(1px); } #phasePanel .pbtn.active{ background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.35); } #phasePanel .toggle{ width: 34px; height: 34px; border-radius: 999px; border: 1px solid rgba(255,255,255,.18); background: rgba(0,0,0,.35); color: rgba(255,255,255,.9); cursor: pointer; display:flex; align-items:center; justify-content:center; font: 700 16px/1 system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; } #phasePanel.collapsed .panel-body{ display:none; } #art { touch-action: manipulation; cursor: pointer; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none; } foreignObject{overflow: visible} #art > g, #art .g-to, #art foreignObject, #art img { pointer-events: none; } #phasePanel, #phasePanel * { pointer-events: auto; touch-action: manipulation; } #phase-bg { transform-origin: 400px 400px; transform-box: view-box; transition: transform 0.9s cubic-bezier(.22,.61,.36,1); } #art.phase3-active #phase-bg { transform: scale(0.75); } </style> </head> <body> <svg id="art" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800" width="800" height="800" preserveAspectRatio="xMidYMid meet"> <rect id="phase-bg" width="800" height="800" fill="#111111" />