KOCHI

Kochi animated avatar
FURSONA / REFERENCE
✳
INFO

WIP

(function () { const root = document.querySelector('.kochi-page'); const viewer = document.getElementById('kochi-lightbox'); if (!root || !viewer || root.dataset.viewerReady) { return; } root.dataset.viewerReady = 'true'; const image = viewer.querySelector('.lightbox-image'); const close = viewer.querySelector('.lightbox-close'); let previousOverflow = ''; function hideViewer() { viewer.classList.remove('is-open'); image.classList.remove('is-zoomed'); image.removeAttribute('src'); document.body.style.overflow = previousOverflow; } window.openKochiImage = function (event, url) { if (event) event.preventDefault(); previousOverflow = document.body.style.overflow; image.src = url; image.classList.remove('is-zoomed'); viewer.classList.add('is-open'); document.body.style.overflow = 'hidden'; return false; }; close.addEventListener('click', hideViewer); viewer.addEventListener('click', function (event) { if (event.target === viewer) { hideViewer(); } }); image.addEventListener('click', function () { image.classList.toggle('is-zoomed'); }); document.addEventListener('keydown', function (event) { if (event.key === 'Escape' && viewer.classList.contains('is-open')) { hideViewer(); } }); /* GENERATE ARTWORK THUMBNAILS */ root.querySelectorAll('.kochi-art-slot').forEach( function (slot, index) { const url = slot.dataset.artUrl.trim(); if (!url) return; const link = document.createElement('a'); link.className = 'kochi-art-item'; link.href = url; link.addEventListener('click', function (event) { window.openKochiImage(event, url); }); const thumbnail = document.createElement('img'); thumbnail.src = url; thumbnail.alt = 'Kochi artwork ' + (index + 1); thumbnail.loading = 'lazy'; link.appendChild(thumbnail); slot.replaceChildren(link); } ); /* Move viewer outside Carrd containers */ if (viewer.parentElement !== document.body) { document.body.appendChild(viewer); } })();

HAN

ORIGINAL CHARACTER / REFERENCE
✳
INFO

WIP

(function () { const root = document.querySelector('.han-page'); const viewer = document.getElementById('han-lightbox'); if (!root || !viewer || root.dataset.viewerReady) { return; } root.dataset.viewerReady = 'true'; const image = viewer.querySelector('.lightbox-image'); const close = viewer.querySelector('.lightbox-close'); let previousOverflow = ''; function hideViewer() { viewer.classList.remove('is-open'); image.classList.remove('is-zoomed'); image.removeAttribute('src'); document.body.style.overflow = previousOverflow; } window.openHanImage = function (event, url) { if (event) event.preventDefault(); previousOverflow = document.body.style.overflow; image.src = url; image.classList.remove('is-zoomed'); viewer.classList.add('is-open'); document.body.style.overflow = 'hidden'; return false; }; close.addEventListener('click', hideViewer); viewer.addEventListener('click', function (event) { if (event.target === viewer) { hideViewer(); } }); image.addEventListener('click', function () { image.classList.toggle('is-zoomed'); }); document.addEventListener('keydown', function (event) { if ( event.key === 'Escape' && viewer.classList.contains('is-open') ) { hideViewer(); } }); /* GENERATE ARTWORK THUMBNAILS */ root.querySelectorAll('.han-art-slot').forEach( function (slot, index) { const url = slot.dataset.artUrl.trim(); if (!url) return; const link = document.createElement('a'); link.className = 'han-art-item'; link.href = url; link.addEventListener('click', function (event) { window.openHanImage(event, url); }); const thumbnail = document.createElement('img'); thumbnail.src = url; thumbnail.alt = 'Han artwork ' + (index + 1); thumbnail.loading = 'lazy'; link.appendChild(thumbnail); slot.replaceChildren(link); } ); /* Move viewer outside Carrd containers */ if (viewer.parentElement !== document.body) { document.body.appendChild(viewer); } })();

SHAHIDA

ORIGINAL CHARACTER / REFERENCE
✳
INFO

WIP

(function () { const root = document.querySelector('.shahida-page'); const viewer = document.getElementById('shahida-lightbox'); if (!root || !viewer || root.dataset.viewerReady) { return; } root.dataset.viewerReady = 'true'; const image = viewer.querySelector('.lightbox-image'); const close = viewer.querySelector('.lightbox-close'); let previousOverflow = ''; function hideViewer() { viewer.classList.remove('is-open'); image.classList.remove('is-zoomed'); image.removeAttribute('src'); document.body.style.overflow = previousOverflow; } window.openShahidaImage = function (event, url) { if (event) event.preventDefault(); previousOverflow = document.body.style.overflow; image.src = url; image.classList.remove('is-zoomed'); viewer.classList.add('is-open'); document.body.style.overflow = 'hidden'; return false; }; close.addEventListener('click', hideViewer); viewer.addEventListener('click', function (event) { if (event.target === viewer) { hideViewer(); } }); image.addEventListener('click', function () { image.classList.toggle('is-zoomed'); }); document.addEventListener('keydown', function (event) { if ( event.key === 'Escape' && viewer.classList.contains('is-open') ) { hideViewer(); } }); /* GENERATE ARTWORK THUMBNAILS */ root.querySelectorAll('.shahida-art-slot').forEach( function (slot, index) { const url = slot.dataset.artUrl.trim(); if (!url) return; const link = document.createElement('a'); link.className = 'shahida-art-item'; link.href = url; link.addEventListener('click', function (event) { window.openShahidaImage(event, url); }); const thumbnail = document.createElement('img'); thumbnail.src = url; thumbnail.alt = 'Shahida artwork ' + (index + 1); thumbnail.loading = 'lazy'; link.appendChild(thumbnail); slot.replaceChildren(link); } ); /* Move viewer outside Carrd containers */ if (viewer.parentElement !== document.body) { document.body.appendChild(viewer); } })();