:root{
--bg-start:#0f2357;
--bg-end:#1f5eff;
--accent:#d41935;
--card:#fffdf8;
--field:#f6f1e7;
--field-border:#e6dac5;
--text:#14233b;
--muted:#64748b;
--shadow:0 24px 60px rgba(6,20,56,.28);
}

*{
box-sizing:border-box;
}

html{
min-height:100%;
}

body{
margin:0;
font-family: system-ui, sans-serif;

min-height:100svh;
background:
radial-gradient(circle at top left, rgba(255,255,255,.18), transparent 36%),
radial-gradient(circle at right 20%, rgba(212,25,53,.2), transparent 28%),
linear-gradient(160deg,var(--bg-start),#123b92 52%,var(--bg-end));
color:var(--text);
}

.page{
min-height:100svh;
display:flex;
justify-content:center;
align-items:center;
padding:max(18px, env(safe-area-inset-top)) 16px max(18px, env(safe-area-inset-bottom));
}

.password-card{
width:min(100%, 440px);
background:rgba(255,253,248,.96);
border-radius:28px;
overflow:hidden;
box-shadow:var(--shadow);
backdrop-filter:blur(10px);
}

.hero{
position:relative;
padding:22px 20px 18px;
background:linear-gradient(135deg, rgba(10,25,70,.96), rgba(26,83,201,.96));
color:#fff;
}

.hero::after{
content:"";
position:absolute;
right:-34px;
top:-28px;
width:124px;
height:124px;
border-radius:50%;
background:rgba(255,255,255,.14);
}

.badge{
display:inline-flex;
align-items:center;
padding:7px 12px;
border-radius:999px;
border:1px solid rgba(255,255,255,.18);
background:rgba(255,255,255,.12);
font-size:12px;
font-weight:700;
letter-spacing:.04em;
text-transform:uppercase;
}

.hero h1{
margin:16px 0 8px;
font-size:28px;
line-height:1.15;
font-weight:800;
}

.hero p{
margin:0;
max-width:28ch;
color:rgba(255,255,255,.88);
font-size:14px;
line-height:1.55;
}

.welcome{
margin-top:14px;
display:inline-flex;
align-items:center;
padding:10px 12px;
border-radius:16px;
background:rgba(255,255,255,.12);
font-size:13px;
color:rgba(255,255,255,.92);
}

.form-area{
padding:20px;
}

.guideline{
display:grid;
gap:8px;
margin-bottom:16px;
padding:14px 16px;
border-radius:18px;
background:#f4f7ff;
border:1px solid #dce6ff;
}

.guideline strong{
font-size:14px;
color:#1e3a8a;
}

.guide-item{
font-size:13px;
line-height:1.5;
color:#41536e;
}

.error{
margin-bottom:16px;
padding:14px 16px;
border-radius:18px;
border:1px solid #f4c7cc;
background:#fff1f1;
color:#b21c2d;
font-size:14px;
line-height:1.5;
}

.form{
display:grid;
gap:14px;
}

.field{
display:grid;
gap:8px;
}

.field label{
font-size:14px;
font-weight:700;
color:#24364f;
}

.password-wrap{
position:relative;
}

input{
display:block;
width:100%;
height:56px;
padding:0 84px 0 16px;
border-radius:18px;
border:1px solid var(--field-border);
background:var(--field);
color:var(--text);
font-size:16px;
outline:none;
appearance:none;
transition:border-color .2s, box-shadow .2s, background .2s;
}

input::placeholder{
color:#96a0ae;
}

input:focus{
border-color:#2d63f0;
background:#fff;
box-shadow:0 0 0 4px rgba(45,99,240,.14);
}

.toggle-password{
position:absolute;
top:50%;
right:10px;
transform:translateY(-50%);
min-width:64px;
height:38px;
border:none;
border-radius:12px;
padding:0 14px;
background:#e3ebff;
color:#1941b8;
font-size:14px;
font-weight:700;
cursor:pointer;
}

.submit-btn{
width:100%;
min-height:56px;
margin-top:4px;
border:none;
border-radius:18px;
background:linear-gradient(135deg,var(--accent),#1655ea);
color:#fff;
font-weight:800;
font-size:16px;
letter-spacing:.01em;
box-shadow:0 16px 28px rgba(21,75,206,.25);
cursor:pointer;
}

.submit-btn:active{
transform:translateY(1px);
}

.secondary-btn{
display:inline-flex;
align-items:center;
justify-content:center;
width:100%;
min-height:52px;
border-radius:18px;
border:1px solid #d6e2ff;
background:#f4f7ff;
color:#1941b8;
font-size:15px;
font-weight:700;
text-decoration:none;
}

.footer{
margin-top:2px;
text-align:center;
font-size:13px;
line-height:1.55;
color:#5470a1;
}

button:focus-visible,
input:focus-visible{
outline:none;
}

.toggle-password:focus-visible,
.submit-btn:focus-visible,
.secondary-btn:focus-visible{
box-shadow:0 0 0 4px rgba(45,99,240,.18);
}

@media (min-width:768px){
.page{
padding:32px;
}

.password-card{
width:min(100%, 470px);
}

.hero{
padding:28px 28px 22px;
}

.form-area{
padding:24px 28px 28px;
}

.hero h1{
font-size:32px;
}

.hero p{
font-size:15px;
}
}

@media (max-height:700px){
.page{
align-items:flex-start;
}
}
