.login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: var(--space-5); background: linear-gradient(var(--overlay-scrim), var(--overlay-scrim)), radial-gradient(circle at 20% 20%, rgba(var(--accent-rgb), 0.25), transparent 45%), var(--bg-canvas); } /* No tema claro, o scrim escuro + o brilho radial (pensados pra dar profundidade sobre o --bg-canvas escuro do tema padrão) deixavam o fundo acinzentado/amarronzado, bem diferente do fundo real da tela Principal nesse tema (--bg-canvas claro, liso) — pedido explícito do usuário pra usar o mesmo tom. Sem scrim/glow no claro, só a cor sólida. */ :root[data-theme="light"] .login-page { background: var(--bg-canvas); } .login-card { width: 100%; max-width: 380px; background: var(--login-card-bg); border: 1px solid var(--login-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); padding: var(--space-6) var(--space-5); display: flex; flex-direction: column; align-items: center; gap: var(--space-5); animation: pidScaleIn 200ms ease; transition: opacity 500ms ease, transform 500ms ease; } /* Login bem-sucedido: o card se dissolve (em vez de a animação de intro só aparecer por cima dele de repente) — ver pidPlayLoginIntro() em login-intro.js, que aplica esta classe e só começa a desenhar o ícone depois que essa transição (mesma duração, 500ms, PID_INTRO_FADE_MS) termina. */ .login-card.is-leaving { opacity: 0; transform: scale(0.98); } /* O ícone é um inline dentro de um ) — só assim dá pra CSS/JS alcançar os olhos e piscar ao clicar (login-logo-blink.js). Mesma logo nos dois temas de propósito (ver comentário em "Logos em static/img/" no CLAUDE.md) — não alterna mais por data-theme. */ .login-card__logo-btn { padding: 0; display: block; } .login-card__logo { width: 96px; height: 96px; } .login-heading { display: flex; flex-direction: column; align-items: center; gap: var(--space-1); } .login-card__title { font-family: "Bree Serif", serif; font-size: 1.3rem; font-weight: 400; letter-spacing: 0.02em; color: var(--login-text-primary); text-align: center; } /* Slogan da marca, discreto — fonte script "Pinyon Script" (ver pid-marca-leiame.md), logo abaixo do título (.login-heading tem um gap bem menor que o gap:var(--space-5) que .login-card usa entre seus próprios filhos diretos, senão o slogan ficaria longe demais do título pra parecer uma assinatura). Menor que o título (1.3rem) pra não competir com ele. */ .login-slogan { font-family: "Pinyon Script", cursive; font-size: 1.2rem; color: #c6a24a; text-align: center; } .login-form { width: 100%; display: flex; flex-direction: column; gap: var(--space-4); } .field { display: flex; flex-direction: column; gap: var(--space-2); } .field label { font-size: 0.8rem; font-weight: 600; color: var(--login-text-secondary); } .field__control { display: flex; align-items: center; gap: var(--space-2); background: var(--login-field-bg); border: 1px solid var(--login-border); border-radius: var(--radius-sm); padding: 0 var(--space-3); transition: border-color var(--transition-fast); } .field__control:focus-within { border-color: var(--accent); } .field__control svg { color: var(--login-text-muted); } .field__control input { flex: 1; border: none; background: none; outline: none; padding: var(--space-3) 0; font-size: 0.95rem; color: var(--login-text-primary); } .field__control input::placeholder { color: var(--login-text-muted); } .field__toggle { color: var(--login-text-muted); display: flex; align-items: center; padding: var(--space-1); } .field__toggle:hover { color: var(--login-text-secondary); } .field__error { min-height: 1em; font-size: 0.78rem; color: var(--danger); } .btn-primary { display: flex; align-items: center; justify-content: center; gap: var(--space-2); background: var(--accent); color: var(--accent-contrast); font-weight: 600; font-size: 0.95rem; padding: var(--space-3); border-radius: var(--radius-sm); transition: background var(--transition-fast); } .btn-primary:hover { background: var(--accent-hover); } .login-help { font-size: 0.8rem; color: var(--login-text-muted); text-align: center; } .login-help a { color: var(--accent); font-weight: 600; } .login-help a:hover { text-decoration: underline; }