/* ==========================================================================
   🔑 ESTILOS PARA O FLUXO DE AUTENTICAÇÃO (LOGIN / RECUPERAÇÃO)
   ========================================================================== */

body.auth-body {
    background: radial-gradient(circle at 0% 0%, rgba(59, 130, 246, 0.08) 0%, transparent 50%),
                radial-gradient(circle at 100% 100%, rgba(16, 185, 129, 0.05) 0%, transparent 50%),
                var(--color-neutral-50);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 20px;
    transition: background-color var(--transition-normal);
}

.login-card { 
    width: 100%; 
    max-width: 420px; 
    padding: 2.5rem; 
    border: 1px solid var(--color-neutral-100); 
    border-radius: var(--radius-lg); 
    box-shadow: var(--shadow-lg); 
    background-color: #ffffff;
    transition: transform var(--transition-normal), box-shadow var(--transition-normal);
}

.login-card:hover {
    box-shadow: 0 20px 40px -15px rgba(0,0,0,0.08);
}

.brand-icon { 
    width: 68px; 
    height: 68px; 
    /* O gradiente do sistema, não um par de azuis só desta tela: assim o
       ícone acompanha a cor da escola onde ela é conhecida. */
    background: var(--primary-gradient);
    color: #ffffff; 
    display: flex; 
    align-items: center; 
    justify-content: center; 
    border-radius: var(--radius-md); 
    margin: 0 auto 1.75rem; 
    font-size: 2.2rem; 
    box-shadow: 0 8px 16px -4px rgba(var(--primary-rgb), 0.35);
}

/* Inputs Refinados com Focus TDAH-Friendly */
.login-card .input-group {
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    transition: all var(--transition-fast);
}

.login-card .input-group-text {
    background-color: var(--color-neutral-50);
    border: 1px solid var(--color-neutral-300);
    color: var(--color-neutral-500);
    padding: 10px 14px;
}

.login-card .form-control {
    border: 1px solid var(--color-neutral-300);
    border-left: none;
    padding: 10px 14px;
    font-size: 0.95rem;
    transition: all var(--transition-fast);
}

.login-card .input-group:focus-within {
    box-shadow: 0 0 0 4px rgba(13, 110, 253, 0.15);
}

.login-card .input-group:focus-within .input-group-text,
.login-card .input-group:focus-within .form-control {
    border-color: #0d6efd;
}

.login-card .form-control:focus {
    box-shadow: none !important;
    border-color: #0d6efd;
}

.login-card .btn-primary {
    padding: 12px 24px;
    font-weight: 700;
    font-size: 0.98rem;
    border-radius: var(--radius-md);
    letter-spacing: 0.2px;
}

/* Link de voltar e secundários */
.auth-links-footer a {
    color: var(--color-neutral-500);
    font-size: 0.88rem;
    transition: color var(--transition-fast);
}

.auth-links-footer a:hover {
    color: #0d6efd;
}

/* Botão Google Moderno e Customizado */
.btn-google-login {
    background-color: #ffffff;
    border: 1px solid var(--color-neutral-300) !important;
    color: var(--color-neutral-700) !important;
    padding: 11px 24px !important;
    font-weight: 600 !important;
    border-radius: var(--radius-md) !important;
    transition: all var(--transition-fast) !important;
}

.btn-google-login:hover {
    background-color: var(--color-neutral-100) !important;
    border-color: var(--color-neutral-400) !important;
    color: var(--color-neutral-900) !important;
    transform: translateY(-1px);
}


/* ==========================================================================
   🔐 VERIFICAÇÃO EM DUAS ETAPAS
   --------------------------------------------------------------------------
   Mora aqui, e não num arquivo próprio, porque estas telas SÃO o fluxo de
   autenticação: a pessoa sai do login e cai nelas. Com folha separada, elas
   ganhavam fundo, cartão e tipografia diferentes do login que veio um passo
   antes — parecia outro sistema no meio da entrada.
   ========================================================================== */

/* O cartão do login tem 420px, medida de um formulário de duas linhas. A tela
   do QR precisa do código e das instruções lado a lado; abaixo disso o
   conteúdo empilha e o QR fica no topo, longe do campo. */
.login-card-largo {
    max-width: 720px;
}

.campo-codigo {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 1.6rem;
    letter-spacing: 0.35em;
    text-align: center;
    padding: 12px;
    flex: 1 1 200px;
}

.campo-recuperacao {
    font-size: 1.15rem;
    letter-spacing: 0.15em;
}

/* Fundo branco sólido atrás do QR: sobre fundo colorido ou translúcido, a
   leitura pela câmera falha de forma intermitente — e falha MUDA, sem
   mensagem, o que é o pior modo de falhar aqui. */
.moldura-qr {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 12px;
    display: inline-block;
    line-height: 0;
}

.moldura-qr svg {
    width: 100%;
    max-width: 210px;
    height: auto;
}

.passos-2etapas {
    padding-left: 1.1rem;
    margin-bottom: 0;
}

.passos-2etapas li {
    margin-bottom: 10px;
    font-size: 0.93rem;
    line-height: 1.55;
}

.chave-manual {
    display: block;
    background: #0f172a;
    color: #e2e8f0;
    padding: 10px 12px;
    border-radius: 8px;
    font-size: 0.92rem;
    letter-spacing: 0.06em;
    word-break: break-all;
}

/* Códigos de recuperação: mostrados uma única vez, e provavelmente impressos
   ou fotografados. Grade legível, com contraste alto. */
.codigos-recuperacao {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 10px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    padding: 18px;
}

.codigos-recuperacao span {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-align: center;
    color: #0f172a;
}

@media print {
    /* Imprimir a página dos códigos não deve levar junto botão e navegação. */
    .btn, .alert { display: none !important; }
}
