*{
    margin:0;
    padding:0;
    box-sizing:border-box;
    font-family:'Segoe UI',sans-serif;
}

body{
    min-height:100vh;
    display:flex;
    justify-content:center;
    align-items:center;
    background:#f4f6fa;
    overflow:hidden;
}

/* Background */

body::before{
    content:"";
    position:absolute;
    inset:0;

    background:
    radial-gradient(circle at 10% 20%,rgba(0,0,0,.03) 0 2px,transparent 3px),
    radial-gradient(circle at 90% 15%,rgba(0,0,0,.03) 0 2px,transparent 3px),
    radial-gradient(circle at 80% 80%,rgba(0,0,0,.03) 0 2px,transparent 3px);

    background-size:180px 180px;
}

.wave{
    position:absolute;
    bottom:0;
    width:100%;
    height:35vh;

    background:
    linear-gradient(
        to top,
        rgba(53,116,255,.12),
        transparent
    );
}

.container{
    width:100%;
    max-width:420px;
    padding:20px;
    z-index:2;
}

.card{
    text-align:center;
}

/* Title */

.title{
    font-size:56px;
    font-weight:700;
    color:#1f57c8;
    line-height:1;
}

.subtitle{
    margin-top:10px;
    color:#334d7a;
    font-size:16px;
    font-weight:500;
    letter-spacing:.5px;
}

/* Form */

.form{
    margin-top:40px;
}

.input-group{
    position:relative;
    margin-bottom:18px;
}

.input-group i:not(.eye){
    position:absolute;
    left:22px;
    top:50%;
    transform:translateY(-50%);

    color:#9aa4b5;
    font-size:22px;
    z-index:2;
}

.input-group input{
    width:100%;
    height:62px;

    border:none;
    border-radius:18px;

    background:white;

    padding-left:62px;
    padding-right:62px;

    font-size:18px;

    box-shadow:
        0 4px 15px rgba(0,0,0,.08);

    transition:.2s;
}

.input-group input:focus{
    outline:none;

    box-shadow:
        0 0 0 3px rgba(43,108,255,.15),
        0 4px 15px rgba(0,0,0,.08);
}

.login-status,
.login-error{
    min-height:22px;
    margin-top:-6px;
    margin-bottom:14px;
    font-size:15px;
    font-weight:700;
    text-align:left;
}

.login-status{
    color:#2259d9;
}

.login-error{
    color:#dc2626;
}

.login-status:empty,
.login-error:empty{
    display:none;
}

.eye{
    position:absolute;

    left:auto;
    right:22px;

    top:50%;
    transform:translateY(-50%);

    color:#a5afc0;
    font-size:22px;

    cursor:pointer;
    z-index:10;

    transition:.2s ease;
}

.eye:hover{
    color:#2b6cff;
}

.eye:active{
    transform:translateY(-50%) scale(.95);
}

/* Button Login */

.btn-login{
    width:100%;
    height:64px;

    border:none;
    border-radius:18px;

    background:
    linear-gradient(
        90deg,
        #2259d9,
        #2b6cff
    );

    color:white;
    font-size:22px;
    font-weight:600;

    cursor:pointer;

    box-shadow:
        0 8px 20px rgba(43,108,255,.3);

    transition:.3s;
}

.btn-login:hover:not(:disabled){
    transform:translateY(-2px);
}

.btn-login:disabled{
    cursor:not-allowed;
    opacity:.65;
    transform:none;
}

.session-dialog{
    position:fixed;
    inset:0;
    z-index:1000;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:20px;
    background:rgba(15,23,42,.55);
}

.session-dialog[hidden]{
    display:none;
}

.session-dialog-card{
    width:min(100%,460px);
    padding:28px;
    border-radius:20px;
    background:white;
    box-shadow:0 24px 60px rgba(15,23,42,.25);
    text-align:left;
}

.session-dialog-title{
    margin-bottom:16px;
    color:#172033;
    font-size:22px;
    font-weight:700;
}

.session-dialog-description{
    color:#475569;
    font-size:16px;
    line-height:1.55;
}

.session-dialog-description p{
    margin:0 0 12px;
}

.session-dialog-actions{
    display:flex;
    justify-content:flex-end;
    gap:12px;
    margin-top:24px;
}

.btn-session-cancel,
.btn-session-replace{
    min-height:46px;
    padding:0 18px;
    border-radius:12px;
    font-size:16px;
    font-weight:700;
    cursor:pointer;
}

.btn-session-cancel{
    border:1px solid #cbd5e1;
    background:white;
    color:#334155;
}

.btn-session-replace{
    border:none;
    background:#2259d9;
    color:white;
}

/* OR */

.or{
    margin:20px 0;
    color:#6f7b90;
    font-size:18px;
}

/* QR */

.btn-qr{
    width:100%;
    height:62px;

    border:none;
    border-radius:18px;

    background:white;

    color:#2259d9;

    font-size:20px;
    font-weight:600;

    box-shadow:
        0 4px 15px rgba(0,0,0,.08);

    cursor:pointer;
}

.btn-qr i{
    margin-right:8px;
}

.footer{
    margin-top:25px;
    color:#64748b;
    font-size:14px;
}

/* Mobile */

@media(max-width:480px){

    .title{
        font-size:48px;
    }

    .subtitle{
        font-size:18px;
    }

    .input-group input{
        height:58px;
    }

    .btn-login,
    .btn-qr{
        height:58px;
    }

    .session-dialog-card{
        padding:22px;
    }

    .session-dialog-actions{
        flex-direction:column-reverse;
    }

    .btn-session-cancel,
    .btn-session-replace{
        width:100%;
    }
}
