body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background: linear-gradient(135deg, var(--centered-bg-start, var(--bg-color)) 0%, var(--centered-bg-end, var(--primary-light)) 100%);
}

.centered-page-shell {
    flex: 1;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl, 2rem) var(--spacing-md, 1rem);
}

.login-card {
    width: 100%;
    max-width: 420px;
    padding: var(--spacing-xl, 2rem);
    background: var(--surface-color);
    border-radius: var(--radius-xl, 1.25rem);
    box-shadow: var(--shadow-lg);
    text-align: center;
}

.login-logo {
    width: 64px;
    height: 64px;
    margin: 0 auto var(--spacing-lg, 1.5rem);
    border-radius: var(--radius-full);
    display: flex;
    align-items: center;
    justify-content: center;
}

.login-logo svg {
    width: 32px;
    height: 32px;
}

.login-card h2 {
    margin-bottom: var(--spacing-sm, 0.5rem);
    color: var(--text-primary);
}

.login-card .subtitle {
    color: var(--text-secondary);
    margin-bottom: var(--spacing-xl, 2rem);
    font-size: 0.875rem;
}

.footer-links {
    margin-top: var(--spacing-lg, 1.5rem);
    font-size: 0.875rem;
}

.footer-links a {
    color: var(--text-muted);
}

.footer-links.footer-links-subtle {
    margin-top: var(--spacing-md, 1rem);
    font-size: 0.75rem;
}

.footer-links.footer-links-subtle a {
    color: #9ca3af;
    text-decoration: none;
}

.footer-links.footer-links-subtle a:hover {
    color: var(--text-secondary);
    text-decoration: underline;
}

.login-card {
    border: 1px solid var(--border-color);
    backdrop-filter: blur(8px);
    animation: slideUp 0.35s ease;
}

.login-logo.logo-student { background: var(--primary-light); color: var(--primary-color); }
.login-logo.logo-teacher { background: var(--success-light); color: var(--success-color); }

.footer-links.row-links {
    display: flex;
    justify-content: center;
    gap: var(--spacing-md);
    align-items: center;
}

/* Status/Error card variant */
.status-card {
    background-color: var(--surface-color);
    padding: var(--spacing-xl, 2rem) var(--spacing-2xl, 3rem);
    border-radius: var(--radius-xl, 1.25rem);
    box-shadow: var(--shadow-lg);
    text-align: center;
    max-width: 500px;
    width: 100%;
    border: 1px solid var(--border-color);
    animation: slideUp 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.status-icon {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: 80px;
    height: 80px;
    border-radius: var(--radius-full);
    margin-bottom: var(--spacing-lg, 1.5rem);
}

.status-card.success .status-icon { background-color: var(--success-light); color: var(--success-color); }
.status-card.failure .status-icon { background-color: var(--danger-light); color: var(--danger-color); }
.status-card.warning .status-icon { background-color: var(--warning-light); color: var(--warning-dark); }

.status-title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: var(--spacing-md, 1rem);
}

.status-message {
    font-size: 1.05rem;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-xl, 2rem);
    line-height: 1.6;
}

@keyframes slideUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

body.centered-page--teacher {
    --centered-bg-end: var(--success-light);
}

body.centered-page--permission {
    --centered-bg-start: #fff7ed;
    --centered-bg-end: #ffedd5;
}
