-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
1 lines (1 loc) · 4.65 KB
/
Copy pathindex.html
File metadata and controls
1 lines (1 loc) · 4.65 KB
1
<!doctype html><html lang="es"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,viewport-fit=cover"><meta name="theme-color" content="#000"><title>URUX</title><style>*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden;background:#000;position:fixed;inset:0;font-family:Inter,system-ui,sans-serif}#app{position:fixed;inset:0;z-index:1}#app canvas{position:absolute;inset:0;width:100%!important;height:100%!important;display:block}#vignette{position:fixed;inset:0;z-index:6;pointer-events:none;background:radial-gradient(ellipse at center,transparent 42%,rgba(0,0,5,.48) 100%)}#startGate{position:fixed;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle,rgba(4,12,28,.55),#000 68%);transition:opacity .7s ease,visibility .7s ease}#startGate.hidden{opacity:0;visibility:hidden;pointer-events:none}.gate{text-align:center;max-width:560px;padding:24px}.eyebrow{font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:#9fb5d5;margin-bottom:18px}.title{font-weight:300;letter-spacing:.08em;font-size:clamp(34px,5vw,62px);color:#eef5ff}.subtitle{margin:14px auto 28px;max-width:470px;font-size:13px;line-height:1.6;color:#8493aa}#enterBtn{border:1px solid #314766;background:#081323;color:#e6efff;padding:13px 28px;border-radius:999px;letter-spacing:.2em;font-size:11px;text-transform:uppercase;cursor:pointer;transition:opacity .25s,border-color .25s}#enterBtn:disabled{opacity:.42;cursor:default;border-color:#1d2b40}#controls{position:fixed;z-index:8;left:50%;bottom:max(18px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid #1b2c44;border-radius:999px;background:#050b15;transition:opacity .4s;opacity:.72}#controls[hidden]{display:none!important}#controls.dim{opacity:.15}#controls button{width:32px;height:32px;border:0;border-radius:50%;background:#101b2a;color:#dceaff}#trackLabel{font-size:10px;color:#8294ad}#status{position:fixed;left:12px;top:12px;z-index:9;font-size:10px;color:#607a9f}</style><script type="importmap">{"imports":{"three":"https://cdn.jsdelivr.net/npm/three@0.185.1/build/three.module.js","three/addons/":"https://cdn.jsdelivr.net/npm/three@0.185.1/examples/jsm/","postprocessing":"https://cdn.jsdelivr.net/npm/postprocessing@6.39.4/build/index.js","three-nebula":"https://cdn.jsdelivr.net/npm/three-nebula@12.1.0/dist/three-nebula.mjs"}}</script></head><body><div id="app"></div><div id="vignette"></div><div id="startGate"><div class="gate"><div class="eyebrow">Viaje audiovisual</div><div class="title">URUX</div><div class="subtitle">Un tránsito desde el desprendimiento y el túnel hacia la luz, la memoria, la frontera y el retorno.</div><button id="enterBtn" disabled>Preparando…</button></div></div><div id="controls" class="dim" hidden><button id="pauseBtn">Ⅱ</button><span id="trackLabel">URUX</span><button id="fullBtn">□</button></div><div id="status"></div><script type="module">const boot={version:'resolviendo',build:'—',startedAt:new Date().toISOString(),cacheCleared:false,serviceWorkersCleared:false,interactionReady:false};window.__URUX_BOOT__=boot;const enter=document.getElementById('enterBtn');try{if('caches'in window){const k=await caches.keys();await Promise.all(k.map(x=>caches.delete(x)))}boot.cacheCleared=true}catch(e){boot.cacheError=String(e)}try{if('serviceWorker'in navigator){const r=await navigator.serviceWorker.getRegistrations();await Promise.all(r.map(x=>x.unregister()))}boot.serviceWorkersCleared=true}catch(e){boot.serviceWorkerError=String(e)}let m={version:`live-${Date.now()}`,build:'fallback'};try{const r=await fetch(`./version.json?t=${Date.now()}`,{cache:'no-store'});if(r.ok)m=await r.json()}catch(e){boot.versionError=String(e)}Object.assign(boot,m);const v=encodeURIComponent(boot.version),load=src=>new Promise((ok,no)=>{const s=document.createElement('script');s.type='module';s.src=src;s.onload=ok;s.onerror=()=>no(new Error(src));document.head.appendChild(s)});try{await load(`./runtime/journey/AIStatusOverlayBootstrapV52.js?v=${v}`)}catch(e){boot.overlayError=String(e)}try{await load(`./runtime/main.js?v=${v}`);if(boot.interactionReady){enter.disabled=false;enter.textContent='Entrar'}else{const until=performance.now()+5000;while(!boot.interactionReady&&performance.now()<until)await new Promise(r=>setTimeout(r,25));if(boot.interactionReady){enter.disabled=false;enter.textContent='Entrar'}else throw new Error('interaction_not_ready')}}catch(e){boot.runtimeError=String(e);enter.disabled=true;enter.textContent='No disponible';document.getElementById('status').textContent='Error de runtime'}</script></body></html>