:root{color-scheme:dark;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#080909;color:#ccefd7}*{box-sizing:border-box}html,body{margin:0;min-height:100%;width:100%}body{transition:background .65s}body.entered{background:#000}button,input,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;min-width:44px;min-height:44px;font-size:12px;letter-spacing:.08em}button:disabled{opacity:.45;cursor:wait}button:focus-visible,a:focus-visible{outline:1px solid #92e5af;outline-offset:7px}input:focus{outline:0}#jlr{position:relative;min-height:100svh;display:grid;place-items:center;overflow:hidden}section{position:relative;z-index:2;text-align:center;width:min(90vw,600px)}[hidden]{display:none!important}#ready{font-size:11px;letter-spacing:.04em;color:#b1b5b1}.depart{animation:dissolve .65s forwards}#rain{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity .65s}.password-stage #rain{opacity:.25}.grain{position:fixed;pointer-events:none;inset:-100px;opacity:.075;background:repeating-radial-gradient(circle at 13% 27%,#fff 0 1px,#000 1px 3px);background-size:6px 7px;mix-blend-mode:screen}.password-stage .grain{animation:grain .23s steps(2) infinite;opacity:.16}#gate{display:grid;justify-items:center;gap:30px}.brackets{position:relative;width:min(62vw,290px);padding:18px 14px;box-shadow:0 0 23px #6eff9d15,inset 0 0 15px #6eff9d0b;border-left:1px solid #aaffc7;border-right:1px solid #aaffc7}.brackets:before,.brackets:after{content:"";position:absolute;left:0;right:0;height:5px;border-left:8px solid #aaffc7;border-right:8px solid #aaffc7}.brackets:before{top:0}.brackets:after{bottom:0}#password{width:100%;border:0;background:transparent;color:#d4ffe0;caret-color:#abffc7;text-align:center;font:20px ui-monospace,monospace;letter-spacing:.35em;text-shadow:0 0 12px #91ffae}#gate button{color:#9bbca4;font-size:10px}#price{font-size:22px;letter-spacing:.09em;margin-bottom:25px}.terms{font-size:10px;color:#777;line-height:1.6;margin:26px auto 16px;max-width:240px}a{font-size:11px;color:#9aa99e;text-underline-offset:4px;cursor:pointer}.visual{position:relative;width:min(76vw,540px,calc(100svh - 100px));aspect-ratio:1;margin:auto}.visual img,.visual video{display:block;width:100%;height:100%;object-fit:contain}.transport{display:flex;justify-content:center;gap:23px;margin-top:12px}.transport button{font-size:21px;color:#d8ded9;font-family:system-ui,sans-serif}#status{position:fixed;bottom:max(25px,env(safe-area-inset-bottom));z-index:4;margin:0 25px;text-align:center;font-size:11px;line-height:1.6;max-width:420px;color:#a2b6a8}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@keyframes dissolve{to{opacity:0;filter:blur(9px);text-shadow:0 0 20px #9cffbb;transform:translateY(-4px)}}@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(-14px,11px)}50%{transform:translate(9px,-15px)}75%{transform:translate(-5px,-7px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.preview{width:min(48vw,240px,34svh);aspect-ratio:1;margin:0 auto 12px}.preview img,.preview video{width:100%;height:100%;object-fit:contain;display:block}

/* One continuous black field. Crush the source video's near-black matte and
   blend it into the page without changing the original animation files. */
:root,html,body,body.entered,#jlr{background:#000}
.grain{opacity:0}
.password-stage .grain{opacity:.16}
.visual,.preview{background:transparent}
.visual img,.visual video,.preview img,.preview video{filter:contrast(1.12) brightness(.98);mix-blend-mode:screen}
