body:has(.login-container) {
    overflow-x: hidden;
    overflow-y: auto;
    background: #dfe6ed;
}

.login-container {
    position: relative;
    width: 100%;
    min-height: 100dvh;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding:
        max(24px, env(safe-area-inset-top))
        max(16px, env(safe-area-inset-right))
        max(24px, env(safe-area-inset-bottom))
        max(16px, env(safe-area-inset-left));
}

/* Flipped horizontally without affecting login card content */
.login-container::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: url("../images/loginBG2.jpg");
    background-size: cover;
    background-position: 50% 100%;
    transition: background-position 0.3s ease;
    background-repeat: no-repeat;
    transform: scaleX(-1);
    z-index: 0;
}

.login-container > * {
    position: relative;
    z-index: 1;
}

.login-card {
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 100%;
    max-width: min(450px, 100%);
    min-height: 0;
    padding: clamp(28px, 5vw, 40px);
    border-radius: 25px;
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1);
    background: #fff;
    flex-shrink: 0;
}

.login-form-wrapper {
    width: 100%;
    max-width: 100%;
}

.login-brand {
    position: absolute;
    top: 0;
    left: 0;
    transform: translate(
        max(44px, env(safe-area-inset-left)),
        max(54px, env(safe-area-inset-top))
    );
    display: flex;
    align-items: center;
    gap: 10px;
    z-index: 1;
    max-width: calc(100% - 32px);
    transition: transform 0.3s ease;
}

.login-brand-logo {
    height: 40px;
    width: auto;
    display: block;
    flex-shrink: 0;
}

.login-brand-name {
    font-family: "Poppins", "Segoe UI", system-ui, sans-serif;
    font-weight: 700;
    font-size: clamp(1.35rem, 4vw, 2.3rem);
    line-height: 1.2;
    text-transform: uppercase;
    letter-spacing: -1px;
    display: flex;
    gap: 9px;
}

/* Match main toolbar logo: Real = ink, Estate = muted ink */
.login-brand .login-brand-real {
    color: var(--re-ink);
    margin-right: -4px;
}

.login-brand .login-brand-estate {
    color: var(--re-primary);
}

.login-title {
    font-family: "Inter" !important;
    font-size: clamp(1.35rem, 4.5vw, 1.7rem);
    font-weight: 600;
    color: var(--re-ink);
    margin-bottom: 6px;
    letter-spacing: 0.03em;
    line-height: 1.3;
    text-align: center;
}

.login-subtitle {
    font-family: "Inter", "Segoe UI", system-ui, sans-serif;
    font-size: 0.95rem;
    font-weight: 400;
    color: var(--re-ink-muted);
    margin-bottom: 40px;
    line-height: 1.4;
    text-align: center;
}

#login-form {
    width: 100%;
    min-width: 0;
}

.login-dhx-form,
.login-dhx-form .dhx_layout,
.login-dhx-form .dhx_layout-cell {
    max-width: 100%;
    min-width: 0;
}

.login-dhx-form {
    /* Tune login input appearance here */
    --login-input-height: 48px;
    --login-float-label-left: 45px;
    --login-float-label-border-left: 10px;
    --login-float-label-size: 0.72rem;
    --login-float-label-notch-x: 2px;
    --login-float-label-bg: var(--re-surface);
    --login-input-border-width: 2px;
    --login-input-border-style: solid;
    --login-input-border-color: var(--re-border);
    --login-input-border-radius: 6px;
    --login-input-border-color-hover: var(--re-border-strong);
    --login-input-border-color-focus: var(--re-primary);
    --login-input-focus-ring: 0 0 0 3px var(--re-primary-softer);

    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
}

.login-dhx-form .dhx_input {
    height: var(--login-input-height) !important;
    min-height: var(--login-input-height);
    border: var(--login-input-border-width) var(--login-input-border-style) var(--login-input-border-color) !important;
    border-radius: var(--login-input-border-radius) !important;
    box-shadow: none !important;
    color: var(--re-ink) !important;
    background: var(--re-surface) !important;
    transition:
        border-color 0.15s,
        background-color 0.15s,
        box-shadow 0.15s;
}

/* Native placeholder kept for :placeholder-shown; visible label is the wrapper ::before */
.login-dhx-form .dhx_input::placeholder {
    color: transparent;
}

.login-dhx-form .dhx_input:hover {
    border-color: var(--login-input-border-color-hover) !important;
}

.login-dhx-form .dhx_input:focus {
    background: var(--re-input-focus) !important;
    border-color: var(--login-input-border-color-focus) !important;
    box-shadow: var(--login-input-focus-ring) !important;
    outline: none !important;
}

.login-dhx-form .dhx_form-group {
    margin-bottom: 12px;
}

/* Room for the label when it sits on the top border (fieldset-style) */
.login-dhx-form .dhx_form-group:has(.dhx_input) {
    padding-top: 8px;
}

/* Floating labels — idle inside the field; on focus/value, notch into the top border */
.login-dhx-form .dhx_input__wrapper {
    position: relative;
}

.login-dhx-form .dhx_input__wrapper::before {
    position: absolute;
    left: var(--login-float-label-left);
    top: 50%;
    z-index: 2;
    display: inline-block;
    width: fit-content;
    max-width: calc(100% - 52px);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: "Inter", "Segoe UI", system-ui, sans-serif;
    font-size: 0.95rem;
    font-weight: 400;
    line-height: 1.2;
    color: var(--re-ink-muted);
    background: transparent;
    padding: 0;
    pointer-events: none;
    transform: translateY(-50%);
    transform-origin: left center;
    transition:
        top 0.2s ease,
        left 0.2s ease,
        transform 0.2s ease,
        font-size 0.2s ease,
        color 0.2s ease,
        background-color 0.2s ease,
        padding 0.2s ease;
}

.login-dhx-form .dhx_input__wrapper:has(input[placeholder="O seu utilizador ou email"])::before {
    content: "O seu utilizador ou email";
}

.login-dhx-form .dhx_input__wrapper:has(input[placeholder="A sua palavra-passe"])::before {
    content: "A sua palavra-passe";
}

.login-dhx-form .dhx_input__wrapper:has(.dhx_input:focus)::before,
.login-dhx-form .dhx_input__wrapper:has(.dhx_input:not(:placeholder-shown))::before {
    top: 0;
    left: var(--login-float-label-border-left);
    transform: translateY(-50%);
    font-size: var(--login-float-label-size);
    font-weight: 500;
    color: var(--re-ink-muted);
    background: var(--login-float-label-bg);
    padding: 0 var(--login-float-label-notch-x);
    width: fit-content;
    max-width: calc(100% - 24px);
}

.login-dhx-form .dhx_input__wrapper:has(.dhx_input:focus)::before {
    color: var(--re-primary);
}

/* DHTMLX input icons default to the right; login fields use left-aligned icons */
.login-dhx-form .dhx_input--icon-padding {
    padding-right: 8px;
    padding-left: 45px;
}

.login-dhx-form .dhx_input__icon {
    right: auto;
    left: 6px;
    padding-left: 7px;
}

.login-dhx-form .login-pass-field .dhx_input__wrapper::before {
    max-width: calc(100% - 52px);
}

.login-dhx-form .login-pass-field .dhx_input__wrapper:has(.dhx_input:focus)::before,
.login-dhx-form .login-pass-field .dhx_input__wrapper:has(.dhx_input:not(:placeholder-shown))::before {
    max-width: calc(100% - 88px);
}

/* Password visibility toggle (right-aligned eye icon) */
.login-dhx-form .login-pass-field .dhx_input__wrapper {
    position: relative;
}

.login-dhx-form .login-pass-field .dhx_input {
    padding-right: 40px;
}

.login-dhx-form .login-pass-field .login-pass-toggle {
    position: absolute;
    top: 50%;
    right: 8px;
    transform: translateY(-50%);
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    padding: 0;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: var(--re-ink-muted);
    cursor: pointer;
}

.login-dhx-form .login-pass-field .login-pass-toggle:hover {
    color: var(--re-ink);
    background: var(--re-primary-softer);
}

.login-dhx-form .login-pass-field .login-pass-toggle:focus-visible {
    outline: 2px solid var(--re-primary);
    outline-offset: 1px;
}

.login-dhx-form .login-pass-field .login-pass-toggle .mdi:before {
    font-size: 20px;
    line-height: 1;
}

/* Keep session — UI placeholder until remember-me is implemented */
.login-dhx-form .login-keep-session {
    margin-bottom: 4px;
}

.login-btn {
    margin-top: 20px;
}

.login-btn .dhx_button--view_flat,
.login-btn .dhx_button {
    position: relative;
    overflow: hidden;
    border-radius: 6px !important;
    height: 46px !important;
    font-weight: 600 !important;
    font-size: 15px !important;
    text-transform: none !important;
    letter-spacing: 0.3px;
    background-color: var(--re-primary);
}

/* growing circle — note: NO transition here by default */
.login-btn .dhx_button--view_flat::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 150%;
    height: 0;
    padding-bottom: 150%;
    border-radius: 50%;
    background: var(--re-primary-hover);
    transform: translate3d(-50%, -50%, 0) scale3d(0, 0, 1);
    transition: transform 0s;   /* instant snap-back on hover-out */
    z-index: 0;
}

/* masking fade layer — this one transitions both ways */
.login-btn .dhx_button--view_flat::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--re-primary-hover);
    opacity: 0;
    transition: opacity 0.6s;
    z-index: 0;
}

.login-btn .dhx_button--view_flat:hover::before {
    transform: translate3d(-50%, -50%, 0) scale3d(1, 1, 1);
    transition: transform 1s cubic-bezier(0.1, 0, 0.3, 1); /* only animates going IN */
}

.login-btn .dhx_button--view_flat:hover::after {
    opacity: 1;
}

.login-btn .dhx_button--view_flat .dhx_button__text {
    position: relative;
    z-index: 1;
}

.login-btn .dhx_button--view_flat .dhx_button__text {
    position: relative;
    z-index: 1;
    display: inline-block;
    transform: scale3d(1, 1, 1);
    transition: transform 0.4s cubic-bezier(0.1, 0, 0.3, 1);
}

.login-btn .dhx_button--view_flat:hover .dhx_button__text {
    transform: scale3d(1.08, 1.08, 1);
}

/* Submit loading — DHTMLX dhx_button--loading spinner on Entrar */
.login-btn .dhx_button--loading::before,
.login-btn .dhx_button--loading:hover::before {
    transform: translate3d(-50%, -50%, 0) scale3d(0, 0, 1);
    transition: none;
}

.login-btn .dhx_button--loading::after,
.login-btn .dhx_button--loading:hover::after {
    opacity: 0;
    transition: none;
}

.login-btn .dhx_button--loading .dhx_button__loading {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.login-btn .dhx_button--loading .dhx_button__loading-icon {
    color: #fff;
}

.login-btn .login-btn__loading-text {
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.3px;
}

/* Wide screens: keep card on the left without clipping */
.login-container {
    transition: padding-left 0.3s ease, padding-top 0.3s ease;
    padding-top: max(24px, env(safe-area-inset-top));
}

@media (min-width: 1300px) {
    .login-container {
        justify-content: flex-start;
        padding-left: clamp(32px, 16vw, 240px);
    }
    .login-card {
        transform: scale(1.1);
        transition: transform 0.3s ease;
    }
}

@media (max-width: 1300px) {
    .login-container {
        justify-content: flex-start;
        padding-left: clamp(32px, 9vw, 100px);
    }
    .login-card {
        transform: scale(0.9);
        transition: transform 0.3s ease;
    }

    .login-container::before {
        background-position: 50% 70%;
        transition: background-position 0.3s ease;
    }

    .login-brand {
        transform: translate(
            max(24px, env(safe-area-inset-left)),
            max(24px, env(safe-area-inset-top))
        );
    }
}

@media (max-width: 768px) {
    .login-container {
        padding-top: max(88px, calc(env(safe-area-inset-top) + 72px));
    }
    .login-card {
        transform: scale(0.8);
        transition: transform 0.3s ease;
    }
}

@media (max-width: 400px) {
    .login-container {
        padding-left: 12px;
        padding-right: 12px;
    }

    .login-card {
        border-radius: 14px;
        padding: 18px 14px;
    }

    .login-subtitle {
        font-size: 0.9rem;
        margin-bottom: 18px;
    }
}
