*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root{
    --bg:#0b0b10;
    --card:#101018;
    --border:rgba(255,255,255,.06);
    --input-bg:rgba(255,255,255,.03);
    --input-border:rgba(255,255,255,.08);
    --input-focus:rgba(120,100,255,.35);
    --text:#f0f0f5;
    --text-dim:#6b7280;
    --text-label:#8b8fa3;
    --accent-start:#6c5ce7;
    --accent-end:#a855f7;
    --error:#ef4444;
    --success:#34d399;
    --radius:12px;
}

body{
    font-family:'Inter',system-ui,-apple-system,sans-serif;
    background:var(--bg);
    color:var(--text);
    min-height:100vh;
    display:flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
    position:relative;
}

.bg-glow{
    position:fixed;
    width:600px;height:600px;
    border-radius:50%;
    background:radial-gradient(circle,rgba(108,92,231,.12) 0%,transparent 70%);
    top:-200px;left:-200px;
    pointer-events:none;
    animation:drift 12s ease-in-out infinite alternate;
}
.glow-2{
    background:radial-gradient(circle,rgba(168,85,247,.08) 0%,transparent 70%);
    top:auto;bottom:-300px;left:auto;right:-200px;
    animation-delay:-6s;
}
@keyframes drift{from{transform:translate(0,0)}to{transform:translate(40px,30px)}}

.container{
    width:100%;max-width:460px;
    padding:24px;
    position:relative;z-index:1;
}

.card{
    background:var(--card);
    border:1px solid var(--border);
    border-radius:20px;
    padding:44px 40px;
    backdrop-filter:blur(20px);
    box-shadow:0 25px 60px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.03) inset;
}

.auth-page.hidden{display:none}

h1{
    font-size:26px;
    font-weight:800;
    letter-spacing:-.3px;
    margin-bottom:8px;
}

.subtitle{
    color:var(--text-dim);
    font-size:13.5px;
    line-height:1.6;
    margin-bottom:32px;
}

.field{margin-bottom:16px}

.field label{
    display:block;
    color:var(--text-label);
    font-size:11.5px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.8px;
    margin-bottom:8px;
}

.field input{
    width:100%;
    padding:14px 16px;
    border:1.5px solid var(--input-border);
    border-radius:var(--radius);
    background:var(--input-bg);
    color:var(--text);
    font-family:inherit;
    font-size:14px;
    outline:none;
    transition:border-color .25s,background .25s,box-shadow .25s;
}

.field input:focus{
    border-color:var(--input-focus);
    background:rgba(255,255,255,.05);
    box-shadow:0 0 0 3px rgba(108,92,231,.12);
}

.field input::placeholder{color:#444a5c}

.field-hint{
    display:block;
    color:var(--text-dim);
    font-size:12px;
    margin-top:6px;
    opacity:.7;
}

.msg{
    font-size:13px;
    margin-bottom:12px;
    min-height:18px;
    line-height:1.5;
}
.error-msg{color:var(--error)}
.success-msg{color:var(--success)}

.btn-primary{
    width:100%;
    padding:16px 24px;
    border:none;
    border-radius:var(--radius);
    background:linear-gradient(135deg,var(--accent-start),var(--accent-end));
    color:#fff;
    font-family:inherit;
    font-size:15px;
    font-weight:700;
    cursor:pointer;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    transition:transform .2s,box-shadow .2s;
    box-shadow:0 8px 32px rgba(108,92,231,.3);
    margin-top:8px;
    position:relative;
    overflow:hidden;
}

.btn-primary::before{
    content:'';
    position:absolute;
    inset:0;
    background:linear-gradient(135deg,rgba(255,255,255,.1),transparent);
    opacity:0;
    transition:opacity .2s;
}

.btn-primary:hover{
    transform:translateY(-2px);
    box-shadow:0 12px 40px rgba(108,92,231,.4);
}

.btn-primary:hover::before{opacity:1}

.btn-primary:active{transform:translateY(0)}

.btn-primary:disabled{
    opacity:.5;
    cursor:not-allowed;
    transform:none;
    box-shadow:none;
}

.btn-secondary{
    width:100%;
    padding:14px;
    border:1.5px solid var(--input-border);
    border-radius:var(--radius);
    background:transparent;
    color:var(--text-dim);
    font-family:inherit;
    font-size:13.5px;
    font-weight:500;
    cursor:pointer;
    transition:all .2s;
    margin-top:12px;
}

.btn-secondary:hover{
    color:#fff;
    border-color:rgba(255,255,255,.15);
    background:rgba(255,255,255,.03);
}

.switch-text{
    text-align:center;
    color:var(--text-dim);
    font-size:13.5px;
    margin-top:24px;
}

.switch-text a{
    color:var(--accent-end);
    text-decoration:none;
    font-weight:500;
    transition:color .2s;
}

.switch-text a:hover{color:#c084fc}

/* Password rules */
.password-rules{
    margin-top:28px;
    padding:20px;
    border:1px solid var(--border);
    border-radius:var(--radius);
    background:rgba(255,255,255,.015);
}

.password-rules h3{
    font-size:13px;
    font-weight:700;
    margin-bottom:12px;
    color:var(--text);
}

.password-rules ul{list-style:none}

.password-rules li{
    font-size:12.5px;
    color:var(--text-dim);
    padding:3px 0;
    display:flex;
    align-items:center;
    gap:8px;
    transition:color .2s;
}

.rule-icon{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:16px;height:16px;
    border-radius:50%;
    border:1.5px solid rgba(255,255,255,.1);
    flex-shrink:0;
    transition:all .2s;
    font-size:9px;
}

.password-rules li.valid{color:var(--success)}
.password-rules li.valid .rule-icon{
    border-color:var(--success);
    background:var(--success);
    color:#000;
}
.password-rules li.valid .rule-icon::after{content:'\2713'}

/* Dashboard */
.dash-header{margin-bottom:8px}

.dash-badge{
    display:inline-block;
    padding:4px 14px;
    border-radius:20px;
    background:linear-gradient(135deg,var(--accent-start),var(--accent-end));
    color:#fff;
    font-size:10px;
    font-weight:800;
    letter-spacing:1.5px;
    text-transform:uppercase;
    margin-bottom:16px;
}

.download-section{text-align:center;margin:32px 0 28px}

.btn-download{
    font-size:15px;
    padding:18px 28px;
    text-decoration:none;
    border-radius:14px;
}

.download-info{
    color:var(--text-dim);
    font-size:12.5px;
    margin-top:14px;
}

.dash-steps{
    display:flex;
    flex-direction:column;
    gap:12px;
    margin-bottom:20px;
}

.step{
    display:flex;
    align-items:center;
    gap:14px;
    padding:14px 16px;
    border-radius:var(--radius);
    background:rgba(255,255,255,.02);
    border:1px solid var(--border);
}

.step-num{
    width:32px;height:32px;
    border-radius:50%;
    background:linear-gradient(135deg,var(--accent-start),var(--accent-end));
    color:#fff;
    font-size:13px;
    font-weight:700;
    display:flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
}

.step-text{display:flex;flex-direction:column;gap:2px}
.step-text strong{font-size:13px;font-weight:600}
.step-text span{font-size:12px;color:var(--text-dim)}

@media(max-width:500px){
    .card{padding:28px 22px}
    .container{padding:16px}
}
