﻿/* =========================================================
   Login Page
========================================================= */

#login-page {
    --login-heading: #2f3638;
    --login-text: #58676d;
    --login-muted: #819096;
    --login-primary: #159fca;
    --login-primary-dark: #087aa1;
    --login-border: #dce7ea;
    --login-soft: #f5fafb;
    --login-shadow: 0 20px 55px rgba(38, 54, 58, .09);
    --login-shadow-hover: 0 26px 65px rgba(38, 54, 58, .14);
    --login-ease: cubic-bezier(.22, 1, .36, 1);
    position: relative;
    overflow: hidden;
    min-height: calc(100vh - 150px);
    padding: 100px 0 85px;
    color: var(--login-text);
    background: radial-gradient( circle at 7% 8%, rgba(34, 201, 223, .13), transparent 24% ), radial-gradient( circle at 94% 18%, rgba(21, 159, 202, .10), transparent 24% ), linear-gradient( 180deg, #f7fbfc 0%, #ffffff 52%, #f7fbfc 100% );
}


    /* =========================================================
   Decorative Elements
========================================================= */

    #login-page::before,
    #login-page::after {
        content: "";
        position: absolute;
        border: 1px solid rgba(21, 159, 202, .11);
        border-radius: 50%;
        pointer-events: none;
    }

    #login-page::before {
        width: 380px;
        height: 380px;
        top: 220px;
        left: -250px;
    }

    #login-page::after {
        width: 280px;
        height: 280px;
        right: -190px;
        bottom: 100px;
    }


    /* =========================================================
   Container
========================================================= */

    #login-page .login-container {
        position: relative;
        z-index: 1;
        width: min(1180px, calc(100% - 40px));
        margin: 1.4px auto;
    }


    /* =========================================================
   Layout
========================================================= */

    #login-page .login-layout {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 430px;
        align-items: center;
        gap: 80px;
    }


    /* =========================================================
   Login Introduction
========================================================= */

    #login-page .login-intro {
        padding: 20px 0;
    }

    #login-page .login-eyebrow {
        display: inline-flex;
        align-items: center;
        gap: 10px;
        margin-bottom: 20px;
        color: var(--login-primary-dark);
        font-size: 13px;
        font-weight: 800;
        letter-spacing: 2px;
        transition: transform .3s var(--login-ease), color .3s ease;
    }

        #login-page .login-eyebrow:hover {
            color: var(--login-primary);
        }

            #login-page .login-eyebrow:hover::before {
                transform: scaleX(1.25);
            }

        #login-page .login-eyebrow::before {
            content: "";
            width: 34px;
            height: 2px;
            border-radius: 99px;
            background: var(--login-primary);
        }

    #login-page .login-intro h1 {
        max-width: 650px;
        margin: 0;
        color: var(--login-heading);
        font-size: clamp(40px, 4.5vw, 60px);
        font-weight: 780;
        line-height: 1.08;
        letter-spacing: -2px;
    }

        #login-page .login-intro h1 strong {
            color: var(--login-primary);
            font-weight: inherit;
        }

    #login-page .login-intro > p {
        max-width: 580px;
        margin: 24px 0 30px;
        color: var(--login-text);
        font-size: 17px;
        line-height: 1.75;
    }


    /* =========================================================
   Login Illustration
========================================================= */

    #login-page .login-illustration {
        position: relative;
        display: flex;
        align-items: center;
        justify-content: center;
        width: min(500px, 100%);
        min-height: 280px;
    }

        #login-page .login-illustration::before {
            content: "";
            position: absolute;
            width: 330px;
            height: 210px;
            border-radius: 50%;
            background: rgba(34, 201, 223, .10);
            filter: blur(8px);
        }

        #login-page .login-illustration img {
            position: relative;
            z-index: 1;
            width: min(430px, 90%);
            height: auto;
            animation: login-illustration-enter .8s var(--login-ease) .12s both, login-illustration-float 5s ease-in-out 1s infinite;
            transition: transform .35s var(--login-ease), filter .35s ease;
        }

        #login-page .login-illustration:hover img {
            transform: scale(1.025);
            filter: drop-shadow(0 14px 20px rgba(21, 159, 202, .10));
        }


    /* =========================================================
   Login Form
========================================================= */

    #login-page .login-form-container {
        width: 100%;
    }

    #login-page .login-form {
        width: 100%;
        margin: 0;
    }

    #login-page .login-card {
        position: relative;
        padding: 38px;
        border: 1px solid rgba(220, 231, 234, .95);
        border-radius: 22px;
        background: rgba(255, 255, 255, .98);
        box-shadow: var(--login-shadow);
        overflow: hidden;
        animation: login-card-enter .65s var(--login-ease) both;
        transition: transform .3s var(--login-ease), box-shadow .3s var(--login-ease), border-color .3s ease;
    }

        #login-page .login-card::before {
            content: "";
            position: absolute;
            top: 0;
            left: 12%;
            width: 76%;
            height: 3px;
            border-radius: 0 0 99px 99px;
            background: linear-gradient(90deg, transparent, var(--login-primary), transparent);
            opacity: .9;
        }

        #login-page .login-card:hover {
            transform: translateY(-4px);
            border-color: rgba(21, 159, 202, .20);
            box-shadow: var(--login-shadow-hover);
        }


    /* =========================================================
   Login Header
========================================================= */

    #login-page .login-card-header {
        margin-bottom: 28px;
    }

        #login-page .login-card-header > span {
            display: block;
            margin-bottom: 9px;
            color: var(--login-primary-dark);
            font-size: 12px;
            font-weight: 800;
            letter-spacing: 1.8px;
        }

        #login-page .login-card-header h2 {
            margin: 0 0 9px;
            color: var(--login-heading);
            font-size: 29px;
            line-height: 1.2;
            font-weight: 780;
        }

        #login-page .login-card-header p {
            margin: 0;
            color: var(--login-muted);
            font-size: 14px;
            line-height: 1.6;
        }


    /* =========================================================
   Validation
========================================================= */

    #login-page .login-validation {
        margin-bottom: 18px;
        color: #c0392b;
        font-size: 13px;
        font-weight: 600;
        line-height: 1.5;
    }


    /* =========================================================
   Form Fields
========================================================= */

    #login-page .login-field {
        margin-bottom: 20px;
    }

        #login-page .login-field > label {
            display: block;
            margin-bottom: 8px;
            color: var(--login-heading);
            font-size: 14px;
            font-weight: 700;
        }

    #login-page .login-input {
        position: relative;
    }

        #login-page .login-input > i {
            position: absolute;
            top: 50%;
            left: 16px;
            color: var(--login-muted);
            transform: translateY(-50%);
            pointer-events: none;
        }

        #login-page .login-input input {
            width: 100%;
            height: 54px;
            padding: 0 46px;
            border: 1px solid var(--login-border);
            border-radius: 11px;
            outline: 0;
            color: var(--login-heading);
            background: #ffffff;
            font-size: 15px;
            transition: border-color .25s ease, box-shadow .25s ease, background-color .25s ease, transform .25s var(--login-ease);
        }

            #login-page .login-input input::placeholder {
                color: #a1adb1;
            }

            #login-page .login-input input:hover {
                border-color: #bfdde3;
                background: #fcfeff;
            }

            #login-page .login-input input:focus {
                border-color: var(--login-primary);
                background: #ffffff;
                box-shadow: 0 0 0 4px rgba(21, 159, 202, .10);
                transform: translateY(-1px);
            }

        #login-page .login-input:focus-within > i {
            color: var(--login-primary-dark);
        }

    #login-page .login-error,
    #login-page .login-error.field-validation-error {
        display: block;
        margin-top: 6px;
        color: #c0392b;
        font-size: 12px;
        font-weight: 600;
        line-height: 1.5;
    }


    /* =========================================================
   Password Toggle
========================================================= */

    #login-page .login-password-toggle {
        position: absolute;
        top: 50%;
        right: 13px;
        width: 30px;
        height: 30px;
        padding: 0;
        border: 0;
        background: transparent;
        cursor: pointer;
        transform: translateY(-50%);
    }

        #login-page .login-password-toggle img {
            width: 17px;
            height: 17px;
            object-fit: contain;
        }

        #login-page .login-password-toggle:hover {
            opacity: .78;
        }

        #login-page .login-password-toggle:focus-visible {
            outline: 2px solid var(--login-primary);
            outline-offset: 2px;
            border-radius: 6px;
        }

    #login-page #open_eye {
        display: none;
    }


    /* =========================================================
   Login Options
========================================================= */

    #login-page .login-options {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 15px;
        margin: 3px 0 24px;
    }

    #login-page .login-remember {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        color: var(--login-text);
        font-size: 13px;
        cursor: pointer;
    }

        #login-page .login-remember input {
            width: 16px;
            height: 16px;
            margin: 0;
            accent-color: var(--login-primary);
        }

    #login-page .login-options > a {
        color: var(--login-primary-dark);
        font-size: 13px;
        font-weight: 700;
        text-decoration: none;
    }

        #login-page .login-options > a:hover,
        #login-page .login-register a:hover {
            text-decoration: underline;
        }


    /* =========================================================
   Sign In Button
========================================================= */

    #login-page .login-submit {
        width: 100%;
        min-height: 54px;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 13px;
        border: 0;
        border-radius: 999px;
        background: linear-gradient( 100deg, #159fca, #087aa1 );
        color: #ffffff;
        font-size: 15px;
        font-weight: 750;
        cursor: pointer;
        box-shadow: 0 12px 25px rgba(21, 159, 202, .20);
        transition: transform .2s ease, box-shadow .2s ease;
    }

        #login-page .login-submit:hover {
            transform: translateY(-2px);
            box-shadow: 0 16px 30px rgba(21, 159, 202, .27);
        }

        #login-page .login-submit i {
            width: auto;
            height: auto;
            display: inline-block;
            border-radius: 0;
            background: transparent;
            color: #ffffff;
            font-size: 17px;
            line-height: 1;
            transition: transform .25s var(--login-ease);
        }

        #login-page .login-submit:hover i {
            transform: translateX(4px);
        }

    #login-page .login-register {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 6px;
        margin-top: 26px;
        padding-top: 18px;
        border-top: 1px solid var(--login-border);
        color: var(--login-muted);
        font-size: 14px;
        line-height: 1.6;
        text-align: center;
    }

        #login-page .login-register a {
            position: relative;
            color: var(--login-primary-dark);
            font-weight: 750;
            text-decoration: none;
        }

            #login-page .login-register a::after {
                content: "";
                position: absolute;
                left: 0;
                right: 0;
                bottom: -2px;
                height: 1px;
                background: currentColor;
                transform: scaleX(0);
                transform-origin: right;
                transition: transform .25s var(--login-ease);
            }

            #login-page .login-register a:hover::after {
                transform: scaleX(1);
                transform-origin: left;
            }


/* =========================================================
   Responsive
========================================================= */

@media (max-width: 960px) {

    #login-page {
        min-height: auto;
        padding: 70px 0 65px;
    }

        #login-page .login-layout {
            grid-template-columns: 1fr;
            gap: 45px;
            max-width: 650px;
            margin: 0 auto;
        }

        #login-page .login-intro {
            text-align: center;
        }

        #login-page .login-eyebrow {
            justify-content: center;
        }

        #login-page .login-intro h1,
        #login-page .login-intro > p {
            margin-left: auto;
            margin-right: auto;
        }

        #login-page .login-illustration {
            margin: 0 auto;
        }

        #login-page .login-form-container {
            max-width: 450px;
            margin: 0 auto;
        }
}


@media (max-width: 600px) {

    #login-page {
        min-height: auto;
        padding: 50px 0;
    }

        #login-page .login-container {
            width: calc(100% - 24px);
        }

        #login-page .login-intro h1 {
            font-size: 35px;
            letter-spacing: -1px;
        }

        #login-page .login-intro > p {
            font-size: 15px;
        }

        #login-page .login-illustration {
            min-height: 220px;
        }

            #login-page .login-illustration img {
                width: 90%;
            }

        #login-page .login-card {
            padding: 27px 20px;
            border-radius: 18px;
        }

        #login-page .login-card-header h2 {
            font-size: 25px;
        }
}


@media (max-width: 400px) {

    #login-page .login-intro h1 {
        font-size: 32px;
    }

    #login-page .login-card {
        padding: 24px 17px;
    }

    #login-page .login-options {
        align-items: flex-start;
        flex-direction: column;
        gap: 10px;
    }
}

/* =========================================================
   Login Motion
========================================================= */

@keyframes login-card-enter {
    from {
        opacity: 0;
        transform: translateY(22px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes login-illustration-enter {
    from {
        opacity: 0;
        transform: translateY(18px) scale(.97);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes login-illustration-float {
    0%, 100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-7px);
    }
}

@media (prefers-reduced-motion: reduce) {
    #login-page .login-card,
    #login-page .login-illustration img {
        animation: none;
    }

    #login-page .login-card,
    #login-page .login-submit,
    #login-page .login-input input,
    #login-page .login-password-toggle,
    #login-page .login-submit i,
    #login-page .login-eyebrow::before {
        transition: none;
    }
}
