.core-auth-shell {
    width: 100%;
    min-height: 100vh;
    display: grid;
    grid-template-columns: minmax(420px, 52vw) minmax(360px, 1fr);
    align-items: stretch;
    background: var(--core-auth-page-bg, #fff);
}

.core-auth-hero {
    position: relative;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    overflow: hidden;
    padding: clamp(48px, 7vw, 96px);
    text-align: left;
    color: var(--core-auth-hero-fg, #fff);
    background:
        var(--core-auth-hero-overlay, linear-gradient(135deg, rgba(13, 25, 44, 0.96), rgba(35, 105, 190, 0.92))),
        var(--core-auth-hero-image, none) var(--core-auth-hero-image-position, right 8% bottom 10%) / var(--core-auth-hero-image-size, min(360px, 46%) auto) no-repeat;
}

.core-auth-hero::before {
    position: absolute;
    inset: auto auto 8% -2%;
    content: var(--core-auth-watermark, "");
    color: var(--core-auth-watermark-color, rgba(255, 255, 255, 0.09));
    font-size: clamp(5rem, 14vw, 13rem);
    line-height: 0.85;
    font-weight: 800;
    letter-spacing: 0;
    pointer-events: none;
}

.core-auth-hero > * {
    position: relative;
    z-index: 1;
}

.core-auth-hero-logo {
    width: min(var(--core-auth-hero-logo-width, 300px), 76%);
    height: auto;
    margin-bottom: 46px;
}

.core-auth-hero h1 {
    margin: 0 0 12px;
    font-size: clamp(2rem, 3vw, 3rem);
    line-height: 1.05;
    font-weight: 800;
}

.core-auth-hero p {
    max-width: 520px;
    margin: 0;
    font-size: 1.05rem;
    line-height: 1.5;
    font-weight: 600;
    color: var(--core-auth-hero-muted-fg, rgba(255, 255, 255, 0.86));
}

.core-auth-card {
    align-self: center;
    justify-self: center;
    width: min(var(--core-auth-card-width, 560px), calc(100% - 48px));
    padding: 32px;
    background: var(--core-auth-card-bg, #fff);
    color: var(--core-auth-card-fg, #111827);
    border: var(--core-auth-card-border, 0);
    border-radius: var(--core-auth-card-radius, 8px);
    box-shadow: var(--core-auth-card-shadow, none);
}

.core-auth-card-logo {
    display: block;
    width: var(--core-auth-card-logo-width, 180px);
    max-width: 58%;
    max-height: 48px;
    height: auto;
    object-fit: contain;
    object-position: left center;
    margin: 0 0 28px;
}

.core-auth-card h2 {
    margin: 0 0 22px;
    font-size: 2rem;
    line-height: 1.1;
    font-weight: 800;
}

.core-alert {
    margin: 16px 0 0;
    padding: 14px 16px;
    border: 1px solid transparent;
    border-radius: var(--core-alert-radius, 8px);
    font-size: 0.94rem;
    font-weight: 600;
    line-height: 1.45;
}

.core-alert-above-form {
    margin: 0 0 18px;
}

.core-alert-danger {
    border-color: var(--core-alert-danger-border, #f5c2c7);
    background: var(--core-alert-danger-bg, #f8d7da);
    color: var(--core-alert-danger-fg, #842029);
}

.core-alert-info {
    background: var(--core-alert-info-bg, rgba(71, 158, 251, 0.12));
    color: var(--core-alert-info-fg, #0079c1);
}

.core-alert-success {
    border-color: var(--core-alert-success-border, #badbcc);
    background: var(--core-alert-success-bg, #d1e7dd);
    color: var(--core-alert-success-fg, #0f5132);
}

@media (max-width: 900px) {
    .core-auth-shell {
        grid-template-columns: 1fr;
    }

    .core-auth-hero {
        min-height: auto;
        padding: 32px 24px;
        background:
            var(--core-auth-hero-mobile-overlay, var(--core-auth-hero-overlay, linear-gradient(135deg, rgba(13, 25, 44, 0.98), rgba(35, 105, 190, 0.94)))),
            var(--core-auth-hero-image, none) var(--core-auth-hero-mobile-image-position, right 24px bottom 18px) / var(--core-auth-hero-mobile-image-size, 128px auto) no-repeat;
    }

    .core-auth-hero-logo {
        width: min(var(--core-auth-hero-logo-mobile-width, 220px), 72%);
        margin-bottom: 22px;
    }

    .core-auth-card {
        width: min(var(--core-auth-card-width, 560px), calc(100% - 32px));
        margin: 24px auto 32px;
        padding: 24px 20px;
    }
}

@media (max-width: 520px) {
    .core-auth-card {
        padding: 20px;
    }
}
