<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>OTP Verification</title>
<style>
:root{
--primary:#6366f1;
--secondary:#8b5cf6;
--accent:#06b6d4;
}
*{
margin:0;
padding:0;
box-sizing:border-box;
font-family:Inter,sans-serif;
}
body{
min-height:100vh;
display:flex;
justify-content:center;
align-items:center;
padding:20px;
overflow:hidden;
background:
linear-gradient(
135deg,
#020617,
#172554,
#312e81
);
}
/* Animated Background */
.blob{
position:absolute;
border-radius:50%;
filter:blur(90px);
opacity:.5;
animation:float 10s ease-in-out infinite;
}
.blob1{
width:350px;
height:350px;
background:#6366f1;
top:-100px;
left:-100px;
}
.blob2{
width:300px;
height:300px;
background:#06b6d4;
right:-100px;
bottom:-100px;
}
@keyframes float{
50%{
transform:translateY(-40px);
}
}
/* Card */
.card{
width:100%;
max-width:500px;
background:
rgba(255,255,255,.08);
backdrop-filter:blur(20px);
border:1px solid rgba(255,255,255,.1);
border-radius:30px;
padding:40px;
text-align:center;
box-shadow:
0 25px 60px rgba(0,0,0,.4);
animation:show .8s ease;
}
@keyframes show{
from{
opacity:0;
transform:translateY(30px);
}
to{
opacity:1;
transform:translateY(0);
}
}
/* Phone Icon */
.phone{
width:120px;
height:120px;
margin:auto;
margin-bottom:25px;
border-radius:30px;
background:
linear-gradient(
135deg,
var(--primary),
var(--accent)
);
display:flex;
justify-content:center;
align-items:center;
font-size:50px;
animation:bounce 3s infinite;
}
@keyframes bounce{
50%{
transform:translateY(-10px);
}
}
h2{
color:white;
margin-bottom:10px;
}
p{
color:#cbd5e1;
margin-bottom:30px;
}
/* OTP Boxes */
.otp{
display:flex;
justify-content:center;
gap:10px;
margin-bottom:25px;
}
.otp input{
width:55px;
height:60px;
border:none;
outline:none;
border-radius:15px;
text-align:center;
font-size:24px;
color:white;
background:
rgba(255,255,255,.08);
transition:.3s;
}
.otp input:focus{
transform:translateY(-3px);
border:1px solid #06b6d4;
box-shadow:
0 0 20px rgba(6,182,212,.4);
}
/* Timer */
.timer{
color:#94a3b8;
margin-bottom:20px;
}
.timer span{
color:#06b6d4;
}
/* Verify Button */
.btn{
width:100%;
padding:15px;
border:none;
border-radius:14px;
color:white;
font-size:16px;
cursor:pointer;
background:
linear-gradient(
135deg,
var(--primary),
var(--accent)
);
transition:.4s;
}
.btn:hover{
transform:translateY(-3px);
box-shadow:
0 15px 35px rgba(99,102,241,.4);
}
/* Resend */
.resend{
margin-top:20px;
}
.resend a{
color:#06b6d4;
text-decoration:none;
}
.resend a:hover{
text-decoration:underline;
}
/* Mobile */
@media(max-width:500px){
.card{
padding:25px;
}
.otp{
gap:6px;
}
.otp input{
width:42px;
height:50px;
font-size:20px;
}
}
</style>
</head>
<body>
<div class="blob blob1"></div>
<div class="blob blob2"></div>
<div class="card">
<div class="phone">
📱
</div>
<h2>Verify OTP</h2>
<p>
Enter the 6-digit code sent to
your mobile number
</p>
<div class="otp">
<input maxlength="1">
<input maxlength="1">
<input maxlength="1">
<input maxlength="1">
<input maxlength="1">
<input maxlength="1">
</div>
<div class="timer">
Code expires in
<span>01:29</span>
</div>
<button class="btn">
Verify OTP
</button>
<div class="resend">
Didn't receive code?
<a href="#">Resend OTP</a>
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>OTP Verification</title>
<style>
:root{
--primary:#6366f1;
--secondary:#8b5cf6;
--accent:#06b6d4;
}
*{
margin:0;
padding:0;
box-sizing:border-box;
font-family:Inter,sans-serif;
}
body{
min-height:100vh;
display:flex;
justify-content:center;
align-items:center;
padding:20px;
overflow:hidden;
background:
linear-gradient(
135deg,
#020617,
#172554,
#312e81
);
}
/* Animated Background */
.blob{
position:absolute;
border-radius:50%;
filter:blur(90px);
opacity:.5;
animation:float 10s ease-in-out infinite;
}
.blob1{
width:350px;
height:350px;
background:#6366f1;
top:-100px;
left:-100px;
}
.blob2{
width:300px;
height:300px;
background:#06b6d4;
right:-100px;
bottom:-100px;
}
@keyframes float{
50%{
transform:translateY(-40px);
}
}
/* Card */
.card{
width:100%;
max-width:500px;
background:
rgba(255,255,255,.08);
backdrop-filter:blur(20px);
border:1px solid rgba(255,255,255,.1);
border-radius:30px;
padding:40px;
text-align:center;
box-shadow:
0 25px 60px rgba(0,0,0,.4);
animation:show .8s ease;
}
@keyframes show{
from{
opacity:0;
transform:translateY(30px);
}
to{
opacity:1;
transform:translateY(0);
}
}
/* Phone Icon */
.phone{
width:120px;
height:120px;
margin:auto;
margin-bottom:25px;
border-radius:30px;
background:
linear-gradient(
135deg,
var(--primary),
var(--accent)
);
display:flex;
justify-content:center;
align-items:center;
font-size:50px;
animation:bounce 3s infinite;
}
@keyframes bounce{
50%{
transform:translateY(-10px);
}
}
h2{
color:white;
margin-bottom:10px;
}
p{
color:#cbd5e1;
margin-bottom:30px;
}
/* OTP Boxes */
.otp{
display:flex;
justify-content:center;
gap:10px;
margin-bottom:25px;
}
.otp input{
width:55px;
height:60px;
border:none;
outline:none;
border-radius:15px;
text-align:center;
font-size:24px;
color:white;
background:
rgba(255,255,255,.08);
transition:.3s;
}
.otp input:focus{
transform:translateY(-3px);
border:1px solid #06b6d4;
box-shadow:
0 0 20px rgba(6,182,212,.4);
}
/* Timer */
.timer{
color:#94a3b8;
margin-bottom:20px;
}
.timer span{
color:#06b6d4;
}
/* Verify Button */
.btn{
width:100%;
padding:15px;
border:none;
border-radius:14px;
color:white;
font-size:16px;
cursor:pointer;
background:
linear-gradient(
135deg,
var(--primary),
var(--accent)
);
transition:.4s;
}
.btn:hover{
transform:translateY(-3px);
box-shadow:
0 15px 35px rgba(99,102,241,.4);
}
/* Resend */
.resend{
margin-top:20px;
}
.resend a{
color:#06b6d4;
text-decoration:none;
}
.resend a:hover{
text-decoration:underline;
}
/* Mobile */
@media(max-width:500px){
.card{
padding:25px;
}
.otp{
gap:6px;
}
.otp input{
width:42px;
height:50px;
font-size:20px;
}
}
</style>
</head>
<body>
<div class="blob blob1"></div>
<div class="blob blob2"></div>
<div class="card">
<div class="phone">
📱
</div>
<h2>Verify OTP</h2>
<p>
Enter the 6-digit code sent to
your mobile number
</p>
<div class="otp">
<input maxlength="1">
<input maxlength="1">
<input maxlength="1">
<input maxlength="1">
<input maxlength="1">
<input maxlength="1">
</div>
<div class="timer">
Code expires in
<span>01:29</span>
</div>
<button class="btn">
Verify OTP
</button>
<div class="resend">
Didn't receive code?
<a href="#">Resend OTP</a>
</div>
</div>
</body>
</html>