/* Tela de acesso.

   Duas colunas no desktop: a marca ocupa a esquerda e o formulário fica em um
   cartão à direita. No celular a coluna da marca sai — mas, diferente de antes,
   o formulário não fica sozinho: o cartão passa a carregar a logomarca e o nome
   da associação, sobre um fundo com a cor institucional.

   As cores vêm de --brand-primary/secondary/accent (paleta única, Configurações
   › Aparência); os valores de reserva reproduzem o padrão. */
.login-page{
  --login-ink: var(--brand-primary, #07182d);
  --login-blue: var(--brand-secondary, #008fd3);
  --login-accent: var(--brand-accent, #ffc928);
  min-height: 100vh;
  min-height: 100dvh;
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  background: #fff;
}

/* --- Coluna da marca ------------------------------------------------------ */
.login-art{
  position: relative; overflow: hidden;
  display: flex; flex-direction: column; gap: 34px;
  padding: 52px 56px;
  color: #fff;
  background: linear-gradient(155deg, var(--login-ink), color-mix(in srgb, var(--login-ink) 62%, var(--login-blue)));
}
.login-art-glow{position:absolute;width:620px;height:620px;right:-220px;top:-180px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--login-blue) 55%,transparent),transparent 68%);pointer-events:none}
/* Malha discreta: dá textura sem competir com o texto. */
.login-art-grid{position:absolute;inset:0;opacity:.16;pointer-events:none;
  background-image:linear-gradient(#ffffff22 1px,transparent 1px),linear-gradient(90deg,#ffffff22 1px,transparent 1px);
  background-size:52px 52px;
  mask-image:radial-gradient(circle at 25% 40%,#000,transparent 78%);
  -webkit-mask-image:radial-gradient(circle at 25% 40%,#000,transparent 78%)}
/* Só o CONTEÚDO sobe de camada. Com o seletor universal, esta regra vencia
   o position:absolute das duas camadas decorativas e elas viravam itens do
   flex: o brilho de 620px entrava na coluna e empurrava logo, título e
   lista para 740px abaixo do topo — fora da tela. */
.login-art>.login-art-top,
.login-art>.login-art-copy,
.login-art>.login-art-list,
.login-art>.login-art-footer{position:relative;z-index:1}

.login-art-top{display:flex;align-items:center;gap:14px}
.login-art-logo{width:56px;height:56px;flex:none;object-fit:contain;border-radius:16px;background:#ffffff14;padding:6px}
.login-art-logo.is-letter{display:grid;place-items:center;font:800 24px Manrope;padding:0}
.login-art-top b{display:block;font:800 17px Manrope;letter-spacing:-.01em}
.login-art-top small{display:block;margin-top:2px;color:#ffffff9e;font-size:11.5px;line-height:1.4;max-width:280px}

.login-art-copy{margin-top:auto}
.login-art-eyebrow{display:block;margin-bottom:14px;color:var(--login-accent);font-size:10.5px;font-weight:800;letter-spacing:.16em}
.login-art-copy h2{margin:0 0 16px;font:800 clamp(30px,3.2vw,44px) Manrope;line-height:1.1;letter-spacing:-.035em;text-wrap:balance}
.login-art-copy p{margin:0;max-width:430px;color:#ffffffb8;font-size:15px;line-height:1.65}

.login-art-list{display:grid;gap:11px;margin:0 0 auto;padding:0;list-style:none}
.login-art-list li{display:flex;align-items:flex-start;gap:13px;padding:14px 16px;border:1px solid #ffffff1f;border-radius:14px;background:#ffffff0f;backdrop-filter:blur(6px)}
.login-art-list span{display:grid;place-items:center;width:36px;height:36px;flex:none;border-radius:11px;background:#ffffff1a;color:var(--login-accent)}
.login-art-list .app-icon{width:18px;height:18px}
.login-art-list b{display:block;font-size:12.5px}
.login-art-list small{display:block;margin-top:3px;color:#ffffffa8;font-size:11.5px;line-height:1.5}
.login-art-footer{color:#ffffff70;font-size:11px}

/* --- Coluna do formulário ------------------------------------------------- */
.login-form{display:grid;place-items:center;padding:40px 32px;background:var(--brand-surface,#f4f7fa)}
/* A coluna segura a marca, o cartão e a assinatura — três blocos empilhados.
   O cartão ocupa a largura toda dela; a marca e a assinatura ficam FORA da
   caixa branca, acima e abaixo. */
.login-column{width:min(420px,100%);display:grid;justify-items:stretch}
.login-card{width:100%}

.login-brand{display:flex;align-items:center;justify-content:center;gap:13px;margin-bottom:20px}
.login-brand img,.login-brand-letter{width:52px;height:52px;flex:none;object-fit:contain;border-radius:15px}
.login-brand-letter{display:grid;place-items:center;background:var(--login-ink);color:#fff;font:800 22px Manrope}
.login-brand b{display:block;font:800 16px Manrope;color:var(--login-ink);letter-spacing:-.01em}
.login-brand small{display:block;margin-top:2px;color:#8394a5;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}

.login-form .login-card h1{margin:0 0 8px;font:800 clamp(27px,3vw,33px) Manrope;color:var(--login-ink);letter-spacing:-.03em;line-height:1.15}
.login-lead{margin:0 0 26px;color:#66788a;font-size:14px;line-height:1.6}

.login-alert{display:flex;align-items:flex-start;gap:10px;margin-bottom:20px;padding:13px 15px;border-radius:12px;background:#fdeceb;color:#b8483d;font-size:12.5px;font-weight:700;line-height:1.5}
.login-alert .app-icon{width:17px;height:17px;flex:none;margin-top:1px}

.login-form .login-fields{display:grid;gap:16px}
.login-form .login-fields label{display:block;margin:0;color:var(--login-ink);font-size:12px;font-weight:800}
.login-form .login-fields input{width:100%;display:block;margin-top:7px;padding:14px 15px;border:1px solid #dce3ea;border-radius:12px;background:#fff;font-size:14px;font-weight:600;color:var(--login-ink);transition:border-color .18s,box-shadow .18s}
.login-form .login-fields input::placeholder{color:#a6b3c0;font-weight:500}
.login-form .login-fields input:focus{outline:0;border-color:var(--login-blue);box-shadow:0 0 0 4px color-mix(in srgb,var(--login-blue) 16%,transparent)}

.login-password{position:relative;display:block;margin-top:7px}
.login-form .login-password input{margin-top:0;padding-right:92px}
.login-password button{position:absolute;right:7px;top:7px;bottom:7px;padding:0 14px;border:0;border-radius:9px;background:#eef3f8;color:var(--login-blue);font-size:11px;font-weight:800;cursor:pointer;transition:background-color .18s}
.login-password button:hover{background:#e2ebf3}

.login-row{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:-2px}
.login-row span{color:#8394a5;font-size:11.5px}
.login-row a{color:var(--login-blue);font-size:12px;font-weight:800}
.login-row a:hover{text-decoration:underline}

.login-submit{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin-top:6px;padding:16px;border:0;border-radius:13px;
  background:linear-gradient(120deg,var(--login-ink),color-mix(in srgb,var(--login-ink) 45%,var(--login-blue)));
  color:#fff;font-size:14px;font-weight:800;cursor:pointer;
  box-shadow:0 14px 30px color-mix(in srgb,var(--login-ink) 26%,transparent);
  transition:transform .18s,box-shadow .18s,filter .18s}
.login-submit:hover{filter:brightness(1.1);transform:translateY(-1px);box-shadow:0 18px 38px color-mix(in srgb,var(--login-ink) 32%,transparent)}
.login-submit:active{transform:translateY(0)}
@media (prefers-reduced-motion:reduce){.login-submit{transition:none}.login-submit:hover{transform:none}}

.login-secure{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:20px;color:#8394a5;font-size:11.5px;font-weight:700}
.login-secure .app-icon{width:15px;height:15px;color:var(--brand-secondary,#008fd3)}

.login-divider{position:relative;margin:26px 0 16px;text-align:center}
.login-divider::before{content:'';position:absolute;left:0;right:0;top:50%;height:1px;background:#e0e7ee}
.login-divider span{position:relative;padding:0 12px;background:var(--brand-surface,#f4f7fa);color:#9aa8b6;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.login-join{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;border:1px solid #d8e1ea;border-radius:12px;background:#fff;color:var(--login-ink);font-size:12.5px;font-weight:800;transition:border-color .18s,background-color .18s}
.login-join:hover{border-color:var(--login-blue);background:#f6fbfe}

/* --- Estados da recuperação de senha -------------------------------------
   Sucesso, link enviado, link expirado e módulo pendente. Compartilham a
   mesma casca do login; muda só o conteúdo do cartão. */
.login-state{display:grid;justify-items:center;text-align:center}
.login-state-icon{display:grid;place-items:center;width:60px;height:60px;margin-bottom:18px;border-radius:50%;background:#e5f5ee;color:#0b7a57;font-size:28px;font-weight:800}
.login-state-icon.is-warning{background:#fdf3e8;color:#a3730f}
.login-form .login-state h1{margin:0 0 10px}
.login-state .login-lead{margin-bottom:8px}
.login-state-hint{margin:0 0 6px;color:#8b9aa8;font-size:12.5px;line-height:1.6}
.login-state code{padding:2px 7px;border-radius:6px;background:#eef3f8;font-size:12px;word-break:break-all}
/* O botão de ação vira link nesses estados; precisa dos mesmos ajustes de
   caixa que um <a> não herda de <button>. */
.login-submit.is-link{margin-top:20px;text-decoration:none}
.login-state>.login-join{margin-top:10px;width:100%}
.login-state>.login-lead b{color:var(--login-ink)}

/* Medidor de força dentro do cartão de acesso. */
.login-form .member-strength{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:9px}
.login-form .member-strength i{height:4px;border-radius:4px;background:#e2e9f0;transition:background-color .2s}
.login-form .member-strength span{grid-column:1/-1;margin-top:2px;color:#8b9aa8;font-size:10.5px;font-weight:700}
.login-form .member-strength[data-score="1"] i:nth-child(1){background:#c1584c}
.login-form .member-strength[data-score="2"] i:nth-child(-n+2){background:#c99320}
.login-form .member-strength[data-score="3"] i:nth-child(-n+3){background:#5aa646}
.login-form .member-strength[data-score="4"] i{background:#0b7a57}
.login-form .member-strength[data-score="0"] span,.login-form .member-strength[data-score="1"] span{color:#c1584c}
.login-form .member-strength[data-score="2"] span{color:#a3730f}
.login-form .member-strength[data-score="3"] span,.login-form .member-strength[data-score="4"] span{color:#0b7a57}
.login-form .login-password input.is-mismatch{border-color:#d98077;background:#fdf7f6}

@media (max-width:1000px){
  .login-page{grid-template-columns:1fr}
  /* Sem espaço para a coluna da marca: ela sai, e o cartão assume a
     identidade — por isso .login-brand existe dentro do formulário. */
  .login-art{display:none}
  .login-form{padding:36px 20px 44px;background:linear-gradient(180deg,color-mix(in srgb,var(--login-ink) 8%,#fff),var(--brand-surface,#f4f7fa) 42%)}
  .login-card{padding:28px 24px 26px;border:1px solid #e4ebf1;border-radius:22px;background:#fff;box-shadow:0 24px 60px rgba(7,24,45,.09)}
  .login-brand{margin-bottom:18px}
  .login-divider span{background:#fff}
}
@media (max-width:400px){
  .login-card{padding:24px 18px 22px}
  .login-brand img,.login-brand-letter{width:46px;height:46px}
}

/* Assinatura da agência: dentro do cartão, no fim.
   Antes era position:fixed no canto da tela e flutuava sobre o formulário. */
.login-credit{display:block;margin-top:16px;color:#9aa8b6;font-size:10.5px;text-align:center}
.login-credit a{color:inherit}
.login-credit strong{color:var(--login-blue);font-weight:800}
.login-credit a:hover strong{color:var(--login-ink)}
