/**
 * MemberWorks Authentication Presentation — Wordfence 2FA Remember Spacing 0.7.42
 *
 * Scope: One native WordPress login-document Authentication Shell. /welcome/ aliases into native entry states.
 * Presentation only. WordPress/Wordfence/WPS Hide Login/protected snippets continue to own
 * authentication, 2FA, redirects, lockouts, password reset mechanics, and session state.
 */

:root {
    --gp128-auth-green: #2f5d3b;
    --gp128-auth-green-deep: #244a30;
    --gp128-auth-green-soft: #eef4ef;
    --gp128-auth-gold: #c9a227;
    --gp128-auth-ink: #171b18;
    --gp128-auth-muted: #69716b;
    --gp128-auth-border: #dce3de;
    --gp128-auth-bg: #f6f7f4;
    --gp128-auth-card: #ffffff;
    --gp128-auth-danger: #a93434;
    --gp128-auth-danger-bg: #fff4f4;
    --gp128-auth-success: #2f5d3b;
    --gp128-auth-success-bg: #eef5ef;
}

html,
body.gp128-auth-screen {
    min-height: 100%;
    background: var(--gp128-auth-bg) !important;
}

body.gp128-auth-screen {
    display: grid !important;
    grid-template-columns: minmax(0, 1.08fr) minmax(440px, 0.92fr);
    grid-template-rows: minmax(100vh, 100dvh) auto auto;
    width: 100% !important;
    max-width: none !important;
    min-width: 0;
    min-height: 100vh;
    min-height: 100dvh;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    color: var(--gp128-auth-ink);
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
    overflow-x: hidden;
}

body.gp128-auth-screen * {
    box-sizing: border-box;
}

/*
 * LoginPress 6.2.5 outputs a separate body-level .footer-wrapper after the
 * native WordPress #login container. On the GP128-owned authentication shell
 * that wrapper is empty, while its plugin margin still contributes to document
 * height and creates a false vertical scroll range. GP128 already owns the
 * visible authentication footer actions inside #login, so the transitional
 * LoginPress page-footer wrapper must not participate in this layout.
 */
body.login.gp128-auth-screen > .footer-wrapper {
    display: none !important;
}

.gp128-auth-brand-panel {
    grid-column: 1;
    grid-row: 1;
    align-self: start;
    position: sticky;
    top: 0;
    display: flex;
    min-width: 0;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    min-height: 100vh;
    min-height: 100dvh;
    align-items: center;
    padding: clamp(44px, 7vw, 104px);
    background:
        radial-gradient(circle at 18% 82%, rgba(255,255,255,.07), transparent 26%),
        linear-gradient(145deg, var(--gp128-auth-green-deep) 0%, var(--gp128-auth-green) 64%, #3c7049 100%);
    color: #fff;
}

.gp128-auth-brand-inner {
    width: min(620px, 100%);
}

.gp128-auth-brand-logo {
    display: block;
    width: clamp(106px, 10vw, 148px);
    height: clamp(106px, 10vw, 148px);
    margin: 0 0 34px;
    object-fit: contain;
}

.gp128-auth-brand-eyebrow {
    margin: 0 0 20px !important;
    color: rgba(255,255,255,.78) !important;
    font: 700 clamp(13px, 1.05vw, 15px)/1.4 "Inter", sans-serif !important;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.gp128-auth-brand-title {
    margin: 0 !important;
    color: #fff !important;
    font: 800 clamp(52px, 5.2vw, 78px)/.96 "Manrope", "Inter", sans-serif !important;
    letter-spacing: -.045em;
    text-transform: uppercase;
}

.gp128-auth-brand-copy {
    width: min(600px, 100%);
    margin: 28px 0 0 !important;
    color: rgba(255,255,255,.78) !important;
    font: 400 clamp(17px, 1.35vw, 21px)/1.65 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen #login,
body.gp128-portal-entry-page .gp128-auth-card {
    grid-column: 2;
    grid-row: 1;
    align-self: center;
    width: min(500px, calc(100% - 64px)) !important;
    max-width: 500px !important;
    min-width: 0;
    margin: 48px auto !important;
    padding: 44px 46px 34px !important;
    background: var(--gp128-auth-card) !important;
    border: 1px solid rgba(31, 51, 38, .10);
    border-radius: 24px;
    box-shadow: 0 22px 60px rgba(31, 51, 38, .11) !important;
}

body.gp128-portal-entry-page .gp128-auth-card {
    text-align: left;
}

body.gp128-portal-entry-page .gp128-auth-primary-action {
    display: inline-flex;
    width: 100%;
    min-height: 52px;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0 18px;
    background: var(--gp128-auth-green);
    border: 1px solid var(--gp128-auth-green);
    border-radius: 12px;
    box-shadow: none;
    color: #fff !important;
    font: 700 14px/1 "Inter", sans-serif;
    text-decoration: none !important;
    transition: background-color 150ms cubic-bezier(.2,0,0,1), border-color 150ms cubic-bezier(.2,0,0,1), box-shadow 150ms cubic-bezier(.2,0,0,1);
}

body.gp128-portal-entry-page .gp128-auth-primary-action:hover,
body.gp128-portal-entry-page .gp128-auth-primary-action:focus-visible {
    background: var(--gp128-auth-green-deep);
    border-color: var(--gp128-auth-green-deep);
    box-shadow: 0 0 0 3px rgba(47, 93, 59, .14);
    color: #fff !important;
    outline: none;
}

body.gp128-portal-entry-page .gp128-auth-security-note {
    margin: 18px 0 0;
    color: var(--gp128-auth-muted);
    font: 400 13px/1.55 "Inter", sans-serif;
    text-align: center;
}

body.gp128-portal-entry-page .gp128-auth-card-divider {
    height: 1px;
    margin: 22px 0 0;
    background: #e6ebe7;
}

body.gp128-portal-entry-page .gp128-auth-secondary-link {
    display: block;
    margin: 18px 0 0;
    color: var(--gp128-auth-green) !important;
    font: 650 13px/1.5 "Inter", sans-serif;
    text-align: center;
    text-decoration: none !important;
}

body.gp128-portal-entry-page .gp128-auth-secondary-link:hover,
body.gp128-portal-entry-page .gp128-auth-secondary-link:focus-visible {
    color: var(--gp128-auth-green-deep) !important;
    text-decoration: underline !important;
}

body.login.gp128-auth-screen #login h1.wp-login-logo,
body.login.gp128-auth-screen #login > h1:not(.screen-reader-text) {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.gp128-auth-heading {
    margin: 0 0 28px;
}

.gp128-auth-heading h1 {
    margin: 0 !important;
    color: var(--gp128-auth-ink) !important;
    font: 800 clamp(32px, 2.7vw, 42px)/1.08 "Manrope", "Inter", sans-serif !important;
    letter-spacing: -.035em;
    text-align: left !important;
}

.gp128-auth-heading p {
    margin: 10px 0 0 !important;
    color: var(--gp128-auth-muted) !important;
    font: 400 15px/1.6 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen #login form {
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    overflow: visible !important;
}

body.login.gp128-auth-screen #login form .input,
body.login.gp128-auth-screen #login input[type="text"],
body.login.gp128-auth-screen #login input[type="email"],
body.login.gp128-auth-screen #login input[type="password"] {
    width: 100% !important;
    min-height: 52px !important;
    margin: 8px 0 18px !important;
    padding: 12px 14px !important;
    background: #fff !important;
    color: var(--gp128-auth-ink) !important;
    border: 1px solid var(--gp128-auth-border) !important;
    border-radius: 12px !important;
    box-shadow: none !important;
    font: 500 16px/1.35 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen #login input[type="password"] {
    padding-right: 46px !important;
}

body.login.gp128-auth-screen #login form .input:focus,
body.login.gp128-auth-screen #login input[type="text"]:focus,
body.login.gp128-auth-screen #login input[type="email"]:focus,
body.login.gp128-auth-screen #login input[type="password"]:focus {
    border-color: var(--gp128-auth-green) !important;
    box-shadow: 0 0 0 3px rgba(47, 93, 59, .13) !important;
    outline: none !important;
}

body.login.gp128-auth-screen #login label {
    color: #343a36 !important;
    font: 600 14px/1.45 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen #login .wp-pwd {
    position: relative;
}

body.login.gp128-auth-screen #login .button.wp-hide-pw {
    top: 8px !important;
    right: 4px !important;
    width: 44px !important;
    height: 52px !important;
    min-width: 44px !important;
    min-height: 44px !important;
    padding: 0 !important;
    color: var(--gp128-auth-green) !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

body.login.gp128-auth-screen #login .forgetmenot {
    float: none !important;
    margin: 0 0 18px !important;
}

body.login.gp128-auth-screen #login .forgetmenot label {
    display: inline-flex !important;
    align-items: center;
    gap: 9px;
    font-weight: 500 !important;
    color: var(--gp128-auth-muted) !important;
}

body.login.gp128-auth-screen #login input[type="checkbox"] {
    -webkit-appearance: none !important;
    appearance: none !important;
    position: relative;
    display: inline-grid !important;
    place-content: center;
    flex: 0 0 20px;
    width: 20px !important;
    min-width: 20px !important;
    height: 20px !important;
    min-height: 20px !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
    background-image: none !important;
    border: 1.5px solid #aebbb2 !important;
    border-radius: 6px !important;
    box-shadow: none !important;
    cursor: pointer;
    transition: background-color 150ms cubic-bezier(.2,0,0,1), border-color 150ms cubic-bezier(.2,0,0,1), box-shadow 150ms cubic-bezier(.2,0,0,1);
}

body.login.gp128-auth-screen #login input[type="checkbox"]::before,
body.login.gp128-auth-screen #login input[type="checkbox"]::after {
    content: none !important;
    display: none !important;
}

body.login.gp128-auth-screen #login input[type="checkbox"]:hover {
    border-color: #7f9184 !important;
}

body.login.gp128-auth-screen #login input[type="checkbox"]:checked {
    border-color: var(--gp128-auth-green) !important;
    background-color: var(--gp128-auth-green) !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2.5' d='M4.5 10.5l3.2 3.2 7.8-8'/%3E%3C/svg%3E") !important;
    background-position: center !important;
    background-repeat: no-repeat !important;
    background-size: 15px 15px !important;
}

body.login.gp128-auth-screen #login input[type="checkbox"]:focus {
    outline: none !important;
}

body.login.gp128-auth-screen #login input[type="checkbox"]:focus-visible {
    border-color: var(--gp128-auth-green) !important;
    box-shadow: 0 0 0 3px rgba(47, 93, 59, .18) !important;
}

body.login.gp128-auth-screen #login .submit,
body.login.gp128-auth-screen #login p.submit {
    float: none !important;
    clear: both !important;
    margin: 0 !important;
    padding: 0 !important;
}

body.login.gp128-auth-screen #login .button-primary,
body.login.gp128-auth-screen #login input[type="submit"] {
    float: none !important;
    display: inline-flex !important;
    width: 100% !important;
    min-height: 52px !important;
    align-items: center;
    justify-content: center;
    margin: 0 !important;
    padding: 0 18px !important;
    background: var(--gp128-auth-green) !important;
    border: 1px solid var(--gp128-auth-green) !important;
    border-radius: 12px !important;
    box-shadow: none !important;
    color: #fff !important;
    font: 700 14px/1 "Inter", sans-serif !important;
    letter-spacing: 0;
    text-shadow: none !important;
    text-transform: none;
}

body.login.gp128-auth-screen #login .button-primary:hover,
body.login.gp128-auth-screen #login .button-primary:focus,
body.login.gp128-auth-screen #login input[type="submit"]:hover,
body.login.gp128-auth-screen #login input[type="submit"]:focus {
    background: var(--gp128-auth-green-deep) !important;
    border-color: var(--gp128-auth-green-deep) !important;
    box-shadow: 0 0 0 3px rgba(47, 93, 59, .14) !important;
}

body.login.gp128-auth-screen #login #nav,
body.login.gp128-auth-screen #login #backtoblog,
body.login.gp128-auth-screen #login .privacy-policy-page-link {
    margin: 18px 0 0 !important;
    padding: 0 !important;
    text-align: center !important;
    color: var(--gp128-auth-muted) !important;
    font: 500 13px/1.5 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen #login #backtoblog {
    margin-top: 22px !important;
    padding-top: 20px !important;
    border-top: 1px solid #e6ebe7;
}

body.login.gp128-auth-screen #login #nav a,
body.login.gp128-auth-screen #login #backtoblog a,
body.login.gp128-auth-screen #login .privacy-policy-page-link a {
    color: var(--gp128-auth-green) !important;
    font-weight: 650 !important;
    text-decoration: none !important;
}

body.login.gp128-auth-screen #login #nav a:hover,
body.login.gp128-auth-screen #login #nav a:focus,
body.login.gp128-auth-screen #login #backtoblog a:hover,
body.login.gp128-auth-screen #login #backtoblog a:focus,
body.login.gp128-auth-screen #login .privacy-policy-page-link a:hover,
body.login.gp128-auth-screen #login .privacy-policy-page-link a:focus {
    color: var(--gp128-auth-green-deep) !important;
    text-decoration: underline !important;
}

body.login.gp128-auth-screen #login .message,
body.login.gp128-auth-screen #login #login_error,
body.login.gp128-auth-screen #login .success {
    margin: 0 0 22px !important;
    padding: 14px 16px !important;
    border: 1px solid var(--gp128-auth-border) !important;
    border-left-width: 4px !important;
    border-radius: 12px !important;
    box-shadow: none !important;
    font: 500 14px/1.55 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen #login .message,
body.login.gp128-auth-screen #login .success {
    background: var(--gp128-auth-success-bg) !important;
    border-color: #bfd0c2 !important;
    border-left-color: var(--gp128-auth-success) !important;
    color: #294c32 !important;
}

body.login.gp128-auth-screen #login #login_error {
    background: var(--gp128-auth-danger-bg) !important;
    border-color: #e4c1c1 !important;
    border-left-color: var(--gp128-auth-danger) !important;
    color: #783030 !important;
}

body.login.gp128-auth-screen #login .message a,
body.login.gp128-auth-screen #login #login_error a {
    color: inherit !important;
    font-weight: 700 !important;
}

body.login.gp128-auth-screen #login .button-secondary,
body.login.gp128-auth-screen #login .button:not(.button-primary):not(.wp-hide-pw) {
    min-height: 44px;
    border-color: #cbd5cd !important;
    border-radius: 10px !important;
    color: var(--gp128-auth-green) !important;
    background: #fff !important;
    box-shadow: none !important;
}

body.login.gp128-auth-screen #login .wp-pwd .button-secondary {
    min-height: 0;
}

body.login.gp128-auth-screen #login .wp-generate-pw {
    font: 600 14px/1 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen #login .indicator-hint,
body.login.gp128-auth-screen #login .description {
    color: var(--gp128-auth-muted) !important;
    font: 400 13px/1.5 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen #login #pass-strength-result {
    width: 100%;
    margin: -8px 0 16px !important;
    padding: 8px 10px !important;
    border-radius: 8px;
    font: 600 12px/1.3 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen .language-switcher {
    grid-column: 2;
    margin: -30px auto 22px !important;
}

body.login.gp128-auth-screen .language-switcher select {
    min-height: 38px;
    border-radius: 8px;
}


/* Native entry-state controls share the exact #login card used by Sign In. */
body.login.gp128-auth-screen .gp128-auth-entry-state-panel {
    display: block;
}

body.login.gp128-auth-screen .gp128-auth-entry-state-panel .gp128-auth-heading {
    margin-bottom: 24px;
}

body.login.gp128-auth-screen .gp128-auth-primary-action {
    display: inline-flex;
    width: 100%;
    min-height: 52px;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0 18px;
    background: var(--gp128-auth-green);
    border: 1px solid var(--gp128-auth-green);
    border-radius: 12px;
    box-shadow: none;
    color: #fff !important;
    font: 700 14px/1 "Inter", sans-serif;
    text-decoration: none !important;
    transition: background-color 150ms cubic-bezier(.2,0,0,1), border-color 150ms cubic-bezier(.2,0,0,1), box-shadow 150ms cubic-bezier(.2,0,0,1);
}

body.login.gp128-auth-screen .gp128-auth-primary-action:hover,
body.login.gp128-auth-screen .gp128-auth-primary-action:focus-visible {
    background: var(--gp128-auth-green-deep);
    border-color: var(--gp128-auth-green-deep);
    box-shadow: 0 0 0 3px rgba(47, 93, 59, .14);
    outline: none;
}

body.login.gp128-auth-screen .gp128-auth-security-note {
    margin: 18px 0 0 !important;
    color: var(--gp128-auth-muted) !important;
    font: 400 13px/1.55 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen .gp128-auth-card-divider {
    height: 1px;
    margin: 22px 0 18px;
    background: #e6ebe7;
}

body.login.gp128-auth-screen .gp128-auth-secondary-link {
    display: block;
    color: var(--gp128-auth-green) !important;
    font: 650 13px/1.5 "Inter", sans-serif !important;
    text-align: center;
    text-decoration: none !important;
}

body.login.gp128-auth-screen .gp128-auth-secondary-link:hover,
body.login.gp128-auth-screen .gp128-auth-secondary-link:focus-visible {
    color: var(--gp128-auth-green-deep) !important;
    text-decoration: underline !important;
    outline: none;
}

/*
 * Entry states are progressive enhancement: the genuine native login form stays
 * in the DOM but is initially hidden. JavaScript reveals it in place. Without
 * JavaScript, the Sign In link navigates to the ordinary native /login/ view.
 */
body.login.gp128-auth-screen.gp128-auth-entry-state:not(.gp128-auth-show-login) #login > .gp128-auth-native-heading,
body.login.gp128-auth-screen.gp128-auth-entry-state:not(.gp128-auth-show-login) #login > #loginform,
body.login.gp128-auth-screen.gp128-auth-entry-state:not(.gp128-auth-show-login) #login > #nav,
body.login.gp128-auth-screen.gp128-auth-entry-state:not(.gp128-auth-show-login) #login > #backtoblog,
body.login.gp128-auth-screen.gp128-auth-entry-state:not(.gp128-auth-show-login) #login > .privacy-policy-page-link,
body.login.gp128-auth-screen.gp128-auth-entry-state:not(.gp128-auth-show-login) #login > .message,
body.login.gp128-auth-screen.gp128-auth-entry-state:not(.gp128-auth-show-login) #login > #login_error,
body.login.gp128-auth-screen.gp128-auth-entry-state:not(.gp128-auth-show-login) #login > .success {
    display: none !important;
}

body.login.gp128-auth-screen.gp128-auth-entry-state.gp128-auth-show-login .gp128-auth-entry-state-panel {
    display: none !important;
}

body.login.gp128-auth-screen.gp128-auth-entry-state.gp128-auth-show-login #login > .gp128-auth-native-heading,
body.login.gp128-auth-screen.gp128-auth-entry-state.gp128-auth-show-login #login > #loginform,
body.login.gp128-auth-screen.gp128-auth-entry-state.gp128-auth-show-login #login > #nav,
body.login.gp128-auth-screen.gp128-auth-entry-state.gp128-auth-show-login #login > #backtoblog,
body.login.gp128-auth-screen.gp128-auth-entry-state.gp128-auth-show-login #login > .privacy-policy-page-link {
    display: block;
}

@media (min-width: 1025px) {
    html.login {
        overflow-y: scroll;
        scrollbar-gutter: stable;
    }

    body.login.gp128-auth-screen {
        grid-template-rows: minmax(100vh, 100dvh);
    }

    body.login.gp128-auth-screen #login {
        align-self: center;
        margin-top: 48px !important;
        margin-bottom: 48px !important;
    }
}

@media (max-width: 1024px) {
    body.gp128-auth-screen {
        display: block !important;
        min-height: 100vh;
        min-height: 100dvh;
    }

    .gp128-auth-brand-panel {
        position: static;
        width: auto;
        height: auto;
        min-height: auto;
        padding: 42px 28px 82px;
        text-align: center;
    }

    .gp128-auth-brand-inner {
        margin: 0 auto;
    }

    .gp128-auth-brand-logo {
        width: 98px;
        height: 98px;
        margin: 0 auto 20px;
    }

    .gp128-auth-brand-eyebrow {
        margin-bottom: 12px !important;
    }

    .gp128-auth-brand-title {
        font-size: clamp(38px, 7vw, 54px) !important;
        line-height: 1 !important;
    }

    .gp128-auth-brand-title br {
        display: none;
    }

    .gp128-auth-brand-copy {
        width: min(620px, 100%);
        margin: 16px auto 0 !important;
        font-size: 16px !important;
        line-height: 1.55 !important;
    }

    body.login.gp128-auth-screen #login,
    body.gp128-portal-entry-page .gp128-auth-card {
        position: relative;
        z-index: 2;
        width: min(560px, calc(100% - 40px)) !important;
        max-width: 560px !important;
        margin: -46px auto 32px !important;
        padding: 40px 38px 30px !important;
    }

    body.login.gp128-auth-screen .language-switcher {
        margin: 0 auto 24px !important;
    }
}

@media (max-width: 600px) {
    .gp128-auth-brand-panel {
        padding: 20px 18px 50px;
    }

    .gp128-auth-brand-logo {
        width: 66px;
        height: 66px;
        margin-bottom: 10px;
    }

    .gp128-auth-brand-eyebrow {
        margin-bottom: 8px !important;
        font-size: 10px !important;
        letter-spacing: .105em;
    }

    .gp128-auth-brand-title {
        font-size: 34px !important;
        line-height: 1 !important;
        letter-spacing: -.035em;
        word-spacing: .12em;
    }

    .gp128-auth-brand-title br {
        display: none;
    }

    .gp128-auth-brand-copy {
        display: none;
    }

    body.login.gp128-auth-screen #login,
    body.gp128-portal-entry-page .gp128-auth-card {
        width: calc(100% - 20px) !important;
        margin: -24px auto max(18px, env(safe-area-inset-bottom)) !important;
        padding: 28px 22px 22px !important;
        border-radius: 19px;
    }

    body.gp128-portal-entry-page .gp128-auth-security-note {
        margin-top: 15px;
    }

    body.gp128-portal-entry-page .gp128-auth-card-divider {
        margin-top: 18px;
    }

    .gp128-auth-heading {
        margin-bottom: 22px;
    }

    .gp128-auth-heading h1 {
        font-size: 29px !important;
    }

    .gp128-auth-heading p {
        margin-top: 8px !important;
        font-size: 14px !important;
        line-height: 1.5 !important;
    }

    body.login.gp128-auth-screen #login form .input,
    body.login.gp128-auth-screen #login input[type="text"],
    body.login.gp128-auth-screen #login input[type="email"],
    body.login.gp128-auth-screen #login input[type="password"],
    body.login.gp128-auth-screen #login .button-primary,
    body.login.gp128-auth-screen #login input[type="submit"] {
        min-height: 50px !important;
    }

    body.login.gp128-auth-screen #login #nav,
    body.login.gp128-auth-screen #login #backtoblog,
    body.login.gp128-auth-screen #login .privacy-policy-page-link {
        font-size: 13px !important;
    }
}

@media (max-width: 380px) {
    body.login.gp128-auth-screen #login,
    body.gp128-portal-entry-page .gp128-auth-card {
        width: calc(100% - 16px) !important;
        padding-left: 18px !important;
        padding-right: 18px !important;
    }

    .gp128-auth-brand-title {
        font-size: 31px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.gp128-auth-screen *,
    body.gp128-auth-screen *::before,
    body.gp128-auth-screen *::after {
        scroll-behavior: auto !important;
        transition: none !important;
        animation: none !important;
    }
}

/* ==========================================================================
   Wordfence 2FA root fix — 0.7.40
   Runtime inspection confirmed that Wordfence renders a separate visible
   challenge layer inside #wfls-prompt-overlay. The actual visible controls are:
   #wfls-token, #wfls-remember-device, and #wfls-token-submit.
   The native #wp-submit is not the visible 2FA submit control.
   ========================================================================== */

/* Convert Wordfence's challenge overlay into the normal GP128 form flow. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-prompt-overlay,
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-prompt-wrapper {
    position: static !important;
    inset: auto !important;
    z-index: auto !important;
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    transform: none !important;
}

/* Wordfence's wrapper paragraphs are structural only. GP128 controls rhythm. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-prompt-wrapper > p {
    margin: 0 !important;
    padding: 0 !important;
}

/* Exact live 2FA field. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform label[for="wfls-token"] {
    display: block !important;
    margin: 0 !important;
    color: #343a36 !important;
    font: 600 14px/1.45 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-token {
    width: 100% !important;
    min-height: 52px !important;
    margin: 8px 0 18px !important;
    padding: 12px 14px !important;
    background: #fff !important;
    color: var(--gp128-auth-ink) !important;
    border: 1px solid var(--gp128-auth-border) !important;
    border-radius: 12px !important;
    box-shadow: none !important;
    font: 500 16px/1.35 "Inter", sans-serif !important;
}

body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-token:focus {
    border-color: var(--gp128-auth-green) !important;
    box-shadow: 0 0 0 3px rgba(47, 93, 59, .13) !important;
    outline: none !important;
}

/* Exact live remembered-device row. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-prompt-wrapper .wfls-remember {
    margin: 0 0 18px !important;
}

body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform label[for="wfls-remember-device"] {
    display: inline-flex !important;
    align-items: center !important;
    gap: 9px !important;
    margin: 0 !important;
    color: var(--gp128-auth-muted) !important;
    font: 500 14px/1.45 "Inter", sans-serif !important;
}

/* Exact live Wordfence submit control. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-token-submit {
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    min-height: 52px !important;
    margin: 0 !important;
    padding: 0 18px !important;
    background: var(--gp128-auth-green) !important;
    border: 1px solid var(--gp128-auth-green) !important;
    border-radius: 12px !important;
    box-shadow: none !important;
    color: #fff !important;
    font: 700 14px/1 "Inter", sans-serif !important;
    letter-spacing: 0 !important;
    text-shadow: none !important;
    text-transform: none !important;
}

body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-token-submit:hover,
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-token-submit:focus {
    background: var(--gp128-auth-green-deep) !important;
    border-color: var(--gp128-auth-green-deep) !important;
    box-shadow: 0 0 0 3px rgba(47, 93, 59, .14) !important;
}

/* Preserve Wordfence help behavior; only align its color. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform #wfls-prompt-overlay a[href^="javascript:"] {
    color: var(--gp128-auth-green) !important;
    text-decoration: none !important;
}


/* ==========================================================================
   Wordfence 2FA native-form collapse — 0.7.41

   Runtime evidence:
   - #loginform top: 419px
   - #wfls-prompt-overlay top: 731px
   - invisible pre-overlay reservation: 312px

   Wordfence visually suppresses the original native login controls during
   its 2FA challenge, but those controls remain in normal document flow.
   Once the actual Wordfence challenge is confirmed, remove only those
   superseded direct children from layout. The Wordfence challenge remains
   the real interactive form surface and continues to submit normally.
   ========================================================================== */

body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform {
    height: auto !important;
    min-height: 0 !important;
}

/* Native username row / miscellaneous native paragraph before the overlay. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform > p:not(.wfls-prompt-wrapper):not(.wfls-remember-device-wrap) {
    display: none !important;
}

/* Native password wrapper superseded by the Wordfence token field. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform > .user-pass-wrap {
    display: none !important;
}

/* Native remember-me row superseded by Wordfence's remembered-device row. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform > .forgetmenot {
    display: none !important;
}

/* Native submit row superseded by #wfls-token-submit. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform > .submit {
    display: none !important;
}

/* The actual Wordfence 2FA challenge is the only visible form content. */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform > #wfls-prompt-overlay {
    margin-top: 0 !important;
}


/* Wordfence 2FA remembered-device spacing — 0.7.42
 * The live DOM confirms this label is the actual visible remembered-device row.
 * Add separation below it so the verification action does not crowd the checkbox.
 */
body.login.gp128-auth-screen.gp128-auth-wordfence-2fa
#loginform label[for="wfls-remember-device"] {
    margin-bottom: 14px !important;
}
