Spaces:
Running
Running
File size: 1,701 Bytes
7431d08 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | const clock = document.querySelector('#clock');
const terminal = document.querySelector('#terminal');
const input = document.querySelector('#key');
const feedback = document.querySelector('#feedback');
const reveal = document.querySelector('#reveal');
setInterval(() => {
clock.textContent = new Date().toLocaleTimeString('en-GB', { hour12: false });
}, 1000);
document.querySelectorAll('.fragment').forEach((fragment) => {
fragment.addEventListener('click', () => {
fragment.classList.toggle('open');
const decoded = [...fragment.querySelector('span').textContent.matchAll(/\d+/g)]
.map(([n]) => String.fromCharCode(64 + Number(n))).join('');
fragment.querySelector('i').textContent = fragment.classList.contains('open') ? `DECODED: ${decoded}` : 'tap to inspect';
});
});
terminal.addEventListener('submit', (event) => {
event.preventDefault();
if (input.value.trim().toUpperCase() === 'TRUTH') {
feedback.textContent = 'ACCESS GRANTED // DECRYPTING…';
feedback.className = 'success';
document.body.classList.add('decrypting');
setTimeout(() => {
reveal.classList.add('show');
reveal.setAttribute('aria-hidden', 'false');
}, 650);
} else {
feedback.textContent = 'ACCESS DENIED // READ THE THREE DECODED WORDS';
terminal.classList.remove('shake');
void terminal.offsetWidth;
terminal.classList.add('shake');
input.select();
}
});
document.querySelector('.close').addEventListener('click', () => {
reveal.classList.remove('show');
reveal.setAttribute('aria-hidden', 'true');
});
document.addEventListener('keydown', (event) => {
if (event.key === 'Escape') document.querySelector('.close').click();
});
|