/*
|--------------------------------------------------------------------------
| TTS Ludo — Login Styles
|--------------------------------------------------------------------------
|
| STEP 1 — Login UI
|--------------------------------------------------------------------------
*/

:root
{
    --login-bg:
        #f7f9fc;

    --login-card:
        #ffffff;

    --login-primary:
        #ff0000;

    --login-primary-dark:
        #d80000;

    --login-navy:
        #0b2348;

    --login-text:
        #172033;

    --login-muted:
        #667085;

    --login-border:
        #d9e1ec;

    --login-border-soft:
        #e9eef5;

    --login-input-bg:
        #fbfcfe;

    --login-error:
        #d92d20;

    --login-success:
        #138a4b;

    --login-radius-lg:
        24px;

    --login-radius-md:
        14px;

    --login-radius-sm:
        11px;

    --login-transition:
        180ms ease;
}


*
{
    box-sizing:
        border-box;
}


html
{
    margin:
        0;

    padding:
        0;
}


body
{
    margin:
        0;

    min-height:
        100vh;

    background:
        var(--login-bg);

    color:
        var(--login-text);

    font-family:
        Inter,
        ui-sans-serif,
        system-ui,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        sans-serif;

    -webkit-font-smoothing:
        antialiased;
}


a
{
    color:
        inherit;
}


button,
input
{
    font:
        inherit;
}


/*
|--------------------------------------------------------------------------
| Page
|--------------------------------------------------------------------------
*/

.login-page
{
    min-height:
        100vh;

    display:
        flex;

    align-items:
        flex-start;

    justify-content:
        center;

    padding:
        52px 20px 70px;
}


/*
|--------------------------------------------------------------------------
| Card
|--------------------------------------------------------------------------
*/

.login-card
{
    width:
        min(
            100%,
            520px
        );

    overflow:
        hidden;

    border:
        1px solid
        rgba(
            211,
            220,
            233,
            0.95
        );

    border-radius:
        var(--login-radius-lg);

    background:
        var(--login-card);

    box-shadow:
        0 22px 55px
        rgba(
            15,
            23,
            42,
            0.10
        );
}


/*
|--------------------------------------------------------------------------
| Header
|--------------------------------------------------------------------------
*/

.login-header
{
    min-height:
        72px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        space-between;

    gap:
        16px;

    padding:
        15px 24px;

    border-bottom:
        1px solid
        var(--login-border-soft);
}


.login-brand
{
    display:
        inline-flex;

    align-items:
        center;

    gap:
        10px;

    text-decoration:
        none;
}


.login-brand-icon
{
    width:
        42px;

    height:
        42px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    border-radius:
        12px;

    background:
        #eef5ff;

    font-size:
        22px;
}


.login-brand-text
{
    color:
        var(--login-navy);

    font-size:
        19px;

    font-weight:
        800;

    letter-spacing:
        -0.02em;
}


.login-step
{
    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    min-height:
        30px;

    padding:
        6px 11px;

    border-radius:
        999px;

    background:
        #fff1f1;

    color:
        #d60000;

    font-size:
        10px;

    font-weight:
        800;

    letter-spacing:
        0.1em;
}


/*
|--------------------------------------------------------------------------
| Intro
|--------------------------------------------------------------------------
*/

.login-intro
{
    padding:
        34px 34px 8px;
}


.login-kicker
{
    display:
        inline-block;

    margin-bottom:
        8px;

    color:
        #6a7890;

    font-size:
        10px;

    font-weight:
        800;

    letter-spacing:
        0.13em;
}


.login-intro h1
{
    margin:
        0;

    color:
        var(--login-navy);

    font-size:
        clamp(
            30px,
            5vw,
            40px
        );

    line-height:
        1.1;

    letter-spacing:
        -0.035em;
}


.login-intro p
{
    margin:
        10px 0 0;

    color:
        var(--login-muted);

    font-size:
        14px;

    line-height:
        1.6;
}


/*
|--------------------------------------------------------------------------
| Form
|--------------------------------------------------------------------------
*/

.login-form
{
    padding:
        24px 34px 34px;
}


.form-field
{
    margin-bottom:
        20px;
}


.form-field label
{
    display:
        block;

    margin-bottom:
        8px;

    color:
        #27344d;

    font-size:
        13px;

    font-weight:
        750;
}


.form-field label span
{
    color:
        var(--login-primary);
}


/*
|--------------------------------------------------------------------------
| Password Label
|--------------------------------------------------------------------------
*/

.password-label-row
{
    display:
        flex;

    align-items:
        center;

    justify-content:
        space-between;

    gap:
        12px;

    margin-bottom:
        8px;
}


.password-label-row label
{
    margin:
        0;
}


.forgot-password-link
{
    color:
        #315f9d;

    font-size:
        11px;

    font-weight:
        700;

    text-decoration:
        none;

    white-space:
        nowrap;
}


.forgot-password-link:hover
{
    text-decoration:
        underline;
}


/*
|--------------------------------------------------------------------------
| Input
|--------------------------------------------------------------------------
*/

.input-wrapper
{
    position:
        relative;

    display:
        flex;

    align-items:
        center;

    min-height:
        52px;

    border:
        1px solid
        var(--login-border);

    border-radius:
        var(--login-radius-sm);

    background:
        var(--login-input-bg);

    transition:
        border-color var(--login-transition),
        box-shadow var(--login-transition),
        background var(--login-transition);
}


.input-wrapper:focus-within
{
    border-color:
        #7aa7ee;

    background:
        #ffffff;

    box-shadow:
        0 0 0 4px
        rgba(
            58,
            134,
            255,
            0.10
        );
}


.input-wrapper.input-error
{
    border-color:
        rgba(
            217,
            45,
            32,
            0.75
        );

    background:
        #fffafa;
}


.input-wrapper.input-success
{
    border-color:
        rgba(
            19,
            138,
            75,
            0.65
        );

    background:
        #fbfffd;
}


.input-icon
{
    flex:
        0 0 45px;

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    color:
        #6c7b90;

    font-size:
        16px;
}


.input-wrapper input
{
    width:
        100%;

    min-width:
        0;

    height:
        50px;

    padding:
        0 14px 0 0;

    border:
        0;

    outline:
        0;

    background:
        transparent;

    color:
        #172033;

    font-size:
        14px;
}


.input-wrapper input::placeholder
{
    color:
        #9aa6b8;
}


/*
|--------------------------------------------------------------------------
| Password Toggle
|--------------------------------------------------------------------------
*/

.password-wrapper input
{
    padding-right:
        48px;
}


.password-toggle
{
    position:
        absolute;

    top:
        50%;

    right:
        8px;

    width:
        36px;

    height:
        36px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    transform:
        translateY(-50%);

    border:
        0;

    border-radius:
        9px;

    background:
        transparent;

    cursor:
        pointer;

    font-size:
        15px;
}


.password-toggle:hover
{
    background:
        #eef2f7;
}


/*
|--------------------------------------------------------------------------
| Errors
|--------------------------------------------------------------------------
*/

.field-error
{
    min-height:
        0;

    margin:
        6px 0 0;

    color:
        var(--login-error);

    font-size:
        11px;

    line-height:
        1.45;
}


.field-error:empty
{
    display:
        none;
}


/*
|--------------------------------------------------------------------------
| Message
|--------------------------------------------------------------------------
*/

.login-message
{
    margin-top:
        4px;

    padding:
        12px 14px;

    border:
        1px solid
        var(--login-border);

    border-radius:
        11px;

    font-size:
        12px;

    line-height:
        1.5;
}


.login-message.error
{
    border-color:
        #f2c3bd;

    background:
        #fff8f7;

    color:
        #a12b22;
}


.login-message.success
{
    border-color:
        #b9e4c8;

    background:
        #f3fff7;

    color:
        #176637;
}


/*
|--------------------------------------------------------------------------
| Login Button
|--------------------------------------------------------------------------
*/

.login-button
{
    width:
        100%;

    min-height:
        52px;

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    gap:
        9px;

    margin-top:
        18px;

    border:
        0;

    border-radius:
        var(--login-radius-sm);

    background:
        var(--login-primary);

    color:
        #ffffff;

    font-size:
        14px;

    font-weight:
        850;

    cursor:
        pointer;

    box-shadow:
        0 9px 20px
        rgba(
            255,
            0,
            0,
            0.18
        );

    transition:
        transform var(--login-transition),
        background var(--login-transition),
        box-shadow var(--login-transition),
        opacity var(--login-transition);
}


.login-button:hover
{
    background:
        var(--login-primary-dark);

    transform:
        translateY(-1px);

    box-shadow:
        0 12px 24px
        rgba(
            255,
            0,
            0,
            0.22
        );
}


.login-button:active
{
    transform:
        translateY(0);
}


.login-button:disabled
{
    opacity:
        0.68;

    cursor:
        wait;

    transform:
        none;
}


.login-button.is-loading
.login-button-icon
{
    animation:
        loginSpin 800ms linear infinite;
}


@keyframes loginSpin
{
    from
    {
        transform:
            rotate(0deg);
    }

    to
    {
        transform:
            rotate(360deg);
    }
}


/*
|--------------------------------------------------------------------------
| Registration Link
|--------------------------------------------------------------------------
*/

.register-link-area
{
    margin-top:
        22px;

    text-align:
        center;
}


.register-link-area p
{
    margin:
        0;

    color:
        #748197;

    font-size:
        12px;
}


.register-link-area a
{
    color:
        #d60000;

    font-weight:
        800;

    text-decoration:
        none;
}


.register-link-area a:hover
{
    text-decoration:
        underline;
}


/*
|--------------------------------------------------------------------------
| Back Home
|--------------------------------------------------------------------------
*/

.back-home-button
{
    width:
        100%;

    min-height:
        45px;

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    gap:
        8px;

    margin-top:
        14px;

    border:
        1px solid
        var(--login-border);

    border-radius:
        var(--login-radius-sm);

    background:
        #ffffff;

    color:
        #36445c;

    font-size:
        12px;

    font-weight:
        800;

    text-decoration:
        none;

    transition:
        border-color var(--login-transition),
        background var(--login-transition),
        transform var(--login-transition);
}


.back-home-button:hover
{
    border-color:
        #b8c2d0;

    background:
        #f9fbfd;

    transform:
        translateY(-1px);
}


/*
|--------------------------------------------------------------------------
| Responsive
|--------------------------------------------------------------------------
*/

@media (
    max-width: 560px
)
{
    .login-page
    {
        padding:
            20px 12px 35px;
    }


    .login-card
    {
        border-radius:
            18px;
    }


    .login-header
    {
        padding:
            13px 17px;
    }


    .login-intro
    {
        padding:
            27px 20px 8px;
    }


    .login-form
    {
        padding:
            18px 20px 26px;
    }
}


@media (
    max-width: 400px
)
{
    .login-page
    {
        padding:
            0;
    }


    .login-card
    {
        min-height:
            100vh;

        border:
            0;

        border-radius:
            0;

        box-shadow:
            none;
    }


    .login-intro
    {
        padding:
            24px 16px 8px;
    }


    .login-form
    {
        padding:
            17px 16px 24px;
    }


    .password-label-row
    {
        align-items:
            flex-start;

        flex-direction:
            column;

        gap:
            5px;
    }
}


/*
|--------------------------------------------------------------------------
| Reduced Motion
|--------------------------------------------------------------------------
*/

@media (
    prefers-reduced-motion: reduce
)
{
    *
    {
        transition:
            none !important;

        animation:
            none !important;
    }
}