.login-page {
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    background:
        radial-gradient(ellipse 120% 70% at 50% -10%, var(--sp-surface-brand-soft), transparent 55%),
        linear-gradient(180deg, rgba(var(--sp-brand-rgb), 0.06), transparent 42%),
        var(--sp-page-bg, var(--bs-body-bg));
}

.login-main {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    padding-block: 2rem;
    padding-bottom: max(2rem, env(safe-area-inset-bottom, 0px));
}

.login-card {
    border: 1px solid color-mix(in srgb, var(--sp-brand) 22%, var(--bs-border-color));
    border-radius: var(--sp-radius-lg, 0.75rem);
    box-shadow: var(--sp-shadow-elevated);
    overflow: hidden;
    background-color: var(--bs-body-bg);
}

.login-card::before {
    content: "";
    display: block;
    height: 3px;
    background: var(--sp-brand);
}

.login-brand {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    margin-bottom: 0.25rem;
    font-family: var(--sp-font-heading);
    font-size: 1.35rem;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--sp-brand);
}

.login-brand-mark {
    width: 2.5rem;
    height: auto;
}

.login-brand-name {
    line-height: 1.1;
}

.login-alt-title {
    font-family: var(--sp-font-heading);
    letter-spacing: -0.01em;
}

@media (prefers-reduced-motion: no-preference) {
    .login-brand-mark {
        animation: login-mark-settle 0.55s ease-out both;
    }
}

@keyframes login-mark-settle {
    from {
        opacity: 0;
        transform: translateY(-0.35rem) rotate(-8deg);
    }
    to {
        opacity: 1;
        transform: none;
    }
}

@media (max-width: 575.98px) {
    .login-main {
        padding-block: 1.25rem;
        padding-inline: 0.75rem;
    }

    .login-card .card-body {
        padding: 1.25rem !important;
    }
}
