/* =========================================================
   SIAKAD
   LUPA PASSWORD
   STANDALONE LAYOUT
========================================================= */


/* =========================================================
   RESET
========================================================= */

* {
    box-sizing: border-box;
}


html,
body {
    margin: 0;
    padding: 0;

    width: 100%;
    min-height: 100%;

    font-family:
        Inter,
        "Segoe UI",
        Arial,
        sans-serif;

    color: #172b4d;

    background: #f7f9fc;
}


/* =========================================================
   PAGE
========================================================= */

.password-page {

    width: 100%;

    min-height: 100dvh;

    display: flex;

    align-items: center;

    justify-content: center;

    position: relative;

    overflow: hidden;

    padding: 25px 20px;

}


/* =========================================================
   DECORATION
========================================================= */

.decor {

    position: absolute;

    border-radius: 50%;

    pointer-events: none;

}


.decor-left {

    width: 380px;
    height: 380px;

    left: -270px;
    top: -250px;

    background:
        radial-gradient(
            circle,
            rgba(59,130,246,.08),
            rgba(59,130,246,0)
        );

}


.decor-right {

    width: 450px;
    height: 450px;

    right: -320px;
    bottom: -320px;

    background:
        radial-gradient(
            circle,
            rgba(59,130,246,.07),
            rgba(59,130,246,0)
        );

}


/* =========================================================
   CONTAINER
========================================================= */

.password-container {

    position: relative;

    z-index: 2;

    width: 100%;

    max-width: 560px;

    text-align: center;

}


/* =========================================================
   LOGO
========================================================= */

.password-logo {

    width: 58px;
    height: 58px;

    margin: 0 auto 12px;

    border-radius: 16px;

    background: #fff;

    display: flex;

    align-items: center;
    justify-content: center;

    box-shadow:
        0 8px 25px rgba(15,23,42,.07);

}


.password-logo img {

    width: 43px;
    height: 43px;

    object-fit: contain;

}


/* =========================================================
   HEADER
========================================================= */

.password-header {

    margin-bottom: 18px;

}


.password-badge {

    display: inline-flex;

    align-items: center;

    gap: 5px;

    padding: 5px 10px;

    border-radius: 7px;

    background: #edf4ff;

    color: #2563eb;

    font-size: 9px;

    font-weight: 800;

    letter-spacing: .8px;

}


.password-header h1 {

    margin: 8px 0 4px;

    font-size: 29px;

    line-height: 1.15;

    letter-spacing: -.7px;

    color: #122442;

}


.password-header p {

    margin: 0 auto;

    max-width: 430px;

    color: #7b879a;

    font-size: 11px;

    line-height: 1.45;

}


/* =========================================================
   CARD
========================================================= */

.password-card {

    width: 100%;

    max-width: 560px;

    margin: 0 auto;

    padding: 23px 27px;

    border-radius: 17px;

    background: rgba(255,255,255,.97);

    border: 1px solid #e7edf5;

    box-shadow:
        0 15px 40px rgba(15,23,42,.065);

}


/* =========================================================
   STEP
========================================================= */

.password-step {

    display: none;

}


.password-step.active {

    display: block;

    animation:
        stepIn .35s ease;

}


@keyframes stepIn {

    from {

        opacity: 0;

        transform:
            translateY(8px);

    }

    to {

        opacity: 1;

        transform:
            translateY(0);

    }

}


/* =========================================================
   STEP CONTENT
========================================================= */

.step-label {

    margin-bottom: 4px;

    color: #2563eb;

    font-size: 8px;

    font-weight: 800;

    letter-spacing: 1px;

}


.password-step h2 {

    margin: 0 0 4px;

    color: #172b4d;

    font-size: 20px;

    line-height: 1.2;

}


.step-description {

    margin: 0 0 17px;

    color: #7b879a;

    font-size: 10.5px;

    line-height: 1.45;

}


/* =========================================================
   FORM
========================================================= */

.form-group {

    margin-bottom: 11px;

    text-align: left;

}


.form-group label {

    display: block;

    margin-bottom: 6px;

    color: #1e293b;

    font-size: 11px;

    font-weight: 700;

}


/* =========================================================
   INPUT
========================================================= */

.input-box {

    position: relative;

    width: 100%;

}


.input-box > i:first-child {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);

    color: #94a3b8;
    font-size: 15px;

    pointer-events: none;
    z-index: 2;
}


.input-box input {
    width: 100%;
    height: 52px;

    padding: 0 46px 0 42px;

    border: 1px solid #dbe3ef;
    border-radius: 10px;

    background: #fff;

    color: #1e293b;
    font-size: 13px;

    outline: none;

    transition:
        border-color .2s ease,
        box-shadow .2s ease,
        background .2s ease;
}


.input-box input::placeholder {
    color: #a7b4c7;
}


.input-box input:focus {
    border-color: #60a5fa;

    box-shadow:
        0 0 0 3px rgba(59, 130, 246, .10);

    background: #fff;
}


/* =========================================================
   PRIMARY BUTTON
========================================================= */

.btn-primary {

    width: 100%;

    height: 47px;

    border: 0;

    border-radius: 10px;

    background:
        linear-gradient(
            135deg,
            #3478ee,
            #2563eb
        );

    color: #fff;

    display: flex;

    align-items: center;

    justify-content: center;

    gap: 8px;

    font-size: 12px;

    font-weight: 700;

    cursor: pointer;

    box-shadow:
        0 8px 20px
        rgba(37,99,235,.18);

    transition: .2s;

}


.btn-primary:hover {

    transform: translateY(-1px);

    box-shadow:
        0 11px 24px
        rgba(37,99,235,.22);

}


.btn-primary:active {

    transform: translateY(0);

}


/* =========================================================
   BACK LOGIN
========================================================= */

.back-login {

    display: inline-flex;

    align-items: center;

    gap: 6px;

    margin-top: 15px;

    color: #2563eb;

    text-decoration: none;

    font-size: 11px;

    font-weight: 700;

}


.back-login:hover {

    text-decoration: underline;

}


/* =========================================================
   COPYRIGHT
========================================================= */

.copyright {

    margin-top: 11px;

    color: #94a3b8;

    font-size: 9px;

}


/* =========================================================
   OTP
========================================================= */

.otp-icon {

    width: 52px;
    height: 52px;

    margin:
        0 auto 10px;

    border-radius: 15px;

    background: #edf4ff;

    color: #2563eb;

    display: flex;

    align-items: center;
    justify-content: center;

    font-size: 23px;

}


.otp-inputs {

    display: flex;

    justify-content: center;

    gap: 7px;

    margin:
        18px 0 12px;

}


.otp-inputs input {

    width: 42px;
    height: 46px;

    border:
        1px solid #dce3ed;

    border-radius: 9px;

    text-align: center;

    font-size: 18px;

    font-weight: 700;

    color: #172b4d;

    outline: none;

}


.otp-inputs input:focus {

    border-color: #2563eb;

    box-shadow:
        0 0 0 3px
        rgba(37,99,235,.08);

}


.otp-timer {

    margin-bottom: 15px;

    color: #7b879a;

    font-size: 10px;

}


.otp-timer strong {

    color: #2563eb;

}


/* =========================================================
   LINK BUTTON
========================================================= */

.btn-link {

    border: 0;

    background: none;

    margin-top: 12px;

    color: #2563eb;

    font-size: 10px;

    font-weight: 700;

    cursor: pointer;

}


/* =========================================================
   SUCCESS
========================================================= */

.success-icon {

    width: 52px;
    height: 52px;

    margin:
        0 auto 10px;

    border-radius: 50%;

    background: #ecfdf3;

    color: #16a34a;

    display: flex;

    align-items: center;
    justify-content: center;

    font-size: 24px;

}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 700px) {

    .password-page {
        min-height: 100dvh;

        display: flex;
        align-items: center;
        justify-content: center;

        padding: 18px 12px;
    }

    .password-container {
        width: 100%;
        max-width: 360px;
    }


    /* =========================
       LOGO
    ========================= */

    .password-logo {
        width: 56px;
        height: 56px;

        margin: 0 auto 10px;

        border-radius: 15px;
    }

    .password-logo img {
        width: 41px;
        height: 41px;
    }


    /* =========================
       HEADER
    ========================= */

    .password-header {
        margin-bottom: 16px;
    }

    .password-badge {
        padding: 5px 9px;
        font-size: 8px;
    }

    .password-header h1 {
        margin: 8px 0 4px;

        font-size: 25px;
        line-height: 1.15;
    }

    .password-header p {
        max-width: 330px;

        font-size: 10px;
        line-height: 1.45;
    }


    /* =========================
       CARD
    ========================= */

    .password-card {
        width: 100%;

        padding: 22px 17px;

        border-radius: 16px;
    }


    /* =========================
       STEP
    ========================= */

    .step-label {
        margin-bottom: 4px;

        font-size: 8px;
    }

    .password-step h2 {
        margin-bottom: 4px;

        font-size: 19px;
    }

    .step-description {
        margin-bottom: 16px;

        font-size: 10px;
    }


    /* =========================
       FORM
    ========================= */

    .form-group {
        margin-bottom: 10px;
    }

    .form-group label {
        margin-bottom: 6px;

        font-size: 10px;
    }


    .input-box input {
        height: 46px;

        font-size: 11px;
    }

    .input-box > i {
        left: 13px;

        font-size: 14px;
    }


    /* =========================
       BUTTON
    ========================= */

   .btn-primary {
    width: 100%;
    height: 47px;

    border: 0;
    border-radius: 10px;

    background: linear-gradient(
        135deg,
        #60a5fa 0%,
        #3b82f6 50%,
        #1d4ed8 100%
    );

    color: #fff;

    display: flex;
    align-items: center;
    justify-content: center;

    gap: 8px;

    font-size: 12px;
    font-weight: 700;

    cursor: pointer;

    box-shadow:
        0 9px 22px rgba(37, 99, 235, .22);

    transition:
        transform .2s ease,
        box-shadow .2s ease,
        filter .2s ease;
}

.btn-primary:hover {
    transform: translateY(-1px);

    filter: brightness(1.04);

    box-shadow:
        0 12px 27px rgba(37, 99, 235, .28);
}

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

    filter: brightness(.98);
}


    /* =========================
       FOOTER
    ========================= */

    .back-login {
        margin-top: 15px;

        font-size: 10px;
    }

    .copyright {
        margin-top: 10px;

        font-size: 8px;
    }

}


/* =========================================================
   VERY SMALL PHONE
========================================================= */

@media (max-width: 380px) {

    .password-page {

        padding:
            15px 10px 18px;

    }


    .password-container {

        max-width: 360px;

    }


    .password-logo {

        width: 50px;
        height: 50px;

    }


    .password-logo img {

        width: 37px;
        height: 37px;

    }


    .password-header h1 {

        font-size: 23px;

    }


    .password-card {

        padding:
            18px 14px;

    }


    .otp-inputs {

        gap: 5px;

    }


    .otp-inputs input {

        width: 39px;
        height: 44px;

    }

}

/* =========================================================
   TOGGLE PASSWORD
   ========================================================= */

.toggle-password {
    position: absolute;

    right: 8px;
    top: 50%;

    transform: translateY(-50%);

    width: 34px;
    height: 34px;

    display: flex;
    align-items: center;
    justify-content: center;

    padding: 0;

    border: 0 !important;
    outline: none !important;

    background: transparent !important;

    color: #94a3b8;

    cursor: pointer;

    border-radius: 8px;

    box-shadow: none !important;

    z-index: 5;
}

.toggle-password:hover {
    background: #f1f5f9 !important;
    color: #3b82f6;
}

.toggle-password:focus {
    outline: none !important;
    box-shadow: none !important;
}

.toggle-password i {
    position: static !important;

    transform: none !important;

    font-size: 16px;

    color: inherit;

    pointer-events: none;
}

.form-group {
    margin-bottom: 16px;
}

.form-group label {
    display: block;

    margin-bottom: 7px;

    color: #334155;

    font-size: 12px;
    font-weight: 600;
}

/* =========================================================
   PAPER PLANE - ANIMASI KIRIM OTP
   ========================================================= */

#btnKirimOtp .btn-icon {
    display: inline-block;
    margin-left: 8px;
    transition: transform .3s ease;
}

/* Saat tombol mengirim */
#btnKirimOtp.loading .btn-icon {
    animation: paperPlaneFly 1s ease-in-out infinite;
}

@keyframes paperPlaneFly {

    0% {
        transform: translate(0, 0) rotate(0deg);
        opacity: 1;
    }

    35% {
        transform: translate(6px, -5px) rotate(-8deg);
        opacity: 1;
    }

    70% {
        transform: translate(14px, -10px) rotate(-15deg);
        opacity: .75;
    }

    100% {
        transform: translate(22px, -16px) rotate(-20deg);
        opacity: 0;
    }
}