/* ============================================================================
   Painel do Smeat

   A composição é a da aba Campanhas do /adm da NRS — mesmos componentes, mesma
   hierarquia: leitura em prosa no topo, faixa de números-chave, análise, lista
   com barra proporcional, funil com a FONTE de cada passo, gráfico do período.
   O que muda é a pele: paleta e tipografia são as de smeat.com.br, porque quem
   abre isto é o dono do Smeat, não o estúdio.

   Três níveis de texto seguram a densidade:
     --ink    o que se lê        --meio  o que contextualiza
     --fraco  o que se consulta (a conta, o rótulo micro, a fonte do número)
   ========================================================================= */

@font-face{font-family:'Manrope';src:url('fontes/Manrope-Light.woff2') format('woff2');font-weight:300;font-display:swap}
@font-face{font-family:'Manrope';src:url('fontes/Manrope-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Manrope';src:url('fontes/Manrope-Medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Manrope';src:url('fontes/Manrope-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'PP Woodland';src:url('fontes/PPWoodland-Ultralight.woff2') format('woff2');font-weight:200;font-display:swap}
@font-face{font-family:'PP Woodland';src:url('fontes/PPWoodland-Light.woff2') format('woff2');font-weight:300;font-display:swap}
@font-face{font-family:'PP Woodland';src:url('fontes/PPWoodland-Regular.woff2') format('woff2');font-weight:400;font-display:swap}

:root{
  --fundo:#161512; --fundo2:#1C1A16;
  --ink:#F2ECE1; --meio:#A9A196; --fraco:#6E675C;
  --amb:#FFA300; --amb2:#FFBB4A; --amb-fraco:rgba(255,163,0,.12);
  --linha:rgba(242,236,225,.11);
  --verde:#5FBF87; --alerta:#E0A33E; --grave:#E06A4E;
  --disp:'PP Woodland',Iowan Old Style,Baskerville,Times New Roman,serif;
  --sans:'Manrope',-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;
  --mono:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{
  margin:0;font-family:var(--sans);font-weight:300;line-height:1.5;color:var(--ink);
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
  background:
    radial-gradient(1100px 620px at 10% -8%, rgba(255,163,0,.075), transparent 60%),
    radial-gradient(900px 700px at 106% 4%, rgba(255,187,74,.05), transparent 55%),
    radial-gradient(760px 520px at 50% 108%, rgba(154,91,0,.06), transparent 60%),
    var(--fundo);
  background-attachment:fixed;
}
[hidden]{display:none !important}

/* ---- entrada ---- */
#entrada{min-height:100svh;display:grid;place-items:center;padding:24px}
.entrada-carta{width:100%;max-width:370px;background:var(--fundo2);border:1px solid var(--linha);border-radius:22px;padding:34px 28px}
.entrada-carta img{height:38px;width:auto;margin-bottom:22px;display:block}
.entrada-carta h1{font-family:var(--disp);font-weight:300;font-size:1.5rem;margin:0 0 5px;line-height:1.2}
.entrada-carta p{margin:0 0 24px;font-size:.87rem;color:var(--meio)}
label{display:block;font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--fraco);margin-bottom:8px}
input[type=password]{width:100%;font-size:16px;font-family:var(--mono);padding:12px 14px;border:1px solid var(--linha);border-radius:11px;background:var(--fundo);color:var(--ink)}
input[type=password]:focus{outline:none;border-color:rgba(255,163,0,.55)}
.btn{width:100%;margin-top:18px;font-family:var(--disp);font-weight:400;font-size:.8rem;letter-spacing:.2em;text-transform:uppercase;padding:13px;border:0;border-radius:999px;background:var(--ink);color:var(--fundo);cursor:pointer;transition:.2s}
.btn:hover{background:var(--amb);color:#241800}
.btn:disabled{opacity:.55;cursor:default}
.erro{color:var(--grave);font-size:.85rem;margin-top:12px;min-height:1em}

/* ---- topo ---- */
.envelope{max-width:1180px;margin:0 auto;padding:22px 20px 80px}
header.topo{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.topo-marca{display:flex;align-items:center;gap:14px;min-width:0}
.topo-marca img{height:30px;width:auto}
.agora{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--meio)}
.pulso{width:7px;height:7px;border-radius:50%;background:var(--verde)}
@media (prefers-reduced-motion:no-preference){.pulso{animation:bate 2s ease-in-out infinite}
@keyframes bate{0%,100%{opacity:1}50%{opacity:.3}}}
.periodo{display:flex;gap:6px}
.periodo button{font-family:var(--mono);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;padding:7px 12px;border-radius:999px;border:1px solid var(--linha);background:transparent;color:var(--fraco);cursor:pointer;transition:.18s}
.periodo button:hover{color:var(--meio);border-color:rgba(242,236,225,.24)}
.periodo button[aria-pressed=true]{color:var(--amb2);border-color:rgba(255,163,0,.45);background:var(--amb-fraco)}

/* ---- grade de 12, como a campanhas-view ---- */
.vista{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:start}
.vista>.cheio{grid-column:1/-1;margin:0}
.vista>.metade{grid-column:span 6;margin:0}

/* ---- card ---- */
.card{
  border:1px solid rgba(242,236,225,.105);border-radius:22px;padding:20px;
  background:linear-gradient(145deg,rgba(255,255,255,.047),rgba(255,255,255,.014) 42%,rgba(255,163,0,.012)),rgba(24,21,18,.76);
  backdrop-filter:blur(16px) saturate(1.05);-webkit-backdrop-filter:blur(16px) saturate(1.05);
  box-shadow:0 1px 2px rgba(0,0,0,.3),0 18px 38px -22px rgba(0,0,0,.6);
  transition:transform .22s,box-shadow .22s;
}
.card:hover{transform:translateY(-3px);box-shadow:0 2px 5px rgba(0,0,0,.35),0 26px 48px -18px rgba(0,0,0,.65),inset 0 1px 0 rgba(242,236,225,.06)}
.card h2{font-family:var(--mono);font-weight:400;font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--amb2);margin:0 0 12px;display:flex;align-items:center;gap:9px}
.card h2 .h2-ic{width:27px;height:27px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;flex:none;background:rgba(242,236,225,.055);color:var(--amb2);border:1px solid rgba(242,236,225,.07)}
.card h2 .h2-ic svg{width:15px;height:15px}
.card h2 .h2-tt{min-width:0}
.card .dica{font-size:.8rem;color:var(--meio);margin:0 0 16px;line-height:1.6}

/* botão de ajuda e a bolha que ele abre */
.tip{margin-left:auto;flex:none;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:1px solid var(--linha);background:rgba(255,255,255,.04);color:var(--meio);font-size:11px;font-family:var(--sans);cursor:pointer;transition:.18s}
.tip:hover{border-color:var(--amb);color:var(--amb2);transform:scale(1.12)}
.tip-bolha{display:none;margin:0 0 14px;padding:12px 14px;background:rgba(15,13,11,.85);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--linha);border-radius:12px;font-size:.79rem;line-height:1.62;color:var(--meio)}
.tip-bolha.aberto{display:block}

/* ---- leitura em prosa: a frase do topo ---- */
.leitura{grid-column:1/-1;display:flex;gap:14px;align-items:flex-start;padding:18px 20px;border-radius:22px;
  background:linear-gradient(90deg,rgba(255,163,0,.075),rgba(24,21,18,.58) 38%);
  border:1px solid rgba(255,163,0,.19)}
.leitura .lt-ic{width:38px;height:38px;border-radius:999px;flex:none;display:flex;align-items:center;justify-content:center;background:rgba(255,163,0,.13);border:1px solid rgba(255,163,0,.19);color:var(--amb2)}
.leitura .lt-ic svg{width:19px;height:19px}
.leitura p{margin:0;font-size:.95rem;line-height:1.62}
.leitura b{font-weight:500;color:var(--amb2)}
.leitura small{display:block;margin-top:7px;font-family:var(--mono);font-size:.55rem;letter-spacing:.11em;color:var(--fraco);text-transform:uppercase}

/* ---- faixa de números-chave ---- */
.kpis{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.kpi{position:relative;overflow:hidden;min-height:124px;padding:17px;border:1px solid var(--linha);border-radius:18px;background:rgba(242,236,225,.025)}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:linear-gradient(180deg,var(--amb2),transparent)}
.kpi .rot{font-family:var(--mono);font-size:.55rem;letter-spacing:.14em;text-transform:uppercase;color:var(--fraco)}
.kpi .val{font-family:var(--disp);font-size:1.95rem;font-weight:300;line-height:1;margin-top:12px;color:var(--ink);font-variant-numeric:tabular-nums}
.kpi .sub{font-size:.71rem;color:var(--meio);margin-top:8px;line-height:1.45}

/* ---- lista com barra proporcional ---- */
.cab{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.cab h2{margin-bottom:3px!important}
.cab .dica{margin:0}
.lista{display:flex;flex-direction:column}
/* O nome ocupava 1,5fr contra 4 colunas de 0,5fr, e a diferença abria um vão
   morto no meio: o número ficava longe do nome a que pertence. Agora o nome
   pega o que sobra e as colunas de número têm largura própria, encostadas. */
.linha{display:grid;grid-template-columns:minmax(0,1fr) repeat(4,minmax(88px,112px));gap:11px 20px;align-items:start;padding:15px 0;border-top:1px solid var(--linha)}
.linha:first-child{border-top:0}
.linha .nome{min-width:0}
.linha .nome b{display:block;font-family:var(--disp);font-size:1rem;font-weight:400;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.linha .nome .obj{display:block;font-size:.75rem;color:var(--meio);margin-top:2px}
.linha .met{font-family:var(--mono);font-size:.66rem;color:var(--ink);text-align:right;white-space:nowrap;padding-top:3px}
.linha .met span{display:block;font-size:.5rem;letter-spacing:.1em;text-transform:uppercase;color:var(--fraco);margin-bottom:3px}
.linha.morna .met,.linha.morna .nome b{color:var(--meio)}
.barra{grid-column:1/-1;height:3px;border-radius:99px;background:rgba(242,236,225,.07);overflow:hidden;margin-top:2px}
.barra i{display:block;height:100%;background:linear-gradient(90deg,var(--amb),var(--amb2));border-radius:inherit}
.barra.fria i{background:linear-gradient(90deg,rgba(224,163,62,.5),rgba(224,163,62,.2))}
.tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.52rem;letter-spacing:.1em;text-transform:uppercase;color:var(--meio)}
.tag::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--fraco)}
.tag.viva::before{background:var(--verde);box-shadow:0 0 0 4px rgba(95,191,135,.09)}
.tag.morna::before{background:var(--alerta)}

/* ---- funil, com a fonte de cada passo ---- */
.funil{display:flex;flex-direction:column;gap:13px;margin-top:4px}
.passo{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}
.passo .rot{font-size:.78rem;color:var(--meio)}
.passo .rot small{display:block;font-family:var(--mono);font-size:.52rem;letter-spacing:.08em;text-transform:uppercase;color:var(--fraco);margin-top:2px}
.passo b{font-family:var(--disp);font-size:1.22rem;font-weight:300;color:var(--ink)}
.passo .trilho{grid-column:1/-1;height:4px;border-radius:99px;background:rgba(242,236,225,.07);overflow:hidden}
.passo .trilho i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--amb),rgba(255,187,74,.42))}
.passo.cego .trilho i{background:repeating-linear-gradient(90deg,rgba(224,106,78,.5) 0 5px,transparent 5px 10px)}
.nota{font-size:.73rem;color:var(--fraco);line-height:1.6;margin:14px 0 0}

/* ---- gráfico ---- */
.grafico svg{width:100%;height:auto;display:block}
@media (prefers-reduced-motion:no-preference){
  .traco{stroke-dasharray:3000;stroke-dashoffset:3000;animation:traca 1.2s .25s ease-out forwards}
  @keyframes traca{to{stroke-dashoffset:0}}
}

/* ---- dedução ---- */
.deducoes{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px}
.ded{border:1px solid var(--linha);border-left-width:2px;border-radius:12px;padding:13px 15px;background:rgba(255,255,255,.014)}
.ded.ok{border-left-color:rgba(95,191,135,.5)}
.ded.atencao{border-left-color:rgba(224,163,62,.6)}
.ded.critico{border-left-color:rgba(224,106,78,.65)}
.ded-rot{display:block;font-family:var(--mono);font-size:.53rem;letter-spacing:.13em;text-transform:uppercase;color:var(--fraco);margin-bottom:6px}
.ded-val{font-family:var(--disp);font-weight:300;font-size:1.24rem;line-height:1.25;margin:0 0 3px}
.ded-conta{font-family:var(--mono);font-size:.55rem;line-height:1.6;color:var(--fraco);margin:0 0 9px}
.ded-txt{margin:0;font-size:.81rem;line-height:1.62;color:var(--meio)}
.ded-txt b{color:var(--ink);font-weight:500}
.selo{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.49rem;letter-spacing:.1em;text-transform:uppercase;padding:2px 8px;border-radius:999px;border:1px solid var(--linha);color:var(--fraco);margin-top:9px}
.selo[data-n="sem-base"]{border-color:rgba(224,106,78,.45);color:#e0a493}
.selo[data-n="baixa"]{border-color:rgba(224,163,62,.4);color:#d8b478}
.selo[data-n="media"]{border-color:rgba(242,236,225,.2);color:var(--meio)}

/* o que foi conferido e não pede ação: fica fechado, mas fica */
.recolhido>summary{list-style:none;cursor:pointer;font-family:var(--mono);font-size:.56rem;letter-spacing:.13em;text-transform:uppercase;color:var(--fraco);padding:11px 14px;border:1px solid var(--linha);border-radius:11px;transition:.18s}
.recolhido>summary::-webkit-details-marker{display:none}
.recolhido>summary::before{content:"+ ";color:var(--amb)}
.recolhido[open]>summary::before{content:"– "}
.recolhido>summary:hover{color:var(--meio);border-color:rgba(242,236,225,.22)}
.recolhido[open]>summary{margin-bottom:10px}

.vazio{color:var(--meio);font-size:.84rem;line-height:1.62}
.vazio strong{display:block;font-family:var(--disp);font-weight:300;font-size:1.08rem;color:var(--ink);margin-bottom:7px}
footer.rodape{margin-top:38px;padding-top:20px;border-top:1px solid var(--linha);color:var(--fraco);font-size:.75rem}
footer.rodape a{color:var(--meio)}
.pend{margin:10px 0 0;padding:0;list-style:none}
.pend li{margin-bottom:9px;padding-left:14px;border-left:1px solid var(--linha);font-size:.78rem;line-height:1.6;color:var(--meio)}
.pend b{color:var(--ink);font-weight:500}



/* ---- leitura estruturada -------------------------------------------------
   Manchete curta e pontos numerados no lugar de um parágrafo corrido. Texto
   denso esconde a informação dentro de si: quem bate o olho lê a manchete,
   quem tem trinta segundos lê os pontos, e ninguém precisa ler tudo para
   entender o que mudou. */
.leitura .lt-corpo{flex:1;min-width:0}
.lt-manchete{margin:0 0 12px;font-family:var(--disp);font-weight:300;font-size:1.24rem;line-height:1.32;color:var(--ink)}
.lt-manchete b{color:var(--amb2);font-weight:400}
.lt-pontos{margin:0;padding:0;list-style:none;counter-reset:pt;display:grid;gap:9px}
.lt-pontos li{counter-increment:pt;position:relative;padding-left:26px;font-size:.87rem;line-height:1.58;color:var(--meio)}
.lt-pontos li::before{
  content:counter(pt);position:absolute;left:0;top:1px;width:17px;height:17px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:.55rem;color:var(--amb2);
  border:1px solid rgba(255,163,0,.3);background:rgba(255,163,0,.07)}
.lt-pontos li b{color:var(--ink);font-weight:500}

/* ---- a ação, separada da explicação ---- */
.ded-fazer{
  margin:10px 0 0;padding:9px 11px 9px 26px;position:relative;
  font-size:.79rem;line-height:1.56;color:var(--ink);
  background:rgba(255,163,0,.055);border:1px solid rgba(255,163,0,.16);border-radius:9px}
.ded-fazer::before{content:"→";position:absolute;left:10px;top:9px;color:var(--amb);font-size:.8rem}
.ded-fazer b{font-weight:500}

/* ---- estado da campanha ---- */
.tag.parada::before{background:var(--fraco)}
/* As etiquetas vinham coladas uma na outra, lidas como uma frase só
   ("NO AR TESTADO, SEM RETORNO"). Elas dizem coisas diferentes e precisam de ar. */
.tags{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:2px}
.tag.alcance::before{background:#7FA8C9}
.tag.alcance{color:#9FBBD4}
.lista.pausada .linha{opacity:.72}
.lista.pausada .linha:hover{opacity:1}
.nota b{color:var(--ink);font-weight:500}

/* ---- o código da agência vira nota de rodapé ----------------------------
   O nome grande passa a ser o que a campanha FAZ, em português. O código
   original fica junto e pequeno: é como quem cuida dos anúncios se refere a
   ela, e o dono precisa dele para conseguir cobrar pelo nome certo. */

.linha .nome .quem{display:block;font-size:.7rem;color:var(--fraco);margin-top:6px}

/* ---- de quantas rodadas a análise se apoia ---- */
.memoria{margin:0 0 16px;padding:9px 12px 9px 24px;position:relative;font-size:.75rem;line-height:1.6;
  color:var(--meio);border-left:1px solid rgba(255,163,0,.3)}
.memoria::before{content:"◷";position:absolute;left:8px;top:9px;color:var(--amb);font-size:.72rem}
.memoria b{color:var(--ink);font-weight:500}

/* ---- esqueleto de carregamento -------------------------------------------
   Três decisões, e nenhuma é enfeite.

   O brilho ATRAVESSA em âmbar, não em cinza. Cinza sobre cinza fica invisível
   e o bloco parado passa a parecer conteúdo quebrado — a pessoa recarrega.

   Os blocos ENTRAM ESCALONADOS, de cima para baixo. Tudo aparecendo junto lê
   como uma tela congelada; em cascata lê como uma tela montando.

   E o brilho corre de cima para baixo também, não bloco a bloco: assim a tela
   inteira tem uma direção, em vez de doze animações independentes piscando
   fora de sincronia. */
.osso{display:block;border-radius:6px;position:relative;overflow:hidden;
  background:linear-gradient(90deg,rgba(242,236,225,.05),rgba(242,236,225,.075),rgba(242,236,225,.05))}
@media (prefers-reduced-motion:no-preference){
  .osso::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
    background:linear-gradient(90deg,transparent 10%,rgba(255,163,0,.16) 50%,transparent 90%);
    animation:varre 1.8s cubic-bezier(.4,0,.2,1) infinite}
  @keyframes varre{0%{transform:translateX(-100%)}60%,100%{transform:translateX(100%)}}
  /* cascata: cada bloco entra um pouco depois do anterior */
  .vista>*{animation:sobe .34s cubic-bezier(.2,.7,.3,1) backwards}
  .vista>*:nth-child(1){animation-delay:0s}
  .vista>*:nth-child(2){animation-delay:.05s}
  .vista>*:nth-child(3){animation-delay:.1s}
  .vista>*:nth-child(n+4){animation-delay:.15s}
  @keyframes sobe{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  /* o brilho de cada linha sai levemente atrasado em relação à de cima */
  .lista .linha:nth-child(2) .osso::after{animation-delay:.12s}
  .lista .linha:nth-child(3) .osso::after{animation-delay:.24s}
  .kpi:nth-child(2) .osso::after{animation-delay:.09s}
  .kpi:nth-child(3) .osso::after{animation-delay:.18s}
  .kpi:nth-child(4) .osso::after{animation-delay:.27s}
}
.leitura.fantasma{border-color:rgba(255,163,0,.14);
  background:linear-gradient(90deg,rgba(255,163,0,.04),rgba(24,21,18,.5) 40%)}
@media (prefers-reduced-motion:no-preference){
  .leitura.fantasma .lt-ic{animation:respira 2.2s ease-in-out infinite}
  @keyframes respira{0%,100%{opacity:.4;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}
}
.leitura.fantasma .lt-ic{opacity:.55}

/* "escrevendo…" com as reticências animadas: diz o que está acontecendo, e a
   diferença entre uma tela pensando e uma tela travada é exatamente essa. */
.escrevendo-rot{margin:0;font-family:var(--mono);font-size:.58rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--amb2);display:flex;align-items:center;gap:3px}
.escrevendo-rot i{width:3px;height:3px;border-radius:50%;background:var(--amb2);opacity:.3;margin-top:1px}
.escrevendo-rot i:first-of-type{margin-left:5px}
@media (prefers-reduced-motion:no-preference){
  .escrevendo-rot i{animation:pontinho 1.4s ease-in-out infinite}
  .escrevendo-rot i:nth-of-type(2){animation-delay:.18s}
  .escrevendo-rot i:nth-of-type(3){animation-delay:.36s}
  @keyframes pontinho{0%,70%,100%{opacity:.25}35%{opacity:1}}
}

.nota.espera{color:var(--fraco);text-align:center;padding:8px 0 0;font-size:.72rem}

/* ---- abas ---------------------------------------------------------------
   Cada assunto tem cor própria: anúncio é âmbar (o dinheiro), site é azulado
   (o que acontece depois), custo é verde (o que sai do bolso pela IA). Não é
   enfeite — é o que faz a pessoa saber onde está sem ler o rótulo. */
.abas{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:16px;padding:5px;
  border:1px solid var(--linha);border-radius:15px;background:rgba(24,21,18,.5)}
.abas button{--cor:var(--amb);--rgb:255,163,0;
  position:relative;min-width:0;min-height:44px;display:inline-flex;align-items:center;
  justify-content:center;gap:7px;font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;
  text-transform:uppercase;border:0;border-radius:11px;background:transparent;
  color:rgba(var(--rgb),.66);cursor:pointer;transition:.18s;padding:0 8px}
.abas button[data-aba="site"]{--cor:#7FA8C9;--rgb:127,168,201}
.abas button[data-aba="custo"]{--cor:#76AD96;--rgb:118,173,150}
.abas button svg{width:14px;height:14px;flex:none;transition:.18s}
.abas button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.abas button:hover{color:var(--ink);background:rgba(var(--rgb),.06)}
.abas button.on{color:var(--ink);
  background:linear-gradient(180deg,rgba(var(--rgb),.18),rgba(var(--rgb),.07));
  box-shadow:inset 0 0 0 1px rgba(var(--rgb),.32)}
.abas button.on svg{color:var(--cor);transform:translateY(-1px)}
.abas button.on::after{content:"";position:absolute;left:50%;bottom:4px;width:18px;height:2px;
  border-radius:2px;background:var(--cor);transform:translateX(-50%)}
/* o pino conta o que pede ação, para a aba fechada não esconder urgência */
.abas .pino{font-style:normal;font-family:var(--mono);font-size:.5rem;min-width:15px;height:15px;
  display:inline-flex;align-items:center;justify-content:center;border-radius:999px;
  background:rgba(224,106,78,.9);color:#fff;padding:0 4px}

/* as ações do site, em cartões pequenos */
.cartoes-acao{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.acao{border:1px solid var(--linha);border-radius:12px;padding:13px 15px;background:rgba(255,255,255,.014)}
.acao .n{font-family:var(--disp);font-weight:300;font-size:1.6rem;line-height:1}
.acao .r{font-size:.74rem;color:var(--meio);margin-top:6px;line-height:1.4}
.acao .e{font-family:var(--mono);font-size:.53rem;letter-spacing:.1em;color:var(--fraco);margin-top:6px}



/* ---- filtro da lista ------------------------------------------------------
   Mora no cabeçalho do card, não acima dele: filtro solto no topo da página
   parece valer para a tela inteira, e este só vale para uma lista. */
.filtro{display:flex;gap:5px;flex:none;align-self:flex-start}
.filtro button{display:inline-flex;align-items:center;gap:6px;
  font-family:var(--mono);font-size:.55rem;letter-spacing:.12em;text-transform:uppercase;
  padding:6px 11px;border-radius:999px;border:1px solid var(--linha);
  background:transparent;color:var(--fraco);cursor:pointer;transition:.18s}
.filtro button i{font-style:normal;font-size:.5rem;color:var(--fraco);
  background:rgba(242,236,225,.07);border-radius:999px;padding:1px 5px;min-width:16px;text-align:center}
.filtro button:hover:not(:disabled){color:var(--meio);border-color:rgba(242,236,225,.24)}
.filtro button.on{color:var(--amb2);border-color:rgba(255,163,0,.45);background:var(--amb-fraco)}
.filtro button.on i{color:var(--amb2);background:rgba(255,163,0,.16)}
/* filtro sem nenhum item fica desligado em vez de sumir: some esconde que a
   verificação existe, e o zero é informação */
.filtro button:disabled{opacity:.35;cursor:default}



/* ============================================================================
   CELULAR — e aqui não é encolher, é decidir o que sai.
   O dono abre isto no telefone, entre uma mesa e outra. Cada decisão abaixo
   responde "o que ele precisa ver antes de guardar o aparelho".
   ========================================================================= */
@media (max-width:900px){
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vista>.metade{grid-column:1/-1}
}

@media (max-width:640px){
  .envelope{padding:16px 14px 56px}
  .vista{gap:12px}
  .deducoes{grid-template-columns:1fr}
  .card{padding:16px 15px;border-radius:18px}

  /* topo em duas linhas, sem apertar nada */
  header.topo{gap:10px;margin-bottom:14px}
  .topo-marca{width:100%}
  .periodo{width:100%}
  .periodo button{flex:1;padding:8px 0;font-size:.55rem;letter-spacing:.08em}

  /* AS ABAS MANTÊM O RÓTULO. A versão anterior escondia o texto e deixava três
     ícones sem nome — economizava espaço e tirava a única pista de qual aba é
     qual. Encolhe a letra e o ícone; o nome fica. */
  .abas{gap:3px;padding:4px;margin-bottom:13px}
  .abas button{min-height:42px;font-size:.52rem;letter-spacing:.06em;gap:5px;padding:0 4px}
  .abas button svg{width:13px;height:13px}
  .abas .pino{font-size:.46rem;min-width:13px;height:13px;padding:0 3px}

  /* a leitura perde o ícone: 38px de enfeite antes do texto, numa tela onde
     a primeira dobra é tudo */
  .leitura{padding:15px 16px;gap:0}
  .leitura .lt-ic{display:none}
  .lt-manchete{font-size:1.1rem;margin-bottom:10px}
  .lt-pontos li{font-size:.83rem;padding-left:23px}

  /* LISTA: no celular a estrutura muda, não encolhe.
     Espremer nome e números na mesma linha trunca o nome ("Ad02 - TemDia |
     …") e ainda joga a última coluna para uma segunda linha, órfã no meio da
     tela. Aqui o nome ocupa a largura toda e os números formam uma faixa
     embaixo — a mesma informação, na ordem em que se lê.

     E some "Viram", não "Procuraram": a versão anterior escondia justamente
     quantos procuraram a casa e quanto custou cada um, que são as duas que
     decidem. Alcance é contexto e espera a tela grande. */
  .linha{display:block;padding:14px 0}
  .linha .nome b{font-size:.95rem;white-space:normal}   /* deixa quebrar */
  .linha .nome .obj{font-size:.73rem}
  .linha .nome .quem{display:none}   /* idade e raio: detalhe de tela grande */
  .linha .met{display:inline-block;width:calc(33.333% - 7px);text-align:left;
    margin-top:11px;padding-top:0;vertical-align:top}
  .linha .met + .met{margin-left:9px}
  .linha .met span{margin-bottom:2px}
  .linha .barra{margin-top:12px}
  /* DEPOIS da regra de `.met`, e não antes: as duas têm a mesma
     especificidade, então a última vence — colocada acima, o `display:none`
     era sobreposto pelo `inline-block` e a coluna reaparecia. */
  .linha .met.so-largo{display:none}

  /* o filtro desce para a própria linha em vez de empurrar o card */
  .cab{flex-direction:column;align-items:stretch;gap:11px}
  .filtro{width:100%}
  .filtro button{flex:1;justify-content:center;padding:8px 4px;font-size:.5rem;letter-spacing:.06em}

  .kpi{min-height:0;padding:14px}
  .kpi .val{font-size:1.55rem;margin-top:9px}
  .kpi .sub{font-size:.68rem}
  .ded{padding:13px 14px}
  .ded-val{font-size:1.15rem}
  .cartoes-acao{grid-template-columns:repeat(2,1fr)}
  .passo b{font-size:1.1rem}
  footer.rodape{margin-top:30px}
}

/* Tela estreita de verdade (iPhone SE e afins): o filtro vira duas linhas em
   vez de espremer três botões em 320px. */
@media (max-width:380px){
  .filtro{flex-wrap:wrap}
  .filtro button{flex:1 1 42%}
  .abas button{font-size:.48rem;letter-spacing:.04em}
}

/* de quando é a leitura que está na tela */
.selo-dia{display:inline-block;font-family:var(--mono);font-size:.55rem;letter-spacing:.1em;
  text-transform:uppercase;padding:2px 8px;border-radius:999px;
  border:1px solid rgba(255,163,0,.28);color:var(--amb2);background:var(--amb-fraco);margin-left:4px}
.selo-dia.vivo{border-color:rgba(95,191,135,.35);color:var(--verde);background:rgba(95,191,135,.08)}
