/* ============================================================
   DecCorp.AI — area logada
   Herda os tokens de styles.css (--black, --gold, --wine, --gray,
   --ease, --font). Aqui mora so o que a landing nao tem.
   ============================================================ */

.appBody{
  min-height:100vh;
  display:flex;
  flex-direction:column;
}

/* ---------------------------------------------------------------- entrar */

.authWrap{
  flex:1;
  display:grid;
  place-items:center;
  padding:clamp(24px,6vw,64px) var(--pad);
}

.authCard{
  width:100%;
  max-width:420px;
  padding:clamp(28px,5vw,44px);
  border:1px solid var(--gold-hair);
  border-radius:20px;
  background:var(--black-2);
  box-shadow:var(--shadow-rest);
}

.authCard__brand{
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-bottom:28px;
}

.authCard__title{
  margin:0 0 24px;
  font-size:clamp(24px,4vw,30px);
  font-weight:600;
  letter-spacing:-0.02em;
}

.authAviso{
  margin:0 0 20px;
  padding:12px 14px;
  border:1px solid rgba(128,0,32,.5);
  border-radius:12px;
  background:rgba(128,0,32,.14);
  font-size:14px;
  line-height:1.5;
}
/* Confirmacao usa o ouro da marca, e nao verde: o vermelho ja carrega "deu
   errado", e a diferenca de cor precisa ser evidente sem depender de ler. */
.authAviso--ok{
  border-color:var(--gold-soft);
  background:rgba(207,181,59,.10);
}

/* A pagina de exclusao tem texto explicativo antes do formulario, e o cartao
   estreito do login espremeria os paragrafos. */
.authCard--largo{ max-width:560px; }

.authTexto{
  margin:0 0 16px;
  color:var(--gray);
  font-size:14px;
  line-height:1.65;
}
.authTexto strong{ color:var(--white); font-weight:600; }

.authSep{
  display:flex;
  align-items:center;
  gap:14px;
  margin:22px 0;
  color:var(--gray);
  font-size:13px;
}
.authSep::before,
.authSep::after{
  content:"";
  flex:1;
  height:1px;
  background:var(--gold-hair);
}

.authForm{ display:grid; gap:16px; }

/* ------------------------------------------------------------------ abas */

.abas{
  display:flex;
  gap:4px;
  margin-bottom:24px;
  padding:4px;
  border:1px solid var(--gold-hair);
  border-radius:999px;
}

.aba{
  flex:1;
  padding:9px 14px;
  border:0;
  border-radius:999px;
  background:transparent;
  color:var(--gray);
  font-family:var(--font);
  font-size:14px;
  cursor:pointer;
  transition:background .3s var(--ease), color .3s var(--ease);
}
.aba:hover{ color:var(--white); }
.aba:focus-visible{ outline:1px solid var(--gold); outline-offset:2px; }
.aba--ativa{
  background:rgba(207,181,59,.12);
  color:var(--gold);
  font-weight:600;
}

.campo__dica{ font-size:12px; color:var(--gray); }

/* --------------------------------------------------- confirmacao de e-mail */

.confirme{
  padding:20px;
  border:1px solid var(--gold-soft);
  border-radius:14px;
  background:rgba(207,181,59,.07);
}
.confirme__titulo{
  margin:0 0 10px;
  font-size:16px; font-weight:600; color:var(--gold);
}
.confirme__texto{
  margin:0 0 10px;
  font-size:14px; line-height:1.6; color:var(--white);
}
/* Quebra em qualquer ponto: e-mail longo estoura o cartao no celular. */
.confirme__texto strong{ overflow-wrap:anywhere; }
.confirme__texto--fraco{ color:var(--gray); font-size:13px; }

.authRodape{
  margin:22px 0 0;
  color:var(--gray);
  font-size:13px;
  line-height:1.5;
}
.authRodape a{ color:var(--gold); text-decoration:underline; text-underline-offset:2px; }

/* ---------------------------------------------------------------- campos */

.campo{ display:grid; gap:7px; }

.campo__rotulo{
  font-size:13px;
  color:var(--gray);
  letter-spacing:.01em;
}

.campo__entrada{
  width:100%;
  padding:13px 15px;
  border:1px solid var(--gold-hair);
  border-radius:12px;
  background:rgba(255,255,255,.03);
  color:var(--white);
  font-family:var(--font);
  font-size:15px;
  transition:border-color .3s var(--ease), background .3s var(--ease);
}
.campo__entrada:hover{ border-color:var(--gold-soft); }
.campo__entrada:focus{
  outline:none;
  border-color:var(--gold);
  background:rgba(255,255,255,.05);
}
/* Foco visivel pelo teclado tambem quando o navegador nao pinta o anel. */
.campo__entrada:focus-visible{ outline:1px solid var(--gold); outline-offset:2px; }

/* ---------------------------------------------------------------- botoes */

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:13px 20px;
  border:1px solid transparent;
  border-radius:999px;
  font-family:var(--font);
  font-size:15px;
  font-weight:500;
  cursor:pointer;
  transition:transform .3s var(--ease), background .3s var(--ease),
             border-color .3s var(--ease), opacity .2s var(--ease-soft);
}
.btn:active{ transform:translateY(1px); }
.btn:focus-visible{ outline:1px solid var(--gold); outline-offset:3px; }

/* `disabled` some do fluxo visual sem sumir do fluxo de leitura: o botao
   continua anunciado, so nao aceita clique repetido enquanto a resposta nao
   volta. */
.btn[disabled]{ opacity:.55; cursor:progress; }

.btn--ouro{
  background:var(--gold);
  border-color:var(--gold);
  color:var(--black);
  font-weight:600;
}
.btn--ouro:hover:not([disabled]){ background:#dcc352; border-color:#dcc352; }

.btn--google{
  width:100%;
  background:var(--white);
  border-color:var(--white);
  color:#1f1f1f;
  font-weight:500;
}
.btn--google:hover{ background:#f1f1f1; }

.btn--vazio{
  background:transparent;
  border-color:var(--gold-soft);
  color:var(--white);
  padding:9px 18px;
  font-size:14px;
}
.btn--vazio:hover{ border-color:var(--gold); }

.btn__icone{ width:18px; height:18px; flex:none; }

/* ---------------------------------------------------------------- painel */

.appHeader{
  border-bottom:1px solid var(--gold-hair);
  background:var(--black-2);
}
.appHeader__inner{
  width:100%;
  max-width:var(--shell);
  margin:0 auto;
  padding:16px var(--pad);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}

.appMain{
  flex:1;
  width:100%;
  max-width:var(--shell);
  margin:0 auto;
  padding:clamp(28px,5vw,56px) var(--pad);
}

.appEstado{
  display:grid;
  justify-items:center;
  gap:16px;
  padding:64px 0;
  color:var(--gray);
  text-align:center;
}
.appEstado__msg{ margin:0; max-width:44ch; line-height:1.6; }

.girando{
  width:26px; height:26px;
  border:2px solid var(--gold-hair);
  border-top-color:var(--gold);
  border-radius:50%;
  animation:girar .9s linear infinite;
}
@keyframes girar{ to{ transform:rotate(360deg); } }

/* Quem pediu menos movimento no sistema nao deve receber um disco girando
   sem parar no centro da tela. */
@media (prefers-reduced-motion: reduce){
  .girando{ animation-duration:2.4s; }
  *{ scroll-behavior:auto !important; }
}

.painel__topo{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:14px;
  margin-bottom:28px;
}

.painel__titulo{
  margin:0;
  font-size:clamp(22px,4vw,28px);
  font-weight:600;
  letter-spacing:-0.02em;
}

.selo{
  padding:5px 13px;
  border:1px solid var(--gold-soft);
  border-radius:999px;
  background:rgba(207,181,59,.08);
  color:var(--gold);
  font-size:13px;
  font-weight:500;
}

/* ------------------------------------------------ placar da administracao */

/* Os quatro numeros que respondem "o negocio esta de pe?".
 *
 * Separados dos medidores por tamanho, e nao por posicao: onze numeros do
 * mesmo tamanho nao tem hierarquia nenhuma, e quem abre le o primeiro e para.
 * Aqui o dinheiro e grande; uso e base descem para a faixa menor. */
.placar{
  display:grid;
  gap:16px;
  grid-template-columns:repeat(auto-fit, minmax(210px, 1fr));
  margin:0 0 16px;
}

.cartaoNum{
  padding:22px;
  border:1px solid var(--gold-hair);
  border-radius:18px;
  background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.01));
}

/* O primeiro cartao — a receita recorrente — puxa a vista. E o unico numero
   que responde sozinho se o mes fecha. */
.cartaoNum--ouro{
  border-color:var(--gold-soft);
  background:linear-gradient(180deg, rgba(207,181,59,.10), rgba(207,181,59,.02));
}

.cartaoNum__rotulo{
  margin:0 0 10px;
  color:var(--gray);
  font-size:12.5px;
  letter-spacing:.04em;
  text-transform:uppercase;
}

.cartaoNum__valor{
  font-size:clamp(26px,3.4vw,34px);
  font-weight:600;
  letter-spacing:-0.025em;
  /* Tabular para os numeros nao dancarem de largura ao atualizar. */
  font-variant-numeric:tabular-nums;
  line-height:1.1;
}
.cartaoNum--ouro .cartaoNum__valor{ color:var(--gold); }

.cartaoNum__contexto{
  margin:8px 0 0;
  color:var(--gray);
  font-size:12.5px;
  line-height:1.5;
}

/* Aviso de dado sujo. Nao e erro — e explicacao de por que dois numeros da
   mesma tela nao batem. Discreto por isso: informa sem alarmar. */
.painel__aviso{
  margin:0 0 8px;
  padding:14px 18px;
  border:1px solid var(--gold-hair);
  border-left:2px solid var(--gold-soft);
  border-radius:12px;
  background:rgba(207,181,59,.04);
  color:var(--gray);
  font-size:13px;
  line-height:1.55;
}

.painel__secao{
  display:flex;
  align-items:baseline;
  flex-wrap:wrap;
  gap:6px 16px;
  margin:40px 0 18px;
}
.painel__secao .painel__nota{ margin:0; }

.medidores{
  display:grid;
  gap:16px;
  grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));
  margin:0 0 8px;
}

.medidor{
  padding:20px;
  border:1px solid var(--gold-hair);
  border-radius:16px;
  background:var(--black-2);
}

.medidor__rotulo{
  margin:0 0 10px;
  color:var(--gray);
  font-size:13px;
}

.medidor__numero{
  font-size:26px;
  font-weight:600;
  letter-spacing:-0.02em;
}
.medidor__de{
  color:var(--gray);
  font-size:15px;
  font-weight:400;
}

.barra{
  margin-top:12px;
  height:6px;
  border-radius:999px;
  background:rgba(255,255,255,.07);
  overflow:hidden;
}
.barra__cheio{
  height:100%;
  border-radius:999px;
  background:var(--gold);
  transition:width .6s var(--ease);
}
/* Perto do teto muda de cor: o numero ja dizia, mas cor avisa antes da leitura. */
.barra__cheio[data-cheio="true"]{ background:var(--wine); }

.painel__nota{
  margin:26px 0 0;
  color:var(--gray);
  font-size:13px;
}

/* ---------------------------------------------------------------- planos */

.planos{
  display:grid;
  gap:16px;
  grid-template-columns:repeat(auto-fit, minmax(230px, 1fr));
  margin:clamp(28px,4vw,42px) 0 34px;
  padding:0;
  list-style:none;
}

.plano{
  display:flex;
  flex-direction:column;
  padding:24px;
  border:1px solid var(--gold-hair);
  border-radius:18px;
  background:var(--black-2);
}
/* O destaque e borda, e nao escala: cartao maior que os vizinhos desalinha a
   leitura de preco, que e justamente a comparacao que a pagina existe para
   permitir. */
.plano--destaque{ border-color:var(--gold-soft); background:rgba(207,181,59,.05); }

.plano__nome{
  margin:0 0 10px;
  font-size:15px; font-weight:600; letter-spacing:.06em;
  text-transform:uppercase; color:var(--gold);
}
.plano__preco{
  margin:0 0 18px;
  font-size:30px; font-weight:600; letter-spacing:-0.03em;
}
.plano__mes{ font-size:14px; font-weight:400; color:var(--gray); }

.plano__itens{
  flex:1;
  margin:0 0 20px;
  padding:0;
  list-style:none;
  display:grid;
  gap:8px;
  color:var(--gray);
  font-size:14px;
}
.plano__itens li{ padding-left:16px; position:relative; }
.plano__itens li::before{
  content:"·"; position:absolute; left:4px; color:var(--gold);
}

.plano__botao{ width:100%; }
.plano__nota{ margin:0; color:var(--gray); font-size:13px; font-style:italic; }

/* ---------------------------------------------------------------- busca */

.busca{
  padding:22px;
  border:1px solid var(--gold-hair);
  border-radius:18px;
  background:var(--black-2);
  margin-bottom:26px;
}

.busca__linha{
  display:flex;
  flex-wrap:wrap;
  gap:16px;
  align-items:flex-end;
}
.campo--cresce{ flex:1 1 260px; }
.campo--uf{ flex:0 0 190px; }

.busca__achado{
  margin:14px 0 0;
  min-height:1.2em;          /* reserva a linha: sem isso o botao pula ao surgir texto */
  color:var(--gray);
  font-size:13px;
}

.busca__erro{
  margin:0 0 22px;
  padding:12px 14px;
  border:1px solid rgba(128,0,32,.5);
  border-radius:12px;
  background:rgba(128,0,32,.14);
  font-size:14px;
}

.busca .btn{ margin-top:14px; }

/* ---------------------------------------------------------------- leads */

.leads{
  display:grid;
  gap:14px;
  grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
  margin:0 0 40px;
  padding:0;
  list-style:none;
}

.lead{
  padding:18px;
  border:1px solid var(--gold-hair);
  border-radius:16px;
  background:var(--black-2);
}

.lead__nome{
  margin:0 0 8px;
  font-size:16px; font-weight:600; letter-spacing:-0.015em;
  /* Razao social da Receita e longa e vem sem espaco em CNPJ colado; sem isto
     ela estoura o cartao. */
  overflow-wrap:anywhere;
}
.lead__onde{ margin:0 0 4px; color:var(--gray); font-size:13px; }
.lead__segmento{ margin:0 0 12px; color:var(--gray); font-size:12px; }
.lead__contato{ margin:0; font-size:14px; }

.lead__wa{
  display:inline-flex; align-items:center; gap:6px;
  padding:7px 13px;
  border:1px solid var(--gold-soft);
  border-radius:999px;
  color:var(--gold);
  font-size:13px;
  transition:border-color .3s var(--ease), background .3s var(--ease);
}
.lead__wa:hover{ border-color:var(--gold); background:rgba(207,181,59,.08); }

/* O consumo desce para depois dos resultados: importa, mas nao e o motivo de
   a pessoa ter aberto a pagina. */
.painel__uso{
  padding-top:30px;
  border-top:1px solid var(--gold-hair);
}
.painel__subtitulo{
  margin:0 0 18px;
  font-size:15px; font-weight:600; color:var(--gray);
  letter-spacing:.02em; text-transform:uppercase;
}

/* Link dentro de texto corrido na area logada. */
.elo{
  color:var(--gold);
  text-decoration:underline;
  text-underline-offset:2px;
}

/* ------------------------------------------------------------- tabela */

/* A tabela rola dentro do proprio quadro, e nao arrasta a pagina: seis colunas
   nao cabem num celular, e sem isto o body inteiro ganha rolagem horizontal. */
.tabelaEnvolve{
  overflow-x:auto;
  border:1px solid var(--gold-hair);
  border-radius:14px;
  background:var(--black-2);
}

.tabela{
  width:100%;
  border-collapse:collapse;
  font-size:14px;
  white-space:nowrap;
}
.tabela th,
.tabela td{
  padding:12px 16px;
  text-align:left;
  border-bottom:1px solid var(--gold-hair);
}
.tabela th{
  color:var(--gray);
  font-weight:500;
  font-size:12px;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.tabela tbody tr:last-child td{ border-bottom:0; }
.tabela tbody tr:hover{ background:rgba(255,255,255,.02); }

/* Numero em coluna alinha a direita e com digito de largura fixa: e assim que
   se compara dois valores de relance, que e a razao de a tabela existir. */
.tabela .num{
  text-align:right;
  font-variant-numeric:tabular-nums;
}
.tabela .num--ouro{ color:var(--gold); }

/* Nome e e-mail empilhados na mesma celula. O nome e como se fala do cliente;
   o e-mail e como se procura por ele. Os dois, em pesos diferentes. */
.cliente__nome{
  display:flex;
  align-items:center;
  gap:0;
  font-weight:500;
}
.cliente__email{
  margin-top:2px;
  color:var(--gray);
  font-size:12.5px;
}

.campo__entrada--curto{ padding:7px 10px; font-size:13px; width:auto; }

.tag{
  margin-left:8px;
  padding:2px 8px;
  border-radius:999px;
  font-size:11px;
  letter-spacing:.04em;
  text-transform:uppercase;
  /* Etiqueta nao herda o peso do nome ao lado: ela e anotacao, nao titulo. */
  font-weight:400;
}
.tag--alerta{
  border:1px solid rgba(128,0,32,.6);
  background:rgba(128,0,32,.18);
  color:#ff9aa8;
}
/* Para "manual" e "interno": informa a origem do plano sem soar problema. */
.tag--neutra{
  border:1px solid var(--gold-hair);
  background:rgba(255,255,255,.04);
  color:var(--gray);
}

.appNav{ display:flex; align-items:center; gap:10px; }

/* ============================================================
   ÁREA LOGADA — versão com o vocabulário da landing.
   O que vem abaixo substitui o visual utilitário anterior: a
   crítica foi que "não se enquadra no padrão do restante do
   site", e ela estava certa — faltavam o grão, os orbes, o
   hairline de ouro e a elevação no hover.
   ============================================================ */

.painelSecao{ padding:clamp(120px,14vw,170px) 0 clamp(70px,10vw,120px); }

.sectionHead--menor{ margin-bottom:clamp(22px,3vw,32px); }

/* Botão que mora na barra e precisa parecer link, não botão de formulário. */
.nav__botao{
  border:0; background:transparent; cursor:pointer;
  font-family:var(--font); letter-spacing:inherit;
}

/* ---------------------------------------------------------- caixa de busca */

.caixaBusca{
  padding:clamp(20px,2.6vw,30px);
  border:1px solid var(--gold-hair);
  border-radius:22px;
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.012));
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  box-shadow:var(--shadow-rest);
  transition:border-color .8s var(--ease);
}
.caixaBusca:focus-within{ border-color:var(--gold-soft); }

.caixaBusca__linha{
  display:flex; flex-wrap:wrap; align-items:flex-end;
  gap:14px;
}

.campoBusca{ display:block; }
.campoBusca--cresce{ flex:1 1 280px; }
.campoBusca--uf{ flex:0 0 190px; }

.campoBusca__rotulo{
  display:block; margin-bottom:9px;
  font-size:12px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--gray);
}

.campoBusca__caixa{
  display:flex; align-items:center; gap:11px;
  padding:0 16px;
  border:1px solid var(--gold-hair);
  border-radius:999px;
  background:rgba(255,255,255,.03);
  transition:border-color .6s var(--ease), box-shadow .6s var(--ease);
}
.campoBusca__caixa:hover{ border-color:var(--gold-soft); }
.campoBusca__caixa:focus-within{
  border-color:var(--gold);
  box-shadow:0 0 36px -16px rgba(207,181,59,.55);
}

.campoBusca__lupa{ width:18px; height:18px; flex:none; color:var(--gold); }

.campoBusca__entrada{
  flex:1; width:100%;
  padding:14px 0;
  border:0; outline:0; background:transparent;
  color:var(--white);
  font-family:var(--font);
  font-size:16px;          /* 16px evita o zoom automático do iOS ao focar */
}
.campoBusca__entrada::placeholder{ color:#6b6b6b; }
.campoBusca__entrada--select{
  padding-right:6px;
  cursor:pointer;
  /* o <select> nativo herda o fundo do sistema no Windows sem isto */
  appearance:none; -webkit-appearance:none;
}
.campoBusca__entrada--select option{ background:var(--black-2); color:var(--white); }

.caixaBusca__acao{ flex:0 0 auto; padding-block:15px; }

.caixaBusca__achado{
  margin:16px 0 0;
  min-height:1.2em;        /* reserva a linha: sem isso a caixa pula ao surgir texto */
  font-size:13px;
  color:var(--gray);
}

/* ---------------------------------------------------------------- leads */

.leads{
  display:grid;
  gap:clamp(14px,1.8vw,20px);
  grid-template-columns:repeat(auto-fill, minmax(290px, 1fr));
  margin:clamp(26px,3.4vw,40px) 0 clamp(50px,7vw,86px);
  padding:0;
  list-style:none;
}

.lead{
  display:flex; flex-direction:column;
  padding:22px;
  border:1px solid var(--gold-hair);
  border-radius:20px;
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.012));
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  box-shadow:var(--shadow-rest);
  transition:border-color .8s var(--ease), box-shadow .8s var(--ease),
             transform .9s var(--ease);
}
.lead:hover{
  border-color:var(--gold-soft);
  box-shadow:var(--shadow-lift);
  transform:translate3d(0,-6px,0);
}

/* Entram escalonados, como as seções da landing. O atraso vem de --i, que o
   JavaScript define na ordem em que os leads chegaram. */
.js .lead{
  opacity:0; translate:0 18px;
  animation:leadEntra .8s var(--ease) forwards;
  animation-delay:calc(var(--i, 0) * 55ms);
}
@keyframes leadEntra{ to{ opacity:1; translate:0 0; } }
@media (prefers-reduced-motion: reduce){
  .js .lead{ animation-duration:.01ms; animation-delay:0ms; }
}

.lead__nome{
  margin:0 0 10px;
  font-size:16px; font-weight:600; letter-spacing:-0.018em;
  line-height:1.35;
  /* Razão social da Receita é longa e às vezes vem sem espaço; sem isto ela
     estoura o cartão. */
  overflow-wrap:anywhere;
}

.lead__onde{
  margin:0 0 6px;
  font-size:13px; color:var(--gray);
}
.lead__segmento{
  margin:0 0 16px;
  font-size:12px; color:#6b6b6b;
  line-height:1.45;
}

.lead__contato{ margin:auto 0 0; font-size:14px; color:var(--gray); }

.lead__wa{
  display:inline-flex; align-items:center; gap:8px;
  padding:9px 16px;
  border:1px solid var(--gold-soft);
  border-radius:999px;
  color:var(--gold);
  font-size:13px; font-weight:500;
  transition:background .4s var(--ease), border-color .4s var(--ease),
             box-shadow .4s var(--ease);
}
.lead__wa::before{ content:"↗"; font-size:12px; }
.lead__wa:hover{
  background:rgba(207,181,59,.1);
  border-color:var(--gold);
  box-shadow:0 0 30px -14px rgba(207,181,59,.6);
}

/* ---------------------------------------------------------------- consumo */

.consumo{
  padding-top:clamp(34px,4.6vw,54px);
  border-top:1px solid var(--gold-hair);
}
.consumo__titulo{
  margin:0;
  font-size:clamp(15px,1.5vw,17px);
  font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:var(--gold);
}
.consumo__nota{ margin:18px 0 0; font-size:13px; color:var(--gray); }

.medidores{
  display:grid;
  gap:14px;
  grid-template-columns:repeat(auto-fit, minmax(210px, 1fr));
  margin:0; padding:0; list-style:none;
}

.medidor{
  padding:20px;
  border:1px solid var(--gold-hair);
  border-radius:18px;
  background:rgba(255,255,255,.022);
  transition:border-color .6s var(--ease);
}
.medidor:hover{ border-color:var(--gold-soft); }

.medidor__rotulo{
  margin:0 0 10px;
  font-size:12px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--gray);
}
.medidor__numero{
  font-size:27px; font-weight:600; letter-spacing:-0.03em;
  font-variant-numeric:tabular-nums;
}
.medidor__de{ font-size:14px; font-weight:400; color:var(--gray); }

/* ------------------------------------------------------- criação de senha */

.campoSenha{ position:relative; display:block; }
.campoSenha .campo__entrada{ padding-right:48px; }

.olho{
  position:absolute; top:50%; right:6px; transform:translateY(-50%);
  display:grid; place-items:center;
  width:36px; height:36px;
  border:0; border-radius:50%;
  background:transparent;
  color:var(--gray);
  cursor:pointer;
  transition:color .3s var(--ease), background .3s var(--ease);
}
.olho svg{ width:19px; height:19px; }
.olho:hover{ color:var(--white); background:rgba(255,255,255,.05); }
.olho:focus-visible{ outline:1px solid var(--gold); outline-offset:2px; }
.olho--aberto{ color:var(--gold); }

/* Medidor de força. Quatro faixas, e a cor só chega ao ouro no topo: com verde
   em "razoável" a pessoa para de melhorar cedo demais. */
.forca{ display:flex; align-items:center; gap:10px; }

.forca__trilho{
  flex:1;
  height:3px;
  border-radius:999px;
  background:rgba(255,255,255,.08);
  overflow:hidden;
}
.forca__barra{
  display:block; height:100%; width:0;
  border-radius:999px;
  background:var(--wine);
  transition:width .4s var(--ease), background .4s var(--ease);
}
.forca__barra[data-nivel="2"]{ background:#8a6b2a; }
.forca__barra[data-nivel="3"]{ background:#b39a35; }
.forca__barra[data-nivel="4"]{ background:var(--gold); }

.forca__texto{
  min-width:7ch;              /* reserva o espaço: sem isso a barra encolhe a
                                 cada troca de palavra */
  font-size:12px;
  color:var(--gray);
}

.campo__dica--erro{ color:#ff9aa8; }

/* ============================================================
   Pagamento — escolha da forma, e o Pix desenhado aqui
   ============================================================ */

.shell--estreito{ max-width:820px; }

.pagamento__resumo{
  margin:0 0 clamp(24px,3vw,34px);
  font-size:clamp(16px,1.7vw,19px);
  color:var(--gray);
}
.pagamento__resumo b{ color:var(--white); }

.formas{ display:grid; gap:14px; }

.forma{
  display:flex; align-items:flex-start; gap:18px;
  width:100%;
  padding:24px;
  border:1px solid var(--gold-hair);
  border-radius:20px;
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.012));
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  box-shadow:var(--shadow-rest);
  color:var(--white);
  font-family:var(--font);
  text-align:left;
  cursor:pointer;
  transition:border-color .7s var(--ease), box-shadow .7s var(--ease),
             transform .8s var(--ease);
}
.forma:hover:not([disabled]){
  border-color:var(--gold-soft);
  box-shadow:var(--shadow-lift);
  transform:translate3d(0,-5px,0);
}
.forma:focus-visible{ outline:1px solid var(--gold); outline-offset:3px; }
.forma[disabled]{ opacity:.55; cursor:progress; }

.forma__icone{
  display:grid; place-items:center;
  width:46px; height:46px; flex:none;
  border:1px solid var(--gold-soft);
  border-radius:13px;
  background:rgba(207,181,59,.07);
  color:var(--gold);
}
.forma__icone svg{ width:22px; height:22px; }

.forma__texto{ flex:1; display:grid; gap:6px; }
.forma__nome{ font-size:16px; font-weight:600; }
.forma__desc{ font-size:13.5px; line-height:1.55; color:var(--gray); }

.forma__seta{ color:var(--gold); font-size:18px; transition:transform .5s var(--ease); }
.forma:hover .forma__seta{ transform:translateX(5px); }

/* ------------------------------------------------------------------- pix */

.pix{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:clamp(22px,3vw,36px);
  align-items:start;
  padding:clamp(22px,3vw,32px);
  border:1px solid var(--gold-soft);
  border-radius:22px;
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.012));
}

/* Fundo branco atrás do QR: leitor de código precisa de contraste, e sobre o
   preto do site a leitura falha em muitos aparelhos. */
.pix__qr{
  padding:14px;
  border-radius:16px;
  background:#fff;
  line-height:0;
}
.pix__qr img{ display:block; width:240px; height:240px; }

.pix__lado{ display:grid; gap:12px; align-content:start; }

.pix__passo{ margin:0; font-size:14px; line-height:1.55; color:var(--gray); }
.pix__passo b{ color:var(--gold); margin-right:4px; }

.pix__copia{ display:block; margin-top:8px; }
.pix__caixa{
  display:flex; gap:8px; align-items:center;
  padding:0 0 0 16px;
  border:1px solid var(--gold-hair);
  border-radius:999px;
  background:rgba(255,255,255,.03);
}
.pix__caixa .campoBusca__entrada{
  /* O código do Pix é longo e não pode quebrar o layout ao ser exibido. */
  font-size:13px;
  text-overflow:ellipsis;
}
.pix__botao{ flex:none; padding:11px 20px; font-size:14px; }

.pix__estado{
  display:flex; align-items:center; gap:10px;
  margin:6px 0 0;
  font-size:14px; color:var(--gold);
}
.girando--pequeno{ width:16px; height:16px; border-width:2px; }

.pix__validade{ margin:0; font-size:12.5px; color:#6b6b6b; }

@media (max-width: 640px){
  .pix{ grid-template-columns:1fr; justify-items:center; }
  .pix__lado{ width:100%; }
}

/* --------------------------------------------------------------- sucesso */

.pixOk{
  padding:clamp(26px,4vw,40px);
  border:1px solid var(--gold-soft);
  border-radius:22px;
  background:rgba(207,181,59,.07);
  display:grid; gap:14px; justify-items:start;
}
.pixOk__titulo{
  margin:0;
  font-size:clamp(19px,2.2vw,24px); font-weight:600; color:var(--gold);
  letter-spacing:-0.02em;
}
.pixOk__texto{ margin:0; font-size:15px; color:var(--white); }
