-
Embossed OTP UI
HTML
CSS
JavaScript
🔐
OTP Verification
Enter the 6-digit verification code sent to your mobile number.
Verify OTP
OTP expires in
30
s
Resend Code
✅ OTP Verified Successfully
*{ margin:0; padding:0; box-sizing:border-box; font-family:'Poppins',sans-serif; } body{ min-height:100vh; display:flex; justify-content:center; align-items:center; background: radial-gradient(circle at top left,#1e293b,#0f172a 60%), linear-gradient(135deg,#111827,#020617); overflow:hidden; } body::before{ content:''; position:absolute; width:450px; height:450px; background:linear-gradient(45deg,#3b82f6,#8b5cf6); border-radius:50%; filter:blur(120px); opacity:.25; top:-150px; left:-120px; } body::after{ content:''; position:absolute; width:400px; height:400px; background:linear-gradient(45deg,#06b6d4,#0ea5e9); border-radius:50%; filter:blur(120px); opacity:.18; bottom:-120px; right:-100px; } .container{ position:relative; width:520px; padding:45px 35px; border-radius:32px; background:rgba(15,23,42,.72); backdrop-filter:blur(18px); border:1px solid rgba(255,255,255,.08); box-shadow: 25px 25px 50px rgba(0,0,0,.55), inset 2px 2px 4px rgba(255,255,255,.05), inset -4px -4px 10px rgba(0,0,0,.35); animation:floatCard 5s ease-in-out infinite; scale:0.8; } @keyframes floatCard{ 0%,100%{ transform:translateY(0px); } 50%{ transform:translateY(-10px); } } .icon-wrap{ width:90px; height:90px; margin:auto; border-radius:50%; display:flex; justify-content:center; align-items:center; background:#0f172a; box-shadow: inset 8px 8px 18px rgba(0,0,0,.8), inset -8px -8px 18px rgba(255,255,255,.05), 0 0 25px rgba(59,130,246,.3); } .icon-wrap span{ font-size:42px; color:#60a5fa; text-shadow:0 0 20px rgba(96,165,250,.8); } h2{ color:white; text-align:center; margin-top:25px; font-size:32px; letter-spacing:1px; } p{ color:#94a3b8; text-align:center; margin-top:10px; font-size:14px; line-height:1.6; } .otp-box{ margin-top:35px; display:flex; justify-content:space-between; gap:14px; } .otp-box input{ width:65px; height:72px; border:none; outline:none; border-radius:22px; background:#0f172a; color:white; text-align:center; font-size:28px; font-weight:600; transition:.35s ease; box-shadow: inset 8px 8px 14px rgba(0,0,0,.9), inset -4px -4px 10px rgba(255,255,255,.05), 0 0 0 rgba(59,130,246,0); } .otp-box input:focus{ transform:translateY(-6px) scale(1.05); color:#60a5fa; box-shadow: inset 4px 4px 10px rgba(0,0,0,.7), inset -2px -2px 8px rgba(255,255,255,.05), 0 0 20px rgba(96,165,250,.55), 0 0 40px rgba(96,165,250,.18); } .verify-btn{ width:100%; margin-top:35px; padding:18px; border:none; border-radius:18px; background:linear-gradient(135deg,#3b82f6,#8b5cf6); color:white; font-size:17px; font-weight:600; cursor:pointer; position:relative; overflow:hidden; transition:.35s ease; box-shadow: 0 10px 25px rgba(59,130,246,.35), inset 1px 1px 4px rgba(255,255,255,.35); } .verify-btn::before{ content:''; position:absolute; top:0; left:-100%; width:100%; height:100%; background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent); transition:.6s; } .verify-btn:hover::before{ left:100%; } .verify-btn:hover{ transform:translateY(-4px); box-shadow: 0 18px 35px rgba(99,102,241,.45), 0 0 30px rgba(59,130,246,.3); } .timer{ text-align:center; margin-top:22px; color:#94a3b8; font-size:14px; } .timer span{ color:#60a5fa; font-weight:600; } .resend{ text-align:center; margin-top:18px; } .resend a{ text-decoration:none; color:#60a5fa; font-weight:500; transition:.3s; } .resend a:hover{ color:#93c5fd; text-shadow:0 0 10px rgba(96,165,250,.8); } .success{ margin-top:22px; background:rgba(34,197,94,.12); border:1px solid rgba(34,197,94,.3); color:#4ade80; padding:14px; border-radius:16px; text-align:center; display:none; animation:popup .45s ease; } @keyframes popup{ from{ opacity:0; transform:translateY(15px) scale(.9); } to{ opacity:1; transform:translateY(0) scale(1); } } @media(max-width:500px){ .container{ width:92%; padding:35px 20px; } .otp-box{ gap:8px; } .otp-box input{ width:52px; height:62px; font-size:22px; } }
const inputs=document.querySelectorAll('.otp-box input'); const button=document.querySelector('.verify-btn'); const success=document.getElementById('successMsg'); inputs.forEach((input,index)=>{ input.addEventListener('input',()=>{ input.value=input.value.replace(/[^0-9]/g,''); if(input.value && index
{ if(e.key==='Backspace' && !input.value && index>0){ inputs[index-1].focus(); } }); }); button.addEventListener('click',()=>{ let otp=''; inputs.forEach(input=>{ otp+=input.value; }); if(otp.length===6){ button.innerHTML='Verified ✓'; button.style.background='linear-gradient(135deg,#22c55e,#16a34a)'; success.style.display='block'; }else{ button.innerHTML='Invalid OTP'; button.style.background='linear-gradient(135deg,#ef4444,#dc2626)'; setTimeout(()=>{ button.innerHTML='Verify OTP'; button.style.background='linear-gradient(135deg,#3b82f6,#8b5cf6)'; },1800); } }); let count=30; const countdown=document.getElementById('countdown'); const timer=setInterval(()=>{ count--; countdown.innerHTML=count; if(count<=0){ clearInterval(timer); countdown.innerHTML='0'; } },1000);
Live Preview