/* ---------------------------------------------------------------------
   A PONTE entre os dois sistemas de design.

   A tela acima veio da plataforma do curso e usa os nomes de variável
   DELA. O app.css deste projeto veio do protótipo e usa outros nomes
   para as mesmas coisas. Em vez de reescrever a tela — o que a faria
   deixar de ser idêntica — as variáveis do curso são definidas aqui em
   termos das do protótipo.

   ⚠️ Mexeu na paleta do protótipo, confira aqui: um nome que some
   deixa a cor virar preto ou o raio virar zero, sem erro nenhum.
   --------------------------------------------------------------------- */
:root{
  --navy: var(--side);          /* azul-marinho da barra lateral */
  --gold-2: var(--gold-ink);    /* dourado escuro, para texto sobre claro */
  --serif: var(--f-display);    /* Bodoni Moda */
  --sans: var(--f-body);        /* Jost */
  --radius: var(--r);           /* 10px */
  --radius-lg: 16px;            /* cartão do login, maior que o padrão */
}

/* =====================================================================
   LOGIN — a tela de porta.

   Extraída do app.css da plataforma do curso, sem reescrever: é a
   MESMA tela, com o mesmo painel de apresentação à esquerda, os
   mesmos círculos de fundo, o mesmo cartão, os campos com ícone e o
   olho de ver senha — inclusive o comportamento em tela estreita,
   onde o painel some e a marca sobe para cima do cartão.

   Fica em arquivo PRÓPRIO porque só é usada antes de entrar: separar
   deixa claro o que é porta e o que é aplicativo.

   ⚠️ Usa variáveis que o app.css define (--navy, --gold, --line…).
   Os dois arquivos entram juntos no index.html, nesta ordem.
   ===================================================================== */

.login-tela{
  position:fixed; inset:0; z-index:1000;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:44px 24px;
  /* Rola quando não couber (passo de criar senha em tela baixa). */
  overflow-y:auto;
  background:
    radial-gradient(130% 100% at 12% 0%, #14324f 0%, transparent 55%),
    radial-gradient(110% 90% at 100% 100%, #123047 0%, transparent 62%),
    linear-gradient(165deg, #0b1f33 0%, #060f1a 100%);
}
/* Círculos do fundo: desenho, não conteúdo — por isso pointer-events
   none, senão roubariam o clique do formulário. */
.login-fundo{position:fixed; inset:0; overflow:hidden; pointer-events:none; z-index:0}
.login-fundo span{position:absolute; border-radius:50%; border:1px solid rgba(196,169,124,.09)}
.login-fundo .lf-1{
  width:640px; height:640px; right:-250px; bottom:-270px;
  box-shadow:0 0 0 70px rgba(196,169,124,.03);
}
.login-fundo .lf-2{width:380px; height:380px; left:-160px; top:-150px}

.login-shell{
  position:relative; z-index:1;
  width:100%; max-width:1150px; min-height:720px;
  display:grid; grid-template-columns:1.04fr .96fr;
  border-radius:var(--radius-lg); overflow:hidden;
  box-shadow:0 50px 110px -38px rgba(0,0,0,.7), 0 14px 40px -18px rgba(0,0,0,.45);
}

/* ---- painel de apresentação (esquerda) ---- */
.login-aside{
  position:relative; overflow:hidden; color:#fff;
  background:
    radial-gradient(120% 90% at 15% 0%, #1b4269 0%, transparent 55%),
    linear-gradient(160deg, var(--navy) 0%, #0a1d31 100%);
  padding:56px 58px 48px;
  display:flex; flex-direction:column; justify-content:space-between;
}
.login-aside::before{
  content:""; position:absolute; right:-180px; bottom:-200px;
  width:540px; height:540px; border-radius:50%;
  border:1px solid rgba(196,169,124,.16);
  box-shadow:0 0 0 62px rgba(196,169,124,.045), 0 0 0 134px rgba(196,169,124,.03);
}
.login-aside::after{
  content:""; position:absolute; left:-110px; top:-120px;
  width:320px; height:320px; border-radius:50%;
  border:1px solid rgba(196,169,124,.12);
}
.la-logo{width:205px; max-width:60%; height:auto; display:block; position:relative; z-index:1}
.la-meio{position:relative; z-index:1; max-width:430px}
.la-meio h2{
  font-family:var(--serif); font-weight:600; font-size:40px; line-height:1.13;
  margin:0 0 17px; letter-spacing:-.018em;
}
.la-meio p{font-size:15.5px; line-height:1.6; color:rgba(255,255,255,.72); margin:0; font-weight:300}
.la-itens{list-style:none; margin:30px 0 0; padding:0; display:flex; flex-direction:column; gap:14px}
.la-itens li{
  display:flex; align-items:center; gap:13px;
  font-size:14.5px; color:rgba(255,255,255,.8); font-weight:300;
}
.la-itens .tick{
  width:26px; height:26px; border-radius:50%; flex:0 0 auto;
  background:rgba(196,169,124,.15); display:grid; place-items:center;
}
.la-itens .tick svg{width:14px; height:14px; color:var(--gold)}
.la-rodape{position:relative; z-index:1; font-size:12px; color:rgba(228,213,186,.5); letter-spacing:.3px}

.login-eyebrow{
  font-size:10.5px; letter-spacing:3.6px; text-transform:uppercase;
  color:var(--gold); font-weight:600; margin-bottom:17px;
}

/* ---- formulário (direita) ---- */
.login-cartao{
  background:#F8F9FB;
  display:grid; place-items:center; padding:56px 52px;
}
.login-passo{width:100%; max-width:372px}
.login-passo[hidden]{display:none}

.login-kicker{
  font-size:10.5px; letter-spacing:3.2px; text-transform:uppercase;
  color:var(--gold-2); font-weight:700; margin-bottom:11px;
}
.login-titulo{
  font-family:var(--serif); font-size:31px; font-weight:600; color:var(--navy);
  margin:0 0 8px; letter-spacing:-.02em; line-height:1.12;
}
.login-sub{margin:0 0 27px; font-size:14px; color:var(--muted); line-height:1.5}

.login-passo label{
  display:block; font-size:12.5px; font-weight:500; color:var(--navy);
  margin-bottom:7px; letter-spacing:.2px; text-align:left;
}
.login-passo label b{color:var(--muted); font-weight:400}
.login-passo input{
  width:100%; font-family:var(--sans);
  font-size:16px;             /* 16px evita o zoom automático do iOS */
  color:var(--ink); background:#fff;
  border:1px solid var(--line); border-radius:12px;
  padding:14px 15px; outline:none;
  transition:border-color .18s, box-shadow .18s;
}
.login-passo input::placeholder{color:#b3aca4}
.login-passo input:focus{border-color:var(--gold); box-shadow:0 0 0 4px rgba(196,169,124,.16)}

/* Campo com ícone à esquerda: o ícone é decoração e não pode receber
   clique, senão o toque perto dele não foca o campo. */
.campo-icone{position:relative; margin-bottom:17px}
.campo-icone .ci-marca{
  position:absolute; left:15px; top:50%; transform:translateY(-50%);
  color:#9e978f; display:grid; place-items:center; pointer-events:none;
}
.campo-icone .ci-marca svg{width:18px; height:18px}
.campo-icone input{padding-left:44px}

.login-codigo{
  text-align:center; font-size:30px!important; font-weight:600;
  letter-spacing:.34em; text-indent:.34em; padding:16px 0!important;
  color:var(--navy)!important;
}

.login-btn{
  width:100%; margin-top:16px; cursor:pointer; border:none;
  font-family:var(--sans); font-size:15px; font-weight:600; color:var(--navy);
  background:linear-gradient(135deg, var(--gold), var(--gold-2));
  border-radius:12px; padding:15px; letter-spacing:.3px;
  box-shadow:0 14px 34px -14px rgba(196,169,124,.7);
  transition:transform .18s, box-shadow .18s, opacity .16s;
  display:flex; align-items:center; justify-content:center; gap:9px;
}
.login-btn svg{width:18px; height:18px}
.login-btn:hover:not(:disabled){transform:translateY(-1px); box-shadow:0 18px 42px -14px rgba(196,169,124,.85)}
.login-btn:active:not(:disabled){transform:translateY(0)}
.login-btn:disabled{opacity:.55; cursor:not-allowed; box-shadow:none}

.login-erro{
  margin:14px 0 0; font-size:13.5px; line-height:1.5;
  color:#a83232; text-align:left;
}
.login-erro[hidden]{display:none}

/* Campo de senha com o olho. O botão fica DENTRO do campo, sobreposto, e
   o input ganha respiro à direita para o texto não passar por baixo dele. */
.campo-senha{position:relative; margin-bottom:12px}
.campo-senha input{padding-right:46px !important; margin-bottom:0 !important}
.olho{
  position:absolute; right:6px; top:50%; transform:translateY(-50%);
  width:34px; height:34px; border:none; background:none; cursor:pointer;
  display:grid; place-items:center; color:#9e978f;
  border-radius:8px; padding:0; transition:color .15s, background .15s;
}
.olho svg{width:19px; height:19px}
.olho:hover{color:var(--navy); background:rgba(14,39,64,.05)}
/* Olho "aberto" = senha visível. A barra diagonal é o sinal universal de
   "está sendo mostrada", e some quando volta a ficar oculta. */
.olho.aberto{color:var(--navy)}
.olho.aberto::after{
  content:""; position:absolute; left:7px; right:7px; top:50%;
  height:1.6px; background:currentColor; transform:rotate(-45deg);
  border-radius:2px;
}

/* Aviso de força: orienta enquanto ela digita, sem impedir nada. */
.login-forca{
  margin:-4px 0 12px; font-size:12.5px; text-align:left;
  display:flex; align-items:center; gap:7px;
}
.login-forca[hidden]{display:none}
.login-forca::before{content:""; width:8px; height:8px; border-radius:50%; flex:none}
.login-forca.fraca{color:#b3542f}
.login-forca.fraca::before{background:#b3542f}
.login-forca.media{color:var(--warn)}
.login-forca.media::before{background:var(--warn)}
.login-forca.forte{color:var(--ok)}
.login-forca.forte::before{background:var(--ok)}

/* Texto de apoio, não de erro: mesma posição, tom calmo. */
.login-dica{
  margin:0 0 14px; font-size:13px; line-height:1.55;
  color:var(--muted); text-align:left;
}
.login-dica[hidden]{display:none}
.login-link{
  display:block; width:100%; margin-top:14px; padding:4px;
  background:none; border:none; cursor:pointer;
  font-family:var(--sans); font-size:13px; color:var(--navy); font-weight:500;
  text-decoration:none;
  transition:color .15s;
}
.login-link:hover:not(:disabled){color:var(--gold-2)}
.login-link:disabled{cursor:default; opacity:.6; color:var(--muted)}

.login-sep{
  display:flex; align-items:center; gap:13px; margin:24px 0 18px;
  color:#c2bbb2; font-size:10.5px; letter-spacing:2px;
}
.login-sep::before,.login-sep::after{content:""; flex:1; height:1px; background:var(--line)}
.login-apoio{text-align:center; font-size:13.5px; color:var(--muted); margin:0; line-height:1.5}
.login-apoio a{color:var(--navy); font-weight:600; text-decoration:none}
.login-apoio a:hover{color:var(--gold-2)}

#turnstileBox:not(:empty){margin-top:16px; display:flex; justify-content:center}

/* Marca acima do cartão e rodapé solto: só existem na tela estreita,
   onde o painel da esquerda (que carrega os dois) não aparece. */
.login-marca-topo{display:none; position:relative; z-index:1; text-align:center; margin-bottom:24px}
.login-marca-topo img{width:186px; max-width:62vw; height:auto; display:block; margin:0 auto}
.login-marca-topo .login-eyebrow{margin:11px 0 0; letter-spacing:3.4px}
.login-rodape-fora{
  display:none; position:relative; z-index:1; margin-top:24px; text-align:center;
  font-size:11.5px; color:rgba(228,213,186,.5); letter-spacing:.4px;
}

/* ---- tela estreita: cartão único, centralizado ---- */
@media(max-width:900px){
  .login-tela{padding:34px 20px}
  .login-marca-topo,.login-rodape-fora{display:block}
  .login-shell{
    grid-template-columns:1fr; min-height:0; max-width:430px;
    border-radius:var(--radius);
    box-shadow:0 40px 90px -30px rgba(0,0,0,.6), 0 10px 30px -12px rgba(0,0,0,.35);
  }
  .login-aside{display:none}
  .login-cartao{padding:38px 32px 34px; background:#fff}
  .login-passo{max-width:none}
}
@media(max-width:520px){
  .login-tela{padding:30px 16px}
  .login-cartao{padding:32px 22px 30px}
  .login-titulo{font-size:27px}
  .login-marca-topo img{width:166px}
}
/* Telas grandes: um respiro a mais. */
@media(min-width:1280px){
  .login-aside{padding:64px 66px 54px}
  .login-cartao{padding:64px 60px}
}
