/* ============================================================
   EAD Play — Páginas de autenticação (login, recuperar, redefinir)
   e telas de erro sem sessão (403/404/500)
   ============================================================ */
/* O fundo decorativo é fixo e recorta os próprios orbes: a página nunca rola na horizontal e,
   em telas baixas (ou com alerta + Turnstile), rola na vertical até o botão.
   Sem modal nestas telas: não reserva a calha da barra de rolagem (faixa vazia à direita). */
html:has(> body.page-auth) { scrollbar-gutter:auto; }
.page-auth { min-height:100vh; min-height:100dvh; display:flex; align-items:center; justify-content:center; padding:clamp(16px,5vh,56px) 16px; position:relative;
    background:linear-gradient(145deg,#0b0d14 0%,#0f1221 30%,#151933 60%,#0f1117 100%); }
@media (max-height:640px) { .page-auth { align-items:flex-start; } }
[data-theme="light"] .page-auth { background:linear-gradient(145deg,#eef1f9 0%,#e9edf8 40%,#f4f5fb 100%); }

.auth-bg { position:fixed; inset:0; overflow:hidden; pointer-events:none; z-index:0; }
.auth-bg .orb { position:absolute; border-radius:50%; filter:blur(80px); opacity:.5; }
.auth-bg .orb-1 { width:460px; height:460px; top:-8%; left:-6%; background:radial-gradient(circle,rgba(76,110,245,.35) 0%,transparent 70%); animation:orb1 14s ease-in-out infinite; }
.auth-bg .orb-2 { width:380px; height:380px; bottom:-8%; right:-6%; background:radial-gradient(circle,rgba(124,58,237,.3) 0%,transparent 70%); animation:orb2 17s ease-in-out infinite; }
.auth-bg .orb-3 { width:300px; height:300px; top:55%; left:60%; transform:translate(-50%,-50%); background:radial-gradient(circle,rgba(6,182,212,.16) 0%,transparent 70%); animation:orb3 11s ease-in-out infinite; }
.auth-bg .grid { position:absolute; inset:0; background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px); background-size:48px 48px;
    -webkit-mask-image:radial-gradient(ellipse at center,black 20%,transparent 75%); mask-image:radial-gradient(ellipse at center,black 20%,transparent 75%); }
[data-theme="light"] .auth-bg .grid { background-image:linear-gradient(rgba(0,0,0,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.045) 1px,transparent 1px); }
[data-theme="light"] .auth-bg .orb { opacity:.4; }
@keyframes orb1 { 0%,100% { transform:translate(0,0) scale(1); } 33% { transform:translate(30px,20px) scale(1.08); } 66% { transform:translate(-20px,-15px) scale(.95); } }
@keyframes orb2 { 0%,100% { transform:translate(0,0) scale(1); } 50% { transform:translate(-25px,-20px) scale(1.1); } }
@keyframes orb3 { 0%,100% { transform:translate(-50%,-50%) scale(1); } 50% { transform:translate(-50%,-55%) scale(1.06); } }

.auth-theme { position:fixed; top:16px; right:16px; z-index:2; }
.auth-theme:hover { border-color:var(--border-hover); color:var(--text-2); }

.auth-wrap { position:relative; z-index:1; width:100%; max-width:420px; display:flex; flex-direction:column; align-items:center; animation:authIn .45s var(--ease-out); }
@keyframes authIn { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:none; } }
/* Cartão limpo (logo, título, campos, ação): sombra curta, sem faixa nem decoração interna */
.auth-card { width:100%; background:var(--surface); border:1px solid var(--border-strong); border-radius:var(--r-xl); padding:32px 32px 28px; box-shadow:0 1px 0 rgba(255,255,255,.04) inset,0 16px 40px -16px rgba(0,0,0,.6); position:relative; }
[data-theme="light"] .auth-card { border-color:var(--border); box-shadow:0 1px 2px rgba(16,24,40,.04),0 16px 40px -16px rgba(16,24,40,.16); }
.auth-logo { display:flex; justify-content:center; margin-bottom:20px; }
.auth-logo img { max-height:44px; max-width:180px; object-fit:contain; }
.auth-head { text-align:center; margin-bottom:24px; }
.auth-head h1 { font-size:var(--fs-xl); line-height:28px; font-weight:700; letter-spacing:-.02em; margin-bottom:4px; }
.auth-head p { font-size:var(--fs-sm); line-height:20px; color:var(--text-3); margin:0 auto; max-width:320px; text-wrap:balance; }
.auth-form .field { margin-bottom:16px; }
.auth-form .input { height:40px; }
.auth-form .btn-block { height:var(--h-lg); margin-top:8px; font-size:var(--fs-base); border-radius:10px; }
.cf-turnstile { display:flex; justify-content:center; margin-bottom:14px; }
.auth-card .alert { text-align:left; }
/* Rodapé do cartão: link(s) centralizados sob uma linha fina; botão de bloco ocupa a largura toda */
.auth-links { display:flex; flex-direction:column; align-items:center; gap:10px; margin-top:20px; padding-top:20px; border-top:1px solid var(--border); font-size:var(--fs-sm); }
.auth-links .btn-block { align-self:stretch; height:var(--h-lg); font-size:var(--fs-base); border-radius:10px; }
/* telas de erro sem sessão: só o botão, sem a linha divisória (não há formulário acima) */
.auth-links:has(> .btn-block:only-child) { margin-top:8px; padding-top:0; border-top:0; }
.auth-kicker { display:block; margin-bottom:6px; font-size:var(--fs-2xs); line-height:16px; font-weight:600; letter-spacing:var(--tr-caps); text-transform:uppercase; color:var(--text-3); }
.auth-links a:not(.btn) { display:inline-flex; align-items:center; gap:8px; font-weight:500; }
.auth-links a:not(.btn) > i { font-size:12px; }
.auth-copy { margin:20px 0 0; font-size:var(--fs-xs); color:var(--text-3); text-align:center; }
@media (max-width:480px) { .auth-card { padding:28px 20px 24px; } .auth-logo img { max-height:40px; } }
