| <!doctype html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width,initial-scale=1" /> |
| <title>EMMYS Gate</title> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <script defer src="https://unpkg.com/lucide@latest"></script> |
| <style> |
| body{ |
| min-height:100vh;color:#fff; |
| background: |
| linear-gradient(rgba(0,0,0,.68),rgba(0,0,0,.68)), |
| url('https://i.pinimg.com/736x/bd/3a/aa/bd3aaa3a2553c8a645472da61fa2a5cc.jpg') center/cover fixed no-repeat; |
| } |
| </style> |
| </head> |
| <body class="flex items-center justify-center p-6"> |
| <div class="w-full max-w-xl rounded-2xl border border-yellow-200/20 bg-black/50 p-6 backdrop-blur"> |
| <div class="flex items-center gap-3 mb-4"> |
| <div class="w-9 h-9 rounded-xl bg-gradient-to-br from-yellow-300 via-yellow-500 to-amber-600 flex items-center justify-center shadow-md"> |
| <i data-lucide="sparkles" class="w-5 h-5 text-black"></i> |
| </div> |
| <div> |
| <p class="text-xs uppercase tracking-widest text-yellow-300/80">AI WEEK</p> |
| <h1 class="text-2xl font-black text-yellow-200">Emmys Gate</h1> |
| </div> |
| </div> |
|
|
| <form id="gate" class="space-y-4"> |
| <div> |
| <label class="text-sm text-yellow-200">Username</label> |
| <input id="name" required class="mt-1 w-full rounded-lg border border-yellow-200/20 bg-black/40 p-2 outline-none focus:ring-2 focus:ring-yellow-400" placeholder="e.g., robert_downey" /> |
| </div> |
| <div> |
| <label class="text-sm text-yellow-200">Face Image</label> |
| <input id="image" type="file" accept="image/*" required class="mt-1 w-full text-yellow-100" /> |
| </div> |
| <button id="go" class="px-4 py-2 rounded-xl bg-yellow-400 text-black font-semibold flex items-center gap-2"> |
| <i data-lucide="shield-check" class="w-4 h-4"></i> Verify & Enter |
| </button> |
| <div id="msg" class="text-sm mt-2"></div> |
| </form> |
| </div> |
|
|
| <script> |
| lucide.createIcons(); |
| |
| const VERIFY_URL = "https://hudaakram-emmys-api.hf.space/verify"; |
| const EMMYS_URL = "./index.html"; |
| |
| document.getElementById('gate').addEventListener('submit', async (e)=>{ |
| e.preventDefault(); |
| const btn = document.getElementById('go'); |
| const msg = document.getElementById('msg'); |
| msg.textContent = ""; btn.disabled = true; btn.style.opacity = .6; |
| |
| const name = document.getElementById('name').value.trim(); |
| const file = document.getElementById('image').files[0]; |
| if(!name || !file){ |
| msg.textContent = "Please provide username and image."; |
| btn.disabled=false; btn.style.opacity=1; return; |
| } |
| |
| if (!VERIFY_URL || VERIFY_URL.includes("YOUR-BACKEND") || !VERIFY_URL.includes("hf.space")) { |
| const score = 0.951; |
| location.href = `${EMMYS_URL}?user=${encodeURIComponent(name)}&score=${score.toFixed(3)}`; |
| return; |
| } |
| |
| const fd = new FormData(); |
| fd.append('name', name); |
| fd.append('image', file, file.name); |
| |
| try{ |
| const r = await fetch(VERIFY_URL, { method:'POST', body: fd, mode:'cors' }); |
| const out = await r.json(); |
| if(out.decision === "Access Granted"){ |
| const score = Number(out.score || 0).toFixed(3); |
| const token = out.token ? `&token=${encodeURIComponent(out.token)}` : ""; |
| window.location.href = `${EMMYS_URL}?user=${encodeURIComponent(name)}&score=${score}${token}`; |
| }else{ |
| msg.textContent = `⛔ ${out.decision || "Denied"} — score=${Number(out.score||0).toFixed(3)}`; |
| msg.style.color = "#fca5a5"; |
| } |
| }catch(err){ |
| msg.textContent = `Error: ${err}`; |
| msg.style.color = "#fca5a5"; |
| }finally{ |
| btn.disabled = false; btn.style.opacity = 1; |
| } |
| }); |
| </script> |
|
|
| </body> |
| </html> |
|
|