/* concilio-id — FUNIL DE AUTENTICAÇÃO (login, recuperação, 2FA, convite, chave de acesso).

   Transcrição do design aprovado em 2026-10-26 (canvas "Telas do concilio-id na marca
   Concílio", linha "Proposta"). Padrão-ouro intocado: docs/design/2026-10-26/.

   O mock declara cada valor em `style=` inline; aqui os mesmos valores viram classes
   `lp-*` (o prefixo é o do próprio mock: `lp-painel`, `lp-form`, `lp-campo`, `lp-botao`).
   Fora de `--lp-*`, nenhum valor foi arredondado nem trocado.

   WHITE LABEL. O mock é a marca Concílio; o app veste a marca de quem abriu o fluxo. Só
   os papéis de MARCA viram variável (`--lp-*`), e cada um tem a sua regra em
   docs/design/DESVIOS.md:
     --lp-cta        o vermelho da ação principal  -> o primário da marca
     --lp-acento     o vermelho decorativo (régua, ponto, foco do campo)
     --lp-link       o vermelho dos links          -> o texto de acento da marca
     --lp-anel       o anel de foco
     --lp-fonte      a família
   Na marca `concilio` os cinco são os literais do mock — é a prova do gate de fidelidade.
   Neutros (#111111, #686868, #8c8c8c, #b2b2b2, #ececec, #f6f6f6) são do mock para todas. */

.lp{
  --lp-cta: var(--primary);
  --lp-cta-tinta: var(--primary-ink);
  --lp-acento: var(--accent);
  --lp-link: var(--text-accent);
  --lp-link-hover: var(--accent-press);
  --lp-anel: var(--focus-ring);
  --lp-fonte: var(--font-sans);
}
:root[data-brand="concilio"] .lp{
  --lp-cta: #c52027;
  --lp-cta-tinta: #ffffff;
  --lp-acento: #c52027;
  --lp-link: #9e1a1f;
  --lp-link-hover: #871217;
  --lp-anel: rgba(197,32,39,.30);
  --lp-fonte: "Plus Jakarta Sans","Segoe UI",system-ui,sans-serif;
}

/* ---------------------------------------------------------------- casca */
/* As larguras da CASCA (base do painel e da coluna, largura máxima da coluna) também são
   rem: com fonte grande a coluna cresce junto e desce para baixo do painel, em vez de
   espremer o texto e abrir rolagem lateral. */
/* Tamanhos de FONTE em rem (1rem = 16px, o padrão do browser): na fonte padrão dão
   exatamente os px do mock — o gate de fidelidade compara o computado —, e crescem com a
   preferência de fonte da pessoa (a régua "fonte 200%" da matriz). Medidas de caixa ficam
   em px, como o mock as declara. */
/* A casca zera o que o custom.css põe no <body> (15px/300, entrelinha e tracking próprios,
   `box-sizing:border-box` em tudo): o mock parte dos padrões do browser. Onde o mock
   declara `border-box`, a regra da peça declara também; botão e select são `border-box`
   por padrão do browser, e o campo o mock declara. */
.lp{min-height:100vh;display:flex;flex-wrap:wrap;background:#ffffff;
  font-family:var(--lp-fonte);color:#111111;-webkit-font-smoothing:antialiased;
  font-size:1rem;font-weight:400;line-height:normal;letter-spacing:normal}
:where(.lp, .lp *:not(button, select, input, textarea)){box-sizing:content-box}
/* O fundo da página é o do mock (branco), não o `--bg` do custom.css: o que vier depois da
   casca (o botão de melhoria/bug do concilio-feedback) não pode abrir uma faixa cinza. */
body:has(> .lp){background:#ffffff}
.lp a{color:var(--lp-link);text-decoration:none}
.lp a:hover{color:var(--lp-link-hover);text-decoration:underline}

.lp-painel{flex:999 1 35rem;min-width:0;min-height:100vh;box-sizing:border-box;background:#111111;color:#ffffff;
  padding:48px 64px;display:flex;flex-direction:column;position:relative;overflow:hidden}
.lp-imagem-moldura{display:contents} /* D18: o <picture> não vira item do flex do painel */
.lp-imagem{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;pointer-events:none}
.lp-assina{display:flex;align-items:center;gap:12px;position:relative}
.lp-assina__logo{height:26px;width:auto;display:block}
.lp-assina__nome{font-size:1.0625rem;font-weight:600;letter-spacing:-0.005em;color:#ffffff}
.lp-assina__ponto{width:3px;height:3px;background:var(--lp-acento);flex:none}
.lp-assina__prod{font-size:1.0625rem;font-weight:400;letter-spacing:-0.005em;color:#8c8c8c}
.lp-rodape-painel{margin:auto -64px -48px;padding:18px 64px;background:#111111;display:flex;justify-content:space-between;
  gap:16px;font-size:0.75rem;color:#8c8c8c;position:relative}

.lp-form{flex:1 1 27.5rem;min-width:0;box-sizing:border-box;padding:48px 64px;display:flex;flex-direction:column;
  justify-content:center;background:#ffffff}
.lp-coluna{width:100%;max-width:25rem;margin:0 auto;display:flex;flex-direction:column;gap:28px}
/* O aviso do servidor (flash) nasce ANTES do conteúdo no HTML, mas o mock o desenha logo
   abaixo do cabeçalho: a ordem visual vem do `order`, a de leitura continua a do HTML. */
.lp-coluna > .lp-cabeca{order:-1}

@media (max-width:760px){
  .lp-painel{min-height:220px !important;padding:24px !important}
  .lp-rodape-painel{display:none !important}
  .lp-form{padding:36px 24px 48px !important}
}

/* ---------------------------------------------------------------- cabeçalho */
.lp-cabeca{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.lp-cabeca--login{gap:8px;align-items:normal}
.lp-tile{width:56px;height:56px;border-radius:10px;background:#f6f6f6;color:#111111;
  display:inline-flex;align-items:center;justify-content:center;margin-bottom:8px}
.lp-tile--perigo{background:#fdeded;color:#c52027}
.lp-olho{display:flex;align-items:center;gap:10px;font-size:0.75rem;font-weight:600;letter-spacing:0.14em;
  text-transform:uppercase;color:#686868}
.lp-olho__regua{width:24px;height:3px;background:var(--lp-acento);flex:none}
.lp-titulo{margin:0;font-family:var(--lp-fonte);font-size:2rem;font-weight:700;letter-spacing:-0.02em;line-height:1.15;color:#111111}
.lp-sub{margin:0;font-size:0.9375rem;line-height:1.5;color:#686868;overflow-wrap:anywhere}
.lp-sub b{color:#111111;font-weight:600}
.lp-aguarde{text-align:center}

/* ---------------------------------------------------------------- campos */
.lp-campos{display:flex;flex-direction:column;gap:18px;margin:0}
.lp-campos--14{gap:14px}
.lp-campos--12{gap:12px}
.lp-grupo{display:flex;flex-direction:column;gap:6px}
.lp-rotulo{font-size:0.8125rem;font-weight:600;color:#111111}
.lp-rotulo-linha{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.lp-rotulo-linha a{font-size:0.8125rem;font-weight:500}

/* O campo do login (mock da 1ª tela) não declara largura nem respiro à direita; os do
   funil declaram `width:100%` e reservam 44px para o olho/ícone. */
.lp-campo{height:44px;box-sizing:border-box;padding:0 12px;border:1px solid #b2b2b2;border-radius:6px;
  font-family:inherit;font-size:0.875rem;color:#111111;background:#ffffff}
.lp-campo--funil{width:100%}
.lp-campo--com-acao{padding:0 44px 0 12px}
.lp-campo:focus{outline:none;border-color:var(--lp-acento);box-shadow:0 0 0 3px var(--lp-anel)}
.lp-campo--codigo{height:56px;padding:0 12px 0 calc(12px + 0.4em);
  font-family:'SFMono-Regular', ui-monospace, Menlo, Consolas, monospace;font-size:1.5rem;font-weight:600;
  letter-spacing:0.4em;text-align:center}
.lp-campo--recuperacao{height:52px;padding:0 12px;font-family:'SFMono-Regular', ui-monospace, Menlo, Consolas, monospace;
  font-size:1.125rem;font-weight:600;letter-spacing:0.14em;text-align:center}
.lp-campo--leitura{color:#686868;background:#f6f6f6}
.lp-campo--erro{border-color:#c52027}
.lp-envolve{position:relative}
.lp-olho-btn{position:absolute;right:4px;top:4px;width:36px;height:36px;border:0;border-radius:6px;background:transparent;
  color:#686868;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.lp-olho-btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--lp-anel)}
/* Área de TOQUE de 44×44 (WCAG 2.5.5) sem mudar o desenho de 36×36 do mock: pseudo invisível. */
.lp-olho-btn::before{content:"";position:absolute;inset:-4px}
.lp-campo-icone{position:absolute;right:14px;top:13px;color:#8c8c8c;display:flex}
.lp-erro{display:flex;align-items:center;gap:6px;font-size:0.8125rem;font-weight:500;color:#9e1a1f}

/* ---------------------------------------------------------------- botões */
.lp-botao{height:48px;width:100%;border:1px solid #111111;border-radius:6px;background:#111111;color:#ffffff;
  font-family:inherit;font-size:0.9375rem;font-weight:600;letter-spacing:0.005em;display:inline-flex;align-items:center;
  justify-content:center;gap:10px;white-space:nowrap;cursor:pointer;box-sizing:border-box;text-decoration:none;
  padding:1px 6px;text-align:center}
.lp-botao:focus-visible{outline:none;box-shadow:0 0 0 3px var(--lp-anel)}
/* `padding:1px 6px` e `text-align:center` são o padrão do browser para <button>, que é o
   que o mock usa; aqui eles valem também para o <a> com cara de botão. */
.lp a.lp-botao,.lp a.lp-botao:hover{color:#ffffff;text-decoration:none}
.lp-botao--cta{height:52px;border-color:var(--lp-cta);background:var(--lp-cta);color:var(--lp-cta-tinta)}
.lp a.lp-botao--cta,.lp a.lp-botao--cta:hover{color:var(--lp-cta-tinta)}
.lp-botao--contorno{border-color:#b2b2b2;background:#ffffff;color:#111111}
.lp a.lp-botao--contorno,.lp a.lp-botao--contorno:hover{color:#111111}
/* "Entrar com e-mail" (login): o mock não declara letter-spacing, usa gap 8 e sobe 4px. */
.lp-botao--email{margin-top:4px;letter-spacing:normal;gap:8px}
.lp-botao[disabled]{cursor:progress;opacity:.7}

/* ---------------------------------------------------------------- login */
.lp-divisor{display:flex;align-items:center;gap:14px;font-size:0.75rem;font-weight:600;letter-spacing:0.14em;
  text-transform:uppercase;color:#686868}  /* #8c8c8c dava 3,36:1 (piso 4,5) — 0.20.0 */
.lp-divisor span{flex:1;height:1px;background:#ececec}
/* `[hidden]` vence o display das peças: sem isto o aviso de erro do login social nascia
   VISÍVEL e vazio, e o botão do provedor fora do ar deixava um buraco de 44px (0.18.0). */
.lp [hidden]{display:none !important}
.lp-social{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.lp-social__btn{min-height:44px;display:flex;justify-content:center}
.lp-nota{margin:0;padding-top:20px;border-top:1px solid #ececec;font-size:0.8125rem;line-height:1.5;color:#686868}

/* ---------------------------------------------------------------- avisos */
.lp-aviso{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;background:#fdeded;border:1px solid #fbcbcb;
  border-radius:6px;font-size:0.875rem;line-height:1.5;color:#111111}
.lp-aviso__ic{color:#c52027;display:flex;padding-top:2px}
.lp-aviso b{font-weight:600}
.lp-aviso--info{background:#f6f6f6;border-color:#e0e0e0}
.lp-aviso--info .lp-aviso__ic{color:#2f3283}
/* Sem desenho no mock (DESVIOS.md): as superfícies de status do Design Concilio. */
.lp-aviso--sucesso{background:#e7f4ee;border-color:#e0e0e0}
.lp-aviso--sucesso .lp-aviso__ic{color:#1f8a5b}
.lp-aviso--atencao{background:#f9efe9;border-color:#e0e0e0}
.lp-aviso--atencao .lp-aviso__ic{color:#a87c56}
.lp-aviso svg{width:18px;height:18px}
.lp-quadro{padding:16px;background:#f6f6f6;border:1px solid #e0e0e0;border-radius:6px;font-size:0.875rem;line-height:1.55;color:#464646}
.lp-quadro b{color:#111111;font-weight:600}

/* ---------------------------------------------------------------- senha nova */
.lp-medidor{display:flex;flex-direction:column;gap:8px}
.lp-medidor__barras{display:flex;gap:6px}
.lp-medidor__barras span{flex:1;height:4px;border-radius:2px;background:#ececec}
.lp-medidor[data-level="1"] .lp-medidor__barras span:nth-child(-n+1){background:#c52027}
.lp-medidor[data-level="2"] .lp-medidor__barras span:nth-child(-n+2){background:#a87c56}
.lp-medidor[data-level="3"] .lp-medidor__barras span:nth-child(-n+3),
.lp-medidor[data-level="4"] .lp-medidor__barras span{background:#1f8a5b}
.lp-medidor__linha{display:flex;justify-content:space-between;gap:12px;font-size:0.75rem}
.lp-medidor__rotulo{font-weight:600;color:#686868}
.lp-medidor:not([data-level="0"]) .lp-medidor__rotulo{color:#111111}
.lp-medidor__min{color:#686868}
.lp-regras{margin:4px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;font-size:0.8125rem}
.lp-regras li{display:flex;align-items:center;gap:8px;color:#686868}
.lp-regras li.ok{color:#111111}
.lp-regras__sim{color:#1f8a5b;display:none}
.lp-regras__nao{color:#b2b2b2;display:flex}
.lp-regras li.ok .lp-regras__sim{display:flex}
.lp-regras li.ok .lp-regras__nao{display:none}

/* ---------------------------------------------------------------- escolha do método */
.lp-metodos{margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:10px;min-width:0}
.lp-metodos legend{padding:0;margin-bottom:10px;font-size:0.8125rem;font-weight:600;color:#111111}
.lp-opcao{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid #e0e0e0;border-radius:6px;
  background:#ffffff;cursor:pointer}
.lp-opcao:has(input:checked){border:1.5px solid #111111}
.lp-opcao__ic{width:40px;height:40px;border-radius:6px;background:#f6f6f6;color:#111111;flex:none;
  display:inline-flex;align-items:center;justify-content:center}
.lp-opcao__txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.lp-opcao__txt b{font-size:0.875rem;font-weight:600;color:#111111}
.lp-opcao__txt span{font-size:0.8125rem;line-height:1.45;color:#686868}
.lp-opcao input{width:18px;height:18px;margin:0;flex:none;accent-color:var(--lp-cta)}
.lp-segmento{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.lp-segmento label{height:44px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid #e0e0e0;border-radius:6px;font-size:0.875rem;font-weight:600;color:#111111;cursor:pointer}
.lp-segmento label:has(input:checked){border:1.5px solid #111111}
.lp-segmento input{width:16px;height:16px;margin:0;accent-color:var(--lp-cta)}

/* ---------------------------------------------------------------- rodapé da coluna */
.lp-rodape{display:flex;flex-direction:column;gap:12px;padding-top:20px;border-top:1px solid #ececec}
.lp-rodape__links{display:flex;flex-wrap:wrap;gap:8px 20px}
.lp-rodape__links a{font-size:0.8125rem;font-weight:500;display:inline-flex;align-items:center;gap:6px}
/* Pergunta + link numa linha só (cadastro, provisório — D17): o texto no tom da nota, o link no dos links. */
.lp-pergunta{font-size:0.8125rem;color:#686868}
.lp-rodape__meta{display:flex;align-items:center;gap:8px;font-size:0.75rem;color:#686868}

/* ---------------------------------------------------------------- 2FA: QR e chave manual
   Sem desenho no mock (o passo do código vem DEPOIS da escolha): peças do próprio funil. */
.lp-qr{width:184px;height:184px;padding:8px;box-sizing:border-box;border:1px solid #e0e0e0;border-radius:6px;background:#ffffff;align-self:center}
.lp-segredo{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 12px;border:1px solid #e0e0e0;border-radius:6px;background:#f6f6f6}
.lp-segredo code{flex:1;min-width:0;overflow-wrap:anywhere;font-family:'SFMono-Regular', ui-monospace, Menlo, Consolas, monospace;font-size:0.8125rem;color:#111111}
.lp-segredo .lp-botao{width:auto;height:36px;padding:0 12px;font-size:0.8125rem}

/* ---------------------------------------------------------------- telas SEM desenho
   As telas que estendem a casca e não foram desenhadas (troca de senha, confirmação por
   senha, códigos de recuperação, sessão encerrada, erros de porta, privacidade…) mantêm
   a marcação de antes. Dentro da casca nova elas vestem as peças do funil, para não
   parecer outro produto ao lado do painel. Ver DESVIOS.md, "telas sem desenho". */
.lp-coluna--legado{display:block}
.lp-coluna--legado,.lp-coluna--legado *{box-sizing:border-box}
.lp-coluna--legado .auth__title{margin:0;font-family:var(--lp-fonte);font-size:2rem;font-weight:700;letter-spacing:-0.02em;
  line-height:1.15;color:#111111}
.lp-coluna--legado .auth__sub{margin:10px 0 0;font-size:0.9375rem;line-height:1.5;color:#686868}
.lp-coluna--legado .auth__form{margin-top:28px;display:flex;flex-direction:column;gap:18px}
.lp-coluna--legado .field{display:flex;flex-direction:column;gap:6px;margin:0}
.lp-coluna--legado .field__label{font-size:0.8125rem;font-weight:600;color:#111111;letter-spacing:normal;text-transform:none}
.lp-coluna--legado .control{height:44px;width:100%;box-sizing:border-box;padding:0 12px;border:1px solid #b2b2b2;border-radius:6px;
  font-family:inherit;font-size:0.875rem;color:#111111;background:#ffffff;box-shadow:none}
.lp-coluna--legado .control:focus{outline:none;border-color:var(--lp-acento);box-shadow:0 0 0 3px var(--lp-anel)}
.lp-coluna--legado .input-wrap .control{padding-right:44px}
.lp-coluna--legado .btn{height:48px;border-radius:6px;font-family:inherit;font-size:0.9375rem;font-weight:600;letter-spacing:0.005em;box-shadow:none}
.lp-coluna--legado .btn--primary,.lp-coluna--legado .btn--accent{background:var(--lp-cta);color:var(--lp-cta-tinta);border:1px solid var(--lp-cta)}
.lp-coluna--legado .btn--secondary{background:#ffffff;color:#111111;border:1px solid #b2b2b2}
/* O `.lp a:hover` (0,2,1) venceria a cor do botão-link no :hover — o mesmo defeito que o
   teste 6b das portas pegou no card antigo (texto cor de link sobre o fundo do botão). */
.lp-coluna--legado a.btn,.lp-coluna--legado a.btn:hover{text-decoration:none}
.lp-coluna--legado a.btn--primary,.lp-coluna--legado a.btn--primary:hover,
.lp-coluna--legado a.btn--accent,.lp-coluna--legado a.btn--accent:hover{color:var(--lp-cta-tinta)}
.lp-coluna--legado a.btn--secondary,.lp-coluna--legado a.btn--secondary:hover{color:#111111}
.lp-coluna--legado .auth__foot{margin-top:28px;padding-top:20px;border-top:1px solid #ececec;font-size:0.8125rem}
.lp-coluna--legado .auth__meta{margin-top:12px;font-size:0.75rem;color:#686868}
.lp-coluna--legado .banner{border-radius:6px}
.lp-coluna--legado > .lp-aviso{margin-bottom:20px}
.lp-campos > .tf-trocar{margin-top:0}

/* "Minha conta" da porta extra (minha_conta_porta.html): lista de apps e de segurança. */
.lp-coluna--legado .mc .auth__title,.lp-coluna--legado .mc .auth__sub{text-align:left}  /* como o login */
.lp-coluna--legado .mc-secao{margin-top:28px}
.lp-coluna--legado .mc-titulo{margin:0 0 10px;font-size:0.8125rem;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;color:#686868}
.lp-coluna--legado .mc-lista{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.lp-coluna--legado .mc-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #e0e0e0;border-radius:6px;
  background:#ffffff;color:#111111;text-decoration:none;font-size:0.9375rem;font-weight:600}
.lp-coluna--legado .mc-item:hover{border-color:var(--lp-acento);text-decoration:none}
.lp-coluna--legado .mc-item:focus-visible{outline:none;box-shadow:0 0 0 3px var(--lp-anel)}
.lp-coluna--legado .mc-item--simples{padding:12px 14px}
.lp-coluna--legado .mc-inicial{flex:none;width:36px;height:36px;border-radius:6px;display:grid;place-items:center;
  background:#f6f6f6;border:1px solid #e0e0e0;font-weight:700;color:#111111}
.lp-coluna--legado .mc-texto{display:flex;flex-direction:column;gap:2px;min-width:0}
.lp-coluna--legado .mc-desc{font-size:0.8125rem;font-weight:400;color:#686868}

/* Fonte grande no celular (D16): o botão pode quebrar linha em vez de estourar a tela. Na
   fonte padrão o texto cabe numa linha e a altura é a do mock (52/48px). */
@media (max-width:760px){
  .lp-botao{white-space:normal;height:auto;min-height:48px}
  .lp-botao--cta{min-height:52px}
}
