:root {
    --auth-bg: #f8fafc;
    --auth-surface: #ffffff;
    --auth-text: #111827;
    --auth-muted: #4b5563;
    --auth-border: #e5e7eb;
    --auth-primary: #1d4ed8;
    --auth-primary-hover: #1e40af;
    --auth-focus: rgba(59, 130, 246, 0.18);
    --auth-shadow: 0 20px 45px -24px rgba(15, 23, 42, 0.45);
    --auth-radius: 0.75rem;
}

html {
    min-height: 100%;
    font-size: 80%;
}

body,
.otp-page,
.consent-page {
    min-height: 100vh;
    color: var(--auth-text);
    background: var(--auth-bg);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

.container,
.logout-page,
.front-logout-page {
    min-height: 100vh;
    padding: 1rem;
}

.form-container,
.otp-card,
.consent-card,
.error-card,
.logout-panel,
.front-logout-panel {
    background: var(--auth-surface);
    border: 1px solid var(--auth-border);
    border-radius: var(--auth-radius);
    box-shadow: var(--auth-shadow);
}

.header img,
.app-logo,
.error-logo,
.brand img,
.front-logout-logo {
    width: min(13rem, 72vw);
    max-width: 100%;
    height: auto;
}

.title,
.otp-title,
.consent-page h1,
.error-card h2,
.logoutTitle,
.front-logout-title {
    color: var(--auth-text);
    letter-spacing: 0;
}

.otp-subtitle,
.consent-page .info-text,
.content p,
.security-note,
.front-logout-text {
    color: var(--auth-muted);
}

.submit-btn,
.consent-page .btn-primary,
.error-card .btn-primary,
.action-button.primary {
    color: #ffffff;
    background-color: var(--auth-primary);
    border-color: var(--auth-primary);
}

.submit-btn:hover:not(:disabled),
.consent-page .btn-primary:hover:not(:disabled),
.error-card .btn-primary:hover,
.action-button.primary:hover {
    background-color: var(--auth-primary-hover);
    border-color: var(--auth-primary-hover);
}

.form-input:focus,
.otp-digit:focus,
.submit-btn:focus,
.forgot-link:focus,
.password-toggle:focus,
.captcha-refresh:focus,
.consent-page .btn-primary:focus,
.consent-page .btn-secondary:focus,
.consent-page .form-check-input:focus,
.error-card .btn-primary:focus,
.action-button:focus {
    outline: none;
    box-shadow: 0 0 0 3px var(--auth-focus);
}

.alert,
.login-message,
.otp-message,
.consent-message,
.otp-help {
    border-radius: 0.5rem;
}

.login-page .captcha-mode {
    flex-wrap: wrap;
    row-gap: 0.375rem;
}

.login-page .captcha-container {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 2.75rem;
    align-items: center;
    justify-content: stretch;
}

.login-page .captcha-display,
.login-page .captcha-audio-display {
    width: 100%;
    max-width: none;
    min-width: 0;
    height: 3.25rem;
    background: #f1f3f4;
    border-radius: 5px;
    border: 1px solid #d1d5db;
}

.login-page .captcha-audio-display audio {
    width: 100%;
    min-width: 0;
    min-height: 40px;
}

.login-page .captcha-refresh {
    width: 2.75rem;
    height: 3.25rem;
}

@media (max-width: 640px) {
    .container,
    .logout-page,
    .front-logout-page {
        padding: 0.75rem;
    }

    .form-container,
    .otp-card,
    .consent-card,
    .error-card,
    .logout-panel,
    .front-logout-panel {
        padding: 1.25rem !important;
        border-radius: 0.75rem;
    }

    .header,
    .brand {
        margin-bottom: 1.25rem;
    }

    .title,
    .consent-page h1,
    .error-card h2,
    .logoutTitle,
    .front-logout-title {
        font-size: 1.5rem;
        line-height: 1.25;
    }

    .login-page .captcha-container {
        grid-template-columns: minmax(0, 1fr) 3rem;
        justify-content: stretch;
    }

    .login-page .captcha-display,
    .login-page .captcha-audio-display {
        height: 3.5rem;
    }

    .login-page .captcha-refresh {
        width: 3rem;
        height: 3.5rem;
    }
}

@media (max-width: 360px) {
    .login-page .captcha-container {
        grid-template-columns: 1fr;
    }

    .login-page .captcha-refresh {
        width: 100%;
        height: 3rem;
    }
}
