/* CASINO: simple password screen for the Collaborators section (not bank-grade; keeps casual visitors out). Password is stored only as a SHA-256 hash. Unlocked state is remembered on the device. */ (function () { var H = 'e718b2dd3e0ac1f9208efdffe98024e7406e29c51c31bcfa9a6b29d1951b19f4'; var P = ['/collaborators', '/theo-adams', '/loys-assal', '/joseph-wilson', '/vasso-vu', '/charlotte-rutherford']; var path = location.pathname.replace(/\/+$/, '') || '/'; var ok = false; try { ok = localStorage.getItem('casinoCollab') === H; } catch (e) {} if (ok || P.indexOf(path) < 0) return; var de = document.documentElement; de.classList.add('cs-locked'); var st = document.createElement('style'); st.textContent = '.cs-locked body>*:not(#cs-gate){visibility:hidden!important}' + '#cs-gate{position:fixed;inset:0;z-index:2147483646;background:#fff;display:flex;align-items:center;justify-content:center;font-family:"Hanken Grotesk",Arial,sans-serif}' + '#cs-gate form{text-align:center;width:280px;max-width:84vw}' + '#cs-gate img{width:200px;max-width:70vw;display:block;margin:0 auto 34px}' + '#cs-gate p{font-size:13px;letter-spacing:.06em;text-transform:uppercase;margin:0 0 14px;color:#000}' + '#cs-gate input{width:100%;box-sizing:border-box;border:1px solid #000;padding:12px 14px;font-size:16px;text-align:center;outline:none;border-radius:0}' + '#cs-gate button{margin-top:10px;width:100%;padding:12px;border:0;background:#000;color:#fff;font-size:13px;letter-spacing:.08em;cursor:pointer}' + '#cs-gate .e{color:#d4111b;font-size:12px;height:16px;margin-top:10px}' + '#cs-gate a{display:block;margin-top:22px;font-size:12px;color:#777;text-decoration:none}'; document.head.appendChild(st); function sha(s) { return crypto.subtle.digest('SHA-256', new TextEncoder().encode(s)).then(function (b) { return [].map.call(new Uint8Array(b), function (x) { return ('0' + x.toString(16)).slice(-2); }).join(''); }); } function show() { var logo = document.querySelector('.brand-img img'); var g = document.createElement('div'); g.id = 'cs-gate'; g.innerHTML = '
' + (logo ? 'CASINO' : '') + '

Collaborators

' + '
Back to CASINO
'; document.body.appendChild(g); var f = g.querySelector('form'), i = g.querySelector('input'), e = g.querySelector('.e'); i.focus(); i.addEventListener('input', function () { e.textContent = ''; }); f.addEventListener('submit', function (ev) { ev.preventDefault(); sha(i.value.trim().toLowerCase()).then(function (h) { if (h === H) { try { localStorage.setItem('casinoCollab', H); } catch (x) {} g.remove(); de.classList.remove('cs-locked'); } else { e.textContent = 'Incorrect password'; i.select(); } }); }); } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', show); else show(); })();