/* =========================================
   ADMIN LOGIN
========================================= */

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

html,
body {
    width: 100%;
    min-height: 100%;
}

body {
    font-family:
        Inter,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        Roboto,
        Arial,
        sans-serif;

    color: #0f172a;
}


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

.admin-login-page {
    width: 100%;
    min-height: 100vh;
    min-height: 100dvh;

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

    padding: 40px 20px;

    background: #f8fafc;
}


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

.admin-login-card {
    width: 100%;
    max-width: 448px;

    background: #ffffff;

    border: 1px solid #e7ebf0;
    border-radius: 16px;

    padding: 40px;

    box-shadow:
        0 10px 15px -3px rgba(15, 23, 42, 0.08),
        0 4px 6px -4px rgba(15, 23, 42, 0.08);
}


/* =========================================
   BACK LINK
========================================= */

.admin-back-link {
    width: fit-content;

    display: inline-flex;
    align-items: center;
    gap: 6px;

    margin-bottom: 26px;

    color: #009688;

    font-size: 15px;
    font-weight: 500;

    text-decoration: none;

    transition: opacity 0.2s ease;
}

.admin-back-link:hover {
    opacity: 0.75;
}

.back-arrow {
    font-size: 20px;
    line-height: 1;
}


/* =========================================
   ICON
========================================= */

.admin-icon-box {
    width: 48px;
    height: 48px;

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

    margin-bottom: 20px;

    border-radius: 14px;

    background: #eef0ff;
    color: #5145ff;
}

.admin-icon-box svg {
    width: 24px;
    height: 24px;

    stroke-width: 2;
}


/* =========================================
   HEADING
========================================= */

.admin-login-heading {
    margin-bottom: 28px;
}

.admin-login-heading h1 {
    margin-bottom: 8px;

    color: #0b1739;

    font-size: 25px;
    line-height: 1.25;
    font-weight: 700;

    letter-spacing: -0.4px;
}

.admin-login-heading p {
    color: #64748b;

    font-size: 15px;
    line-height: 1.5;
}


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

.admin-login-form {
    width: 100%;
}

.admin-form-group {
    width: 100%;
    margin-bottom: 17px;
}

.admin-form-group label {
    display: block;

    margin-bottom: 8px;

    color: #172554;

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


/* =========================================
   INPUTS
========================================= */

.admin-form-group input {
    width: 100%;
    height: 46px;

    padding: 0 16px;

    border: 1px solid #d8e0eb;
    border-radius: 13px;

    outline: none;

    background: #ffffff;

    color: #0f172a;

    font-family: inherit;
    font-size: 15px;

    transition:
        border-color 0.2s ease,
        box-shadow 0.2s ease;
}

.admin-form-group input::placeholder {
    color: #94a3b8;
}

.admin-form-group input:hover {
    border-color: #c2ccda;
}

.admin-form-group input:focus {
    border-color: #5145ff;

    box-shadow:
        0 0 0 3px rgba(81, 69, 255, 0.1);
}


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

.password-field {
    position: relative;
}

.password-field input {
    padding-right: 48px;
}

.password-toggle {
    position: absolute;

    top: 50%;
    right: 14px;

    transform: translateY(-50%);

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

    border: 0;
    outline: 0;

    background: transparent;
    color: #64748b;

    cursor: pointer;
}

.password-toggle svg {
    width: 18px;
    height: 18px;
}


/* =========================================
   ERRORS
========================================= */

.field-error {
    display: none;

    margin-top: 6px;

    color: #dc2626;

    font-size: 12px;
    line-height: 1.4;
}

.admin-form-group.has-error input {
    border-color: #dc2626;
}

.admin-form-group.has-error .field-error {
    display: block;
}


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

.admin-login-button {
    width: 100%;
    height: 48px;

    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;

    margin-top: 20px;

    border: none;
    border-radius: 13px;

    background: #5138ee;

    color: #ffffff;

    font-family: inherit;
    font-size: 15px;
    font-weight: 700;

    cursor: pointer;

    transition:
        background 0.2s ease,
        transform 0.15s ease,
        box-shadow 0.2s ease;
}

.admin-login-button:hover {
    background: #4329e6;

    box-shadow:
        0 7px 18px rgba(81, 56, 238, 0.2);
}

.admin-login-button:active {
    transform: translateY(1px);
}

.admin-login-button:disabled {
    opacity: 0.7;
    cursor: not-allowed;
}


/* =========================================
   SPINNER
========================================= */

.login-spinner {
    width: 17px;
    height: 17px;

    display: none;

    border: 2px solid rgba(255, 255, 255, 0.4);
    border-top-color: #ffffff;

    border-radius: 50%;

    animation: admin-spin 0.7s linear infinite;
}

.admin-login-button.loading .login-spinner {
    display: block;
}

@keyframes admin-spin {
    to {
        transform: rotate(360deg);
    }
}


/* =========================================
   TABLET
========================================= */

@media (max-width: 768px) {

    .admin-login-page {
        padding: 30px 20px;
    }

    .admin-login-card {
        max-width: 440px;
        padding: 34px;
    }

}


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

@media (max-width: 480px) {

    .admin-login-page {
        align-items: flex-start;

        padding:
            max(24px, env(safe-area-inset-top))
            16px
            max(24px, env(safe-area-inset-bottom));
    }

    .admin-login-card {
        margin-top: 25px;

        padding: 26px 22px;

        border-radius: 14px;
    }

    .admin-back-link {
        margin-bottom: 24px;
    }

    .admin-icon-box {
        width: 46px;
        height: 46px;

        margin-bottom: 18px;
    }

    .admin-login-heading {
        margin-bottom: 25px;
    }

    .admin-login-heading h1 {
        font-size: 23px;
    }

    .admin-login-heading p {
        font-size: 14px;
    }

    .admin-form-group input {
        height: 48px;
    }

    .admin-login-button {
        height: 49px;
    }

}


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

@media (max-width: 360px) {

    .admin-login-page {
        padding-left: 12px;
        padding-right: 12px;
    }

    .admin-login-card {
        padding: 24px 18px;
    }

    .admin-login-heading h1 {
        font-size: 21px;
    }

}


/* =========================================
   SHORT SCREEN
========================================= */

@media (max-height: 620px) and (min-width: 481px) {

    .admin-login-page {
        align-items: flex-start;
        padding-top: 25px;
        padding-bottom: 25px;
    }

}