/* PARTUM ENGENHARIA · folha do site.
   Paleta oficial do BRANDBOOK-PARTUM.pdf. O acento (#00A3D8) é reservado para
   CTA e destaque: espalhar acento é o jeito mais rápido de um site premium
   parecer template. */
:root{
  --escuro:#0D162B; --escuro2:#0A1122; --profundo:#153B77; --medio:#00689E; --azul:#00A3D8;
  --branco:#F4F8FC; --dim:rgba(224,236,248,.72); --dim2:rgba(224,236,248,.5);
  --linha:rgba(140,180,220,.20);
  --display:'Archivo','Helvetica Neue',sans-serif;
  --sombra:0 18px 50px rgba(0,0,0,.4);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--escuro);color:var(--branco);
     font-family:'Manrope',system-ui,sans-serif;line-height:1.7;overflow-x:hidden;
     -webkit-font-smoothing:antialiased}
/* height:auto é obrigatório junto do max-width. Sem ele, os atributos
   width/height do HTML (que existem para reservar espaço e evitar salto de
   layout) travam a altura: a largura encolhe para caber no container e a
   imagem estica. Uma foto 1600x900 chegou a renderizar 496x900. Quem precisa
   preencher container tem regra própria com object-fit, que vence esta. */
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--display);line-height:1.1;letter-spacing:-.02em;margin:0;font-weight:700}
.wrap{max-width:1140px;margin:0 auto;padding:0 22px}
.pular{position:absolute;left:12px;top:12px;z-index:200;background:var(--azul);color:#04101f;
       padding:.6rem 1rem;border-radius:8px;clip-path:inset(50%);white-space:nowrap}
.pular:focus{clip-path:none}
.barra-progresso{background:var(--azul)}

/* ---------- cabeça ---------- */
.cabeca{position:fixed;inset:0 0 auto;z-index:80;padding:16px 0;transition:background .3s,padding .3s;
        backdrop-filter:blur(0)}
.cabeca.rolou,.cabeca.solida{background:rgba(10,17,34,.92);backdrop-filter:blur(10px);
        border-bottom:1px solid var(--linha);padding:10px 0}
.cabeca .wrap{display:flex;align-items:center;gap:20px}
.marca img{height:38px;width:auto}
/* ═══════════════════════════════════════════════════════════════════════════
   QUEM CEDE ESPAÇO NO CABEÇALHO, E QUEM NÃO CEDE

   O cabeçalho é um flex com quatro itens: logo, menu, busca e botão. Por padrão
   TODOS são `flex:0 1 auto`, ou seja, todos encolhem quando falta espaço, e o
   navegador escolhe quem sofre.

   Travar só o menu não resolveu: a pressão andou para o próximo item flexível e
   o BOTÃO passou a quebrar "Análise técnica" em duas linhas. Item de flex é assim,
   apertar um empurra o vizinho.

   Aqui a regra fica explícita: logo, menu e botão NÃO encolhem, e a busca é a
   única que cede. Ela é o acessório, e um campo de busca menor continua sendo um
   campo de busca; um botão de duas linhas parece defeito.
   ═══════════════════════════════════════════════════════════════════════════ */
.cabeca .marca{flex:0 0 auto}
.cabeca .nav-cta{flex:0 0 auto;white-space:nowrap}

/* `flex:0 0 auto` e `white-space:nowrap`: o menu é o conteúdo, não o acessório.
   Sem o nowrap, quando o espaço apertava o item quebrava no meio e "A Partum"
   virava "A" numa linha e "Partum" na outra. */
/* `flex:0 1 auto` COM `min-width:0`, e não `flex:0 0 auto`: agora a busca mora
   dentro do <nav>, então travar o nav inteiro travaria a busca junto, e a
   pressão do cabeçalho voltaria a estourar no botão. O nav cede, e lá dentro
   quem cede é só a busca: os links são `flex:none`. O resultado é o mesmo de
   antes, com a busca sendo o único item que encolhe. */
.nav{display:flex;gap:26px;margin-left:auto;font-size:.93rem;font-weight:500;
  flex:0 1 auto;min-width:0}
.nav a{white-space:nowrap;flex:none}
.nav a{color:var(--dim);padding:6px 0;position:relative}
.nav a:hover,.nav a[aria-current]{color:var(--branco)}
.nav a[aria-current]::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--azul)}
.hamb{display:none;background:none;border:0;cursor:pointer;padding:8px;margin-left:auto}
.hamb span{display:block;width:24px;height:2px;background:var(--branco);margin:5px 0;transition:transform .3s,opacity .3s}
.cabeca.aberto .hamb span:first-child{transform:translateY(3.5px) rotate(45deg)}
.cabeca.aberto .hamb span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
@media(max-width:940px){
  .nav{position:fixed;inset:64px 0 auto;flex-direction:column;gap:0;background:rgba(10,17,34,.98);
       padding:14px 22px 26px;border-bottom:1px solid var(--linha);display:none}
  .cabeca.aberto .nav{display:flex}
  .nav a{padding:14px 0;border-bottom:1px solid var(--linha);font-size:1.05rem}
  .hamb{display:block}
  .nav-cta{display:none}
}

/* ---------- botões ---------- */
.btn{display:inline-flex;align-items:center;gap:9px;font-weight:700;border-radius:100px;
     padding:13px 26px;font-size:.94rem;transition:transform .18s,box-shadow .18s,border-color .18s;
     font-family:'Manrope',sans-serif;border:0;cursor:pointer}
.btn-p{background:var(--azul);color:#04101f;box-shadow:0 6px 24px rgba(0,163,216,.3)}
.btn-p:hover{transform:translateY(-2px);box-shadow:0 10px 32px rgba(0,163,216,.48)}
/* `background:transparent` NÃO é redundante, é a correção de um defeito.
   Esta regra só definia borda e cor. Enquanto os botões eram <a>, o fundo era
   transparente por natureza do elemento. Quando viraram <button> para abrir o
   widget do Tobia, entrou o cinza-claro que o navegador dá a botão sem fundo
   declarado: 82 botões em 38 rotas ficaram com uma pílula clara e o texto
   quase branco por cima, ilegível. Elemento tem valor inicial próprio, e
   trocar a tag troca o valor inicial. */
.btn-g{background:transparent;border:1.5px solid rgba(180,214,240,.36);color:var(--branco)}
.btn-g:hover{border-color:var(--azul);color:var(--azul);background:transparent}

/* WHATSAPP. O verde é o da marca do WhatsApp (#25D366), o mesmo do botão
   flutuante, para o visitante reconhecer a ação antes de ler o rótulo.
   O texto é branco e não o escuro do btn-p: sobre esse verde, o branco tem
   contraste maior e é o que o próprio WhatsApp usa. */
.btn-wa{background:#25D366;color:#fff;box-shadow:0 6px 24px rgba(37,211,102,.28)}
.btn-wa:hover{background:#1FB855;color:#fff;transform:translateY(-2px);
  box-shadow:0 10px 32px rgba(37,211,102,.42)}
.btn-wa:focus-visible{outline:3px solid var(--branco);outline-offset:3px}
.btn.grande{font-size:1.03rem;padding:17px 34px}

/* ---------- herói ---------- */
.heroi{position:relative;min-height:100svh;display:flex;align-items:center;padding:150px 0 80px;overflow:hidden}
.heroi-fundo{position:absolute;inset:0;z-index:0}
.heroi-fundo img{width:100%;height:100%;object-fit:cover}
.heroi-fundo::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,var(--escuro) 5%,rgba(13,22,43,.93) 44%,rgba(13,22,43,.5) 100%)}
.heroi .wrap{position:relative;z-index:1}
.olho{display:inline-flex;align-items:center;gap:10px;font-size:.73rem;letter-spacing:.16em;
      text-transform:uppercase;color:var(--azul);font-weight:700;margin-bottom:20px}
.olho::before{content:"";width:26px;height:2px;background:var(--azul)}
.heroi h1{font-size:clamp(2.05rem,5.2vw,3.95rem);max-width:19ch;font-weight:800}
.heroi h1 em{font-style:normal;color:var(--azul)}
.heroi .lead{max-width:60ch;color:var(--dim);margin:24px 0 32px;font-size:clamp(1rem,1.5vw,1.1rem)}
.acoes{display:flex;gap:12px;flex-wrap:wrap}

/* ---------- autoridade ---------- */
.autoridade{border-block:1px solid var(--linha);background:rgba(21,59,119,.16);padding:18px 0}
.autoridade .wrap{display:flex;flex-wrap:wrap;gap:10px 28px;justify-content:center;
                  font-size:.85rem;color:var(--dim);text-align:center}
.autoridade b{color:var(--branco);font-weight:600}

/* ---------- seções ---------- */
.sec{padding:92px 0}
.sec--alt{background:var(--escuro2)}
.cab{max-width:780px;margin-bottom:48px}
.cab .kicker{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--azul);
             font-weight:700;margin-bottom:12px}
.cab h2{font-size:clamp(1.6rem,3.6vw,2.5rem)}
.cab p{color:var(--dim);margin-top:16px}
.grade{display:grid;grid-template-columns:repeat(auto-fit,minmax(285px,1fr));gap:16px}
.card{background:rgba(21,59,119,.14);border:1px solid var(--linha);border-radius:18px;padding:28px 26px;
      transition:border-color .25s,transform .25s;display:block}
.card:hover{border-color:rgba(0,163,216,.5);transform:translateY(-3px)}
.card .n{font-family:var(--display);font-size:.75rem;color:var(--azul);font-weight:700;letter-spacing:.1em}
.card h3{font-size:1.06rem;margin:10px 0}
.card p{color:var(--dim);font-size:.93rem;margin:0}
.card .mais{color:var(--azul);font-size:.85rem;font-weight:600;margin-top:14px;display:inline-block}

.lista{list-style:none;padding:0;margin:0;display:grid;gap:13px}
.lista li{display:flex;gap:13px;align-items:flex-start;color:var(--dim)}
.lista svg{flex:none;margin-top:5px}
.duas{display:grid;grid-template-columns:1.05fr .95fr;gap:52px;align-items:center}
.duas img{border-radius:20px}
@media(max-width:900px){.duas{grid-template-columns:1fr;gap:32px}}

/* método: linha do tempo */
.metodo{display:grid;gap:0;counter-reset:et}
.etapa{display:grid;grid-template-columns:64px 1fr;gap:24px;padding:26px 0;border-bottom:1px solid var(--linha)}
.etapa:last-child{border-bottom:0}
.etapa .num{font-family:var(--display);font-size:1.5rem;font-weight:800;color:var(--azul);line-height:1}
.etapa h3{font-size:1.12rem;margin-bottom:7px}
.etapa p{color:var(--dim);margin:0;font-size:.95rem}
.etapa .valor{color:var(--dim2);font-size:.87rem;margin-top:8px;font-style:italic}
@media(max-width:640px){.etapa{grid-template-columns:44px 1fr;gap:16px}}

/* projetos: a orientação da foto manda no card, e não o contrário.
   Forçar retrato em moldura paisagem foi uma queixa real na revisão. */
.projetos{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.proj{border:1px solid var(--linha);border-radius:20px;overflow:hidden;background:var(--escuro2);
      display:flex;flex-direction:column;transition:border-color .25s,transform .25s}
.proj:hover{border-color:rgba(0,163,216,.5);transform:translateY(-3px)}
.proj .foto{overflow:hidden;background:#0a1122}
.proj .foto img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.6,.2,1)}
.proj:hover .foto img{transform:scale(1.05)}
.proj[data-orient="paisagem"] .foto{aspect-ratio:16/10}
.proj[data-orient="retrato"]  .foto{aspect-ratio:3/4}
.proj .txt{padding:24px 24px 28px}
.proj h3{font-size:1.2rem;margin-bottom:6px}
.proj .meta{font-size:.8rem;color:var(--azul);letter-spacing:.06em;text-transform:uppercase;font-weight:700}
.proj .local{color:var(--dim2);font-size:.86rem;margin:4px 0 12px}
.proj p{color:var(--dim);font-size:.93rem;margin:0}
.selo-estado{display:inline-block;font-size:.7rem;padding:4px 10px;border-radius:100px;
             border:1px solid rgba(0,163,216,.4);color:var(--azul);margin-top:14px;font-weight:700;
             letter-spacing:.05em;text-transform:uppercase}

/* galeria de um projeto */
.galeria{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.galeria img{border-radius:14px;width:100%;height:auto}

/* FAQ */
.faq{display:grid;gap:12px;max-width:860px}
.faq details{border:1px solid var(--linha);border-radius:14px;background:rgba(21,59,119,.1);overflow:hidden}
.faq summary{cursor:pointer;padding:20px 24px;font-weight:600;list-style:none;
             display:flex;justify-content:space-between;gap:16px;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--azul);font-size:1.3rem;font-family:var(--display);flex:none}
.faq details[open] summary::after{content:"–"}
.faq p{padding:0 24px 22px;color:var(--dim);margin:0}

/* CTA final e rodapé */
.cta-final{padding:100px 0;background:linear-gradient(140deg,var(--profundo),var(--escuro2) 72%);text-align:center}
.cta-final .wrap{max-width:840px}
.cta-final h2{font-size:clamp(1.7rem,4vw,2.7rem)}
.cta-final p{color:var(--dim);margin:20px auto 30px;max-width:62ch}
.mini{font-size:.82rem;color:var(--dim2);margin-top:18px}
.rodape{padding:64px 0 70px;border-top:1px solid var(--linha);font-size:.9rem;color:var(--dim);background:var(--escuro2)}
.rodape .wrap{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:34px}
.rodape img{margin-bottom:16px}
.rodape b{color:var(--branco);display:block;margin-bottom:12px;font-weight:600;font-family:var(--display)}
.rodape a{display:block;padding:4px 0;color:var(--dim)}
.rodape a:hover{color:var(--azul)}
.essencia{color:var(--dim);margin:0 0 12px}
.assinatura{color:var(--dim2);font-size:.85rem}
.end{margin:0 0 12px}
.mini2{color:var(--dim2);font-size:.82rem;margin-top:14px}
@media(max-width:860px){.rodape .wrap{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.rodape .wrap{grid-template-columns:1fr}}

/* O FLUTUANTE virou <button> quando o WhatsApp direto saiu do site. Mesma
   aparência de antes: 56x56, #25D366, 18px do canto, z-index 70. As quatro
   linhas novas são só para o <button> não trazer a bagagem que ele traz de
   fábrica (borda, padding, fonte do sistema e cursor de texto). */
.flutuante{position:fixed;right:18px;bottom:18px;z-index:70;width:56px;height:56px;border-radius:50%;
  background:#25D366;display:grid;place-items:center;box-shadow:0 8px 26px rgba(0,0,0,.42);
  border:0;padding:0;font:inherit;cursor:pointer;-webkit-appearance:none;appearance:none}
.flutuante:focus-visible{outline:3px solid var(--branco);outline-offset:3px}

/* O WIDGET DO TOBIA desenha o botão dele em .tbw-launch, no mesmo canto e com
   z-index 2147483000. Sem esconder, ficariam DOIS botões flutuantes empilhados
   e o de cima seria o dele. O painel continua abrindo normalmente: quem o
   dispara é o data-tobia-open do nosso botão. */
.tbw-launch{display:none!important}

/* O cartão de pergunta que não tem solução correspondente virou <button>.
   Mesma caixa do <a class="card">, sem o que o botão traz de fábrica. */
button.card{border:0;font:inherit;text-align:left;width:100%;cursor:pointer;
  -webkit-appearance:none;appearance:none}

/* Botão que precisa PARECER link (rodapé e a linha alternativa do herói). */
.como-link{background:none;border:0;padding:0;font:inherit;color:inherit;
  cursor:pointer;text-decoration:none}
.como-link:hover{color:var(--azul)}

/* páginas internas: topo compacto */
.topo-int{padding:150px 0 60px;background:linear-gradient(160deg,var(--profundo) 0%,var(--escuro) 65%)}
.topo-int h1{font-size:clamp(1.9rem,4.4vw,3.1rem);max-width:20ch}
.topo-int .lead{color:var(--dim);max-width:62ch;margin-top:20px;font-size:1.06rem}
.migalha{font-size:.82rem;color:var(--dim2);margin-bottom:18px}
.migalha a:hover{color:var(--azul)}

@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}html{scroll-behavior:auto}}

/* ---------- formulário qualificado (Entrega 06, seção 5) ---------- */
.form-grid{display:grid;grid-template-columns:1.55fr .95fr;gap:48px;align-items:start}
@media(max-width:900px){.form-grid{grid-template-columns:1fr;gap:34px}}
.campos{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:620px){.campos{grid-template-columns:1fr}}
.campo{margin:0;display:flex;flex-direction:column;gap:7px}
.campo.largo{grid-column:1 / -1}
.campo label{font-size:.86rem;color:var(--dim);font-weight:600}
.campo label i{color:var(--azul);font-style:normal}
/* 16px trava o zoom automático do iOS ao focar o campo. Abaixo disso o iPhone
   dá zoom e o visitante perde o contexto do formulário. */
.campo input,.campo select,.campo textarea{
  background:rgba(21,59,119,.16);border:1px solid var(--linha);color:var(--branco);
  border-radius:12px;padding:13px 15px;font:inherit;font-size:16px;width:100%}
.campo textarea{resize:vertical;min-height:110px}
.campo input:focus,.campo select:focus,.campo textarea:focus{outline:none;border-color:var(--azul)}
.campo.erro input,.campo.erro select{border-color:#ff8f6b}
.campo > span{color:#ff8f6b;font-size:.8rem}
.campo select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--azul) 50%),linear-gradient(135deg,var(--azul) 50%,transparent 50%);
  background-position:calc(100% - 20px) calc(1.25em),calc(100% - 15px) calc(1.25em);background-size:5px 5px;background-repeat:no-repeat}
.isca{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.lgpd{margin:24px 0 22px;font-size:.9rem;color:var(--dim)}
.lgpd label{display:flex;gap:11px;align-items:flex-start;cursor:pointer}
.lgpd input{margin-top:4px;width:17px;height:17px;accent-color:var(--azul);flex:none}
.lgpd.erro .msg{color:#ff8f6b;display:block;margin-top:8px;font-size:.82rem}
.aviso-erro{background:rgba(255,143,107,.1);border:1px solid rgba(255,143,107,.4);
  border-radius:12px;padding:13px 16px;color:#ffb59b;margin-bottom:22px;font-size:.92rem}
.lateral{background:rgba(21,59,119,.14);border:1px solid var(--linha);border-radius:20px;padding:30px 28px}
.lateral h2{font-size:1.25rem;margin-bottom:12px}
.lateral p{color:var(--dim);font-size:.93rem;margin:0}
.lateral b{color:var(--branco);font-family:var(--display);display:block;margin-bottom:6px}
.lateral hr{border:0;border-top:1px solid var(--linha);margin:24px 0}
.mini2{font-size:.84rem;color:var(--dim2)}
.ok-selo{display:inline-block;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:700;color:var(--azul);border:1px solid rgba(0,163,216,.4);border-radius:100px;
  padding:6px 15px;margin-bottom:20px}

/* ---------- pauta editorial ---------- */
.bm-rolo{overflow-x:auto;border:1px solid var(--linha);border-radius:18px;background:rgba(21,59,119,.1)}
.pauta{width:100%;border-collapse:collapse;font-size:.92rem;min-width:720px}
.pauta th,.pauta td{padding:14px 18px;text-align:left;border-bottom:1px solid var(--linha);vertical-align:top}
.pauta thead th{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--dim);
  font-weight:700;background:rgba(21,59,119,.2);white-space:nowrap}
.pauta tbody tr:last-child td{border-bottom:0}
.pauta tbody tr:hover{background:rgba(0,163,216,.05)}
.pauta .tema{color:var(--branco);font-weight:600;min-width:290px}
.pauta .peq{color:var(--dim);font-size:.86rem;white-space:nowrap}
.pauta a{color:var(--azul)}
.selo-prod{display:inline-block;font-size:.68rem;padding:4px 10px;border-radius:100px;
  border:1px dashed rgba(255,255,255,.24);color:var(--dim2);white-space:nowrap;
  letter-spacing:.05em;text-transform:uppercase;font-weight:700}

/* ---------- números de prova (Entrega 06, seção 13) ---------- */
.numeros-sec{padding:70px 0 20px}
.numeros{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px}
.num-item{border-left:2px solid rgba(0,163,216,.45);padding:6px 0 6px 20px}
.num-item b{display:block;font-family:var(--display);font-size:clamp(2rem,4.4vw,2.9rem);
  font-weight:800;color:var(--azul);line-height:1}
.num-item span{display:block;margin-top:8px;font-weight:600;font-size:.95rem}
.num-item i{display:block;font-style:normal;color:var(--dim2);font-size:.84rem;margin-top:4px}

/* ---------- A Partum: propósito, valores e essência ---------- */
.assinatura-marca{font-family:var(--display);font-size:1.06rem;font-weight:700;
  color:var(--azul);margin-top:26px;letter-spacing:-.01em}
.valores{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:18px}
.valor{background:rgba(21,59,119,.14);border:1px solid var(--linha);border-radius:18px;
  padding:30px 28px;display:flex;flex-direction:column}
.valor h3{font-size:1.3rem;margin-bottom:6px}
.valor .v-sub{color:var(--azul);font-weight:600;margin-bottom:16px}
.valor .v-abre{font-weight:600;margin-bottom:12px}
.valor .v-corpo{color:var(--dim);font-size:.95rem;margin-bottom:18px}
.valor .v-rep{color:var(--dim2);font-size:.86rem;margin-top:auto;padding-top:16px;
  border-top:1px solid var(--linha)}
.essencia{background:linear-gradient(160deg,var(--profundo),var(--escuro2) 78%);text-align:center}
.essencia .tres{font-family:var(--display);font-weight:800;letter-spacing:-.02em;
  font-size:clamp(1.6rem,4.2vw,2.6rem);line-height:1.22;margin:22px 0 0}
.essencia .orienta{color:var(--dim);margin:30px 0 0;line-height:1.9}
.essencia .assina{color:var(--azul);font-weight:600;margin-top:30px;padding-top:24px;
  border-top:1px solid var(--linha);display:inline-block}

/* ═══════════════════════════════════════════════════════════════════════════
   CELULAR · correções de usabilidade

   Este bloco fica no FIM do arquivo de propósito. O botão do cabeçalho já
   tinha uma regra `.nav-cta{display:none}` dentro do @media de 940px, e ela
   nunca surtiu efeito: o elemento é `class="btn btn-p nav-cta"`, `.btn` tem a
   mesma especificidade (uma classe) e é declarado DEPOIS, então vencia a
   disputa e o botão continuava visível, quebrando em duas linhas e ocupando
   37% da largura da tela.

   A lição que este bloco registra: quando uma regra de layout responsivo
   compete com uma regra de componente, quem decide não é a intenção, é a
   ordem. Manter os ajustes de celular no fim evita repetir o erro.

   DECISÃO: em vez de esconder o botão, ele fica visível e cabe. Esconder
   removeria a ação principal do cabeçalho justamente no aparelho onde a maior
   parte do tráfego chega, e a Etapa 01 trata esse CTA como item P0.
   ═══════════════════════════════════════════════════════════════════════════ */
@media(max-width:940px){
  /* Cabe em uma linha ao lado da logo e do menu: em 375px sobram cerca de
     154px depois da logo, do hambúrguer e dos espaçamentos. */
  .cabeca .wrap{gap:10px}
  .nav-cta{display:inline-flex;white-space:nowrap;padding:11px 16px;font-size:.82rem;letter-spacing:-.01em;margin-left:auto}
  .marca img{height:32px}
  /* O hambúrguer vinha com 40x35. A área de toque recomendada é 44x44, e ele
     é o único caminho para o menu inteiro no celular. */
  /* flex-direction:column é obrigatório aqui: os dois traços são <span> em
     bloco, e um flex sem direção os põe lado a lado, virando um risco só. */
  .hamb{display:flex;flex-direction:column;align-items:center;justify-content:center;
        padding:10px;min-width:44px;min-height:44px;margin-left:0}
}

@media(max-width:560px){
  /* Links do rodapé tinham 22px de altura. Numa coluna só há espaço de sobra
     para dar a eles a área de toque inteira. */
  .rodape a{display:flex;align-items:center;min-height:44px;padding:2px 0}
  .rodape .wrap{gap:26px}
  /* O logo do topo também é um link e precisa da mesma folga. */
  .marca{display:inline-flex;align-items:center;min-height:44px}
}

@media(max-width:940px){
  /* "Ou fale pelo WhatsApp" é o parágrafo inteiro, não um link no meio de uma
     frase, então recebe área de toque própria. Os links dentro das listas de
     "para quem" ficam como estão de propósito: a WCAG 2.5.8 isenta link em
     linha de texto, e engordá-los quebraria a leitura da frase. */
  .acoes-alt a{display:inline-flex;align-items:center;min-height:44px;padding:0 2px}
}

/* A área rolável precisa mostrar que rola. A sombra à direita aparece só
   enquanto houver conteúdo escondido: `background-attachment:local` prende as
   duas camadas brancas ao conteúdo e a sombra ao contêiner, então ela some
   sozinha quando a rolagem chega ao fim. Não usa JS. */
.bm-rolo{
  background-image:
    linear-gradient(to right, var(--escuro2) 30%, rgba(10,17,34,0)),
    linear-gradient(to right, rgba(10,17,34,0), var(--escuro2) 70%),
    linear-gradient(to right, rgba(0,0,0,.5), rgba(0,0,0,0)),
    linear-gradient(to left,  rgba(0,0,0,.5), rgba(0,0,0,0));
  background-position: 0 0, 100% 0, 0 0, 100% 0;
  background-repeat: no-repeat;
  background-size: 34px 100%, 34px 100%, 14px 100%, 14px 100%;
  background-attachment: local, local, scroll, scroll;
}
.bm-rolo:focus-visible{outline:2px solid var(--azul);outline-offset:3px}

/* Links da tabela de pauta tinham 19px de altura tocável. A célula já reserva
   14px de espaçamento em cima e embaixo, então o link cresce PARA DENTRO desse
   espaço: o padding aumenta a área e a margem negativa devolve o deslocamento,
   de modo que o alvo passa de 19px para 47px sem mover um pixel na tela. */
.pauta a{display:inline-block;padding:14px 0;margin:-14px 0}

/* Perfis oficiais na página de contato. min-height de 44px pela área de toque
   no celular, mesma regra do resto do site. */
.perfis{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.perfis a{display:inline-flex;align-items:center;gap:9px;min-height:44px;
  padding:9px 16px;border:1px solid var(--linha);border-radius:100px;
  color:var(--dim);transition:color .18s,border-color .18s,background .18s}
.perfis a:hover{color:var(--azul);border-color:var(--azul);background:rgba(0,163,216,.07)}
.perfis svg{flex:none}

/* Galeria da página A Partum: uma foto larga em cima e duas quadradas embaixo.
   As proporções (16/9 e 1/1) ficam no contêiner, então o espaço é reservado
   antes de a imagem baixar e a página não dá salto. */
.galeria-sobre{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.galeria-sobre figure{margin:0;border-radius:18px;overflow:hidden;background:#0a1122}
.galeria-sobre .g-larga{grid-column:1 / -1;aspect-ratio:16/9}
.galeria-sobre figure:not(.g-larga){aspect-ratio:1/1}
.galeria-sobre img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .6s cubic-bezier(.2,.6,.2,1)}
.galeria-sobre figure:hover img{transform:scale(1.05)}
@media(max-width:560px){.galeria-sobre{gap:10px}}

/* Endereço que abre o mapa. O ícone e o texto ficam no mesmo link, com o ícone
   alinhado à PRIMEIRA linha (align-items:flex-start), porque o endereço quebra
   em duas ou três linhas no celular e um ícone centralizado ficaria flutuando
   no meio do bloco. */
.endereco{display:inline-flex;align-items:flex-start;gap:8px;color:inherit;
  text-decoration:none;transition:color .18s}
.endereco svg{flex:none;margin-top:.28em;opacity:.75}
.endereco:hover{color:var(--azul)}
.endereco:hover svg{opacity:1}

/* ── Galeria da página institucional, com lightbox ─────────────────────────
   A figura é um link, então precisa de estado de foco visível: quem navega por
   teclado tem que enxergar onde está antes de apertar Enter. */
.galeria-sobre figure a{display:block;width:100%;height:100%;position:relative}
.galeria-sobre figure a:focus-visible{outline:3px solid var(--azul);outline-offset:3px;border-radius:18px}
.galeria-sobre .lupa{position:absolute;right:10px;bottom:10px;width:36px;height:36px;
  display:flex;align-items:center;justify-content:center;border-radius:50%;
  background:rgba(6,12,24,.66);color:#fff;backdrop-filter:blur(4px);
  opacity:0;transform:scale(.9);transition:opacity .22s,transform .22s;pointer-events:none}
.galeria-sobre figure:hover .lupa,
.galeria-sobre figure a:focus-visible .lupa{opacity:1;transform:scale(1)}
/* No toque não existe hover: a lupa fica sempre visível, senão nada indica que
   a foto amplia. */
@media(hover:none){.galeria-sobre .lupa{opacity:1;transform:scale(1)}}

/* ── Lightbox ───────────────────────────────────────────────────────────── */
.lb{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  padding:clamp(14px,4vw,52px);background:rgba(4,9,18,.93);backdrop-filter:blur(6px);
  opacity:0;transition:opacity .18s ease}
.lb.lb-dentro{opacity:1}
.lb[hidden]{display:none}
.lb-fig{margin:0;max-width:100%;max-height:100%;display:flex;flex-direction:column;
  align-items:center;gap:14px;transform:scale(.985);transition:transform .18s ease}
.lb.lb-dentro .lb-fig{transform:scale(1)}
.lb-fig img{max-width:100%;max-height:78vh;width:auto;height:auto;display:block;
  border-radius:14px;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.lb-fig figcaption{color:var(--dim);font-size:.9rem;text-align:center;max-width:70ch;
  display:flex;flex-direction:column;gap:5px}
.lb-conta{color:var(--azul);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600}
.lb-conta:empty{display:none}
.lb-fechar,.lb-nav{position:absolute;display:flex;align-items:center;justify-content:center;
  width:48px;height:48px;border:0;border-radius:50%;cursor:pointer;color:#fff;
  background:rgba(255,255,255,.09);transition:background .18s,transform .18s}
.lb-fechar:hover,.lb-nav:hover{background:rgba(255,255,255,.2)}
.lb-fechar:focus-visible,.lb-nav:focus-visible{outline:3px solid var(--azul);outline-offset:3px}
.lb-fechar{top:clamp(10px,2.4vw,22px);right:clamp(10px,2.4vw,22px)}
.lb-ant{left:clamp(8px,2vw,22px);top:50%;transform:translateY(-50%)}
.lb-prox{right:clamp(8px,2vw,22px);top:50%;transform:translateY(-50%)}
.lb-ant:hover,.lb-prox:hover{transform:translateY(-50%) scale(1.06)}
.lb-nav[hidden]{display:none}
@media(max-width:560px){
  .lb-fig img{max-height:66vh}
  /* No celular as setas descem para o rodapé: nas laterais elas cobrem a foto e
     ficam no caminho do polegar que tenta arrastar. */
  .lb-ant,.lb-prox{top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 16px);transform:none}
  .lb-ant:hover,.lb-prox:hover{transform:none}
  .lb-ant{left:22%}
  .lb-prox{right:22%}
  .lb-fig{padding-bottom:64px}
}
@media(prefers-reduced-motion:reduce){
  .lb,.lb-fig{transition:none}
}

/* ---------- depoimentos ---------- */
/* SEM align-items:start. Os cards precisam esticar até a altura do mais alto
   para o bloco do autor (que tem margin-top:auto) encostar no rodapé de todos,
   igual no site anterior. Com `start`, os três terminam em alturas diferentes e
   as fotos ficam desalinhadas na horizontal. */
.depoimentos{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.depoimento{position:relative;margin:0;padding:30px 28px 26px;
  background:rgba(21,59,119,.14);border:1px solid var(--linha);border-radius:20px;
  display:flex;flex-direction:column;gap:22px}
.dep-aspas{position:absolute;top:10px;right:22px;font-size:4rem;line-height:1;
  color:var(--azul);opacity:.28;font-family:var(--display);pointer-events:none}
.depoimento blockquote{margin:0;color:var(--dim);line-height:1.72;font-size:.95rem;
  position:relative;z-index:1}
.depoimento figcaption{display:flex;align-items:center;gap:13px;
  border-top:1px solid var(--linha);padding-top:20px;margin-top:auto}
.depoimento figcaption img{width:54px;height:54px;border-radius:50%;object-fit:cover;flex:none}
.depoimento figcaption strong{display:block;color:var(--branco);font-weight:600;
  font-family:var(--display);font-size:1rem}
.dep-cargo{display:block;color:var(--dim2);font-size:.84rem;margin-top:3px}
@media(max-width:940px){.depoimentos{grid-template-columns:1fr;gap:18px}}

/* ---------- busca ---------- */
.visualmente-oculto{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* A busca é o item que CEDE espaço quando o cabeçalho aperta, e não o menu.
   `min-width:0` é obrigatório: item de flex tem `min-width:auto` por padrão e se
   recusa a encolher além do conteúdo, o que jogaria a pressão de volta no menu. */
.busca-form{position:relative;display:flex;align-items:center;
  flex:0 1 200px;min-width:0}
/* A busca é o ÚLTIMO item do menu no desktop.
   A margem NEGATIVA de 6px não é enfeite: o espaço entre o último link e a
   busca era o `gap:20px` da barra, e dentro do <nav> ele virou o `gap:26px` do
   menu. Seis pixels a mais parecem nada, mas nessa linha não sobra nada: em
   1440px a busca já encolhia 1px, ou seja, a régua está no talo. Sem a
   compensação, o campo perdia 12px de largura em TODA tela grande. No HTML ela vem primeiro, porque
   no celular o campo precisa ser a primeira coisa dentro do menu aberto: é onde
   o dedo chega. O `order` separa a ordem que a tela mostra da ordem que o
   leitor de tela percorre, e cada uma fica certa no seu lugar. */
.nav .busca-form{order:9;margin-left:-6px;flex:0 1 200px;min-width:0}
.busca-form .busca-lupa{position:absolute;left:13px;color:var(--dim2);pointer-events:none}
.busca-form input[type=search]{
  width:100%;min-width:0;padding:9px 14px 9px 36px;border-radius:100px;
  border:1px solid var(--linha);background:rgba(255,255,255,.04);color:var(--branco);
  font:500 .86rem/1.2 'Manrope',sans-serif;transition:width .25s,border-color .18s,background .18s}
.busca-form input[type=search]::placeholder{color:var(--dim2)}
/* O FOCO NÃO MUDA MAIS A LARGURA.
   Antes o input ia de 170px para 230px ao receber foco. A folga do cabeçalho é de
   73px e o crescimento era de 60px: passava raspando numa tela e estourava na
   outra, empurrando o menu para uma segunda linha. Animação que depende de 13px
   de sobra não é animação, é sorte.
   O foco continua sinalizado, por cor de borda e fundo, que não mexem no layout. */
.busca-form input[type=search]:focus{outline:none;border-color:var(--azul);
  background:rgba(255,255,255,.07);box-shadow:0 0 0 3px rgba(0,163,216,.16)}
.busca-form input[type=search]::-webkit-search-cancel-button{filter:invert(.6)}

/* painel de sugestões */
.busca-sug{position:absolute;top:calc(100% + 10px);right:0;width:340px;max-width:86vw;
  background:rgba(10,17,34,.98);backdrop-filter:blur(12px);
  border:1px solid var(--linha);border-radius:16px;overflow:hidden;z-index:90;
  box-shadow:0 22px 50px rgba(0,0,0,.5)}
.busca-sug[hidden]{display:none}
.busca-sug a{display:block;padding:13px 16px;border-bottom:1px solid var(--linha)}
.busca-sug a:last-child{border-bottom:0}
.busca-sug a:hover,.busca-sug a.ativo{background:rgba(0,163,216,.12)}
.busca-sug .s-tipo{display:block;font-size:.68rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--azul);margin-bottom:3px}
.busca-sug .s-tit{display:block;color:var(--branco);font-weight:600;font-size:.92rem;
  font-family:var(--display)}
.busca-sug .s-res{display:block;color:var(--dim2);font-size:.8rem;margin-top:3px;line-height:1.45}
.busca-sug .s-vazio{padding:15px 16px;color:var(--dim2);font-size:.86rem}

/* página de resultados */
.busca-form--pagina{margin:26px 0 0;max-width:520px}
.busca-form--pagina input[type=search]{width:100%;padding:15px 18px;font-size:1rem}
.busca-form--pagina input[type=search]:focus{width:100%}
.busca-form--pagina button{margin-left:10px;padding:15px 26px;border:0;border-radius:100px;
  background:var(--azul);color:#04101f;font:700 .94rem 'Manrope',sans-serif;cursor:pointer;
  position:static;width:auto;height:auto;clip:auto;overflow:visible}
.busca-lista{display:grid;gap:14px;max-width:820px}
.busca-item{display:block;padding:22px 24px;border:1px solid var(--linha);border-radius:16px;
  background:rgba(21,59,119,.1);transition:border-color .18s,background .18s}
.busca-item:hover{border-color:var(--azul);background:rgba(0,163,216,.07)}
.busca-item .busca-tipo{display:block;font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--azul);margin-bottom:7px}
.busca-item h2{font-size:1.12rem;margin:0}
.busca-item p{color:var(--dim);font-size:.9rem;margin-top:7px;line-height:1.6}

/* No celular a busca sai da barra e entra no menu, senão não sobra largura
   para logo, campo, botão e hambúrguer ao mesmo tempo.
   `order:-1` a coloca ACIMA dos links: quem abre o menu para buscar não deveria
   rolar seis itens até achar o campo. Não precisa mais de `display:none` aqui,
   porque quem esconde é o próprio <nav> que a contém. */
@media(max-width:940px){
  .nav .busca-form{order:-1;flex:none;width:100%;margin:0 0 12px}
  /* 16px é o mínimo que o iOS aceita sem dar zoom no campo ao receber o toque.
     Abaixo disso o Safari aproxima a página e o visitante fica preso num
     cabeçalho gigante, tendo que sair com dois dedos. */
  .busca-form input[type=search]{width:100%;padding:12px 16px 12px 40px;font-size:16px}
  .busca-form input[type=search]:focus{width:100%}
  .busca-form .busca-lupa{left:15px}
  .busca-sug{width:100%;right:auto;left:0}
}

/* ---------- herói de página interna com foto ---------- */
/* ARMADILHA CORRIGIDA AQUI: a primeira versão usava z-index:-1 na foto, e ela
   sumia. `.topo-int` tem gradiente PRÓPRIO de fundo, então qualquer filho com
   z-index negativo vai parar atrás dele e nunca aparece. A correção é empilhar
   para cima (foto em 0, conteúdo em 1) e desligar o gradiente da seção quando
   há foto, senão os dois competem pelo mesmo espaço. */
.topo-int--foto{position:relative;overflow:hidden;background:var(--escuro)!important}
.topo-int--foto .topo-foto{position:absolute;inset:0;z-index:0}
.topo-int--foto .topo-foto img{width:100%;height:100%;object-fit:cover}
/* O véu tem duas camadas: um gradiente vertical que escurece a base, onde ficam
   os botões, e um véu chapado que garante o mínimo de contraste mesmo numa foto
   estourada de sol. Sem o chapado, foto clara derruba a legibilidade do H1. */
/* O véu resolve dois problemas de uma vez: deixar a foto visível e manter o
   texto legível por cima dela. Os valores foram calibrados NA TELA, não no
   escuro: a primeira tentativa usava 0,72 subindo até opaco e o resultado era
   indistinguível de não ter foto nenhuma. Estes são o ponto em que a rocha e a
   água ainda se leem e o H1 mantém contraste acima de 4,5:1.

   Uma camada só, e não duas: a versão anterior somava um gradiente vertical com
   um horizontal, e as opacidades se multiplicavam, deixando o conjunto muito
   mais escuro do que qualquer um dos valores sugeria. */
.topo-int--foto .topo-foto::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,
    rgba(10,17,34,.34) 0%,
    rgba(10,17,34,.52) 42%,
    rgba(10,17,34,.80) 78%,
    var(--escuro) 100%)}
.topo-int--foto .wrap{position:relative;z-index:1}

/* ---------- card com foto ---------- */
.card--foto{display:flex;flex-direction:column;padding:0;overflow:hidden}
.card--foto .card-foto{display:block;aspect-ratio:16/9;overflow:hidden;background:#0a1122}
.card--foto .card-foto img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .55s cubic-bezier(.2,.6,.2,1)}
.card--foto:hover .card-foto img{transform:scale(1.06)}
/* O texto herda o espaçamento que o .card tinha, agora aplicado por dentro,
   porque o padding saiu do card para a foto poder encostar nas bordas. */
.card--foto .card-txt{display:block;padding:24px 26px 26px}

/* Aviso de escopo na página de obrigado. Fica visível e com borda de destaque
   porque é justamente o que evita desalinhamento de expectativa na primeira
   conversa comercial: quem preencheu "análise técnica" precisa ler que a
   análise ainda não começou. */
.aviso-escopo{margin-top:30px;padding:18px 22px;border-left:3px solid var(--azul);
  background:rgba(0,163,216,.07);border-radius:0 12px 12px 0;color:var(--dim);
  font-size:.92rem;line-height:1.65;max-width:760px}
/* Contador do campo de descrição. Cor neutra enquanto falta atingir o mínimo,
   e azul quando o texto já serve, para dar o sinal sem parecer erro. */
.campo .conta{display:block;font-size:.78rem;color:var(--dim2);margin-top:6px}
.campo .conta.ok{color:var(--azul)}

/* ---------- texto legal ---------- */
.texto-legal{max-width:820px}
.texto-legal h2{font-size:1.28rem;margin:44px 0 14px}
.texto-legal h2:first-child{margin-top:0}
.texto-legal h3{font-size:1.02rem;margin:26px 0 10px;color:var(--branco)}
.texto-legal p{color:var(--dim);line-height:1.78;margin-bottom:14px}
.texto-legal a{color:var(--azul);text-decoration:underline;text-underline-offset:3px}
.texto-legal code{font-family:ui-monospace,Menlo,monospace;font-size:.86em;
  background:rgba(0,163,216,.1);padding:2px 6px;border-radius:5px;color:var(--branco)}
.lista-legal{margin:0 0 16px;padding-left:22px;list-style:disc}
.lista-legal li{color:var(--dim);line-height:1.75;margin-bottom:9px}
.lista-legal li b{color:var(--branco);font-weight:600}
.texto-legal .obs{padding:14px 18px;border-left:3px solid var(--linha);
  background:rgba(21,59,119,.1);border-radius:0 10px 10px 0;font-size:.92rem}
.link-legal{display:inline-block;margin-top:14px;color:var(--dim2);font-size:.84rem}
.link-legal:hover{color:var(--azul)}

/* ---------- artigo técnico ---------- */
.texto-artigo{max-width:780px}
.texto-artigo h2{font-size:1.38rem;line-height:1.35;margin:46px 0 16px}
.texto-artigo p{color:var(--dim);line-height:1.82;margin-bottom:16px;font-size:1.02rem}
/* A resposta direta é o bloco que a busca e os assistentes citam. Recebe
   destaque visual porque também é o que o leitor apressado precisa achar. */
.resposta-direta{padding:26px 28px;border-left:3px solid var(--azul);
  background:rgba(0,163,216,.08);border-radius:0 14px 14px 0;margin-bottom:14px}
.resposta-direta p{color:var(--branco);font-size:1.08rem;line-height:1.72;margin:0}
.checklist{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:12px}
.checklist li{display:flex;gap:11px;align-items:flex-start;color:var(--dim);line-height:1.65}
.checklist li svg{flex:none;margin-top:.35em}
.autoria{margin-top:52px;padding-top:26px;border-top:1px solid var(--linha)}
.autoria p{font-size:.92rem;margin-bottom:8px}
.autoria b{color:var(--branco)}
.autoria .mini2{color:var(--dim2);font-size:.84rem;line-height:1.6}

/* ---------- galeria de case e ficha técnica ---------- */
.galeria-case{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.galeria-case figure{margin:0;border-radius:16px;overflow:hidden;background:#0a1122;aspect-ratio:16/10}
.galeria-case .g-larga{grid-column:1 / -1;aspect-ratio:16/9}
.galeria-case img{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:700px){.galeria-case{grid-template-columns:1fr}}

.ficha{display:grid;gap:0;margin:0 0 18px;border:1px solid var(--linha);border-radius:14px;overflow:hidden}
.ficha > div{display:grid;grid-template-columns:200px 1fr;gap:16px;padding:14px 20px;
  border-bottom:1px solid var(--linha)}
.ficha > div:last-child{border-bottom:0}
.ficha dt{color:var(--dim2);font-size:.86rem;margin:0}
.ficha dd{color:var(--branco);margin:0;font-size:.95rem}
@media(max-width:600px){.ficha > div{grid-template-columns:1fr;gap:4px}}

/* ---------- painel de pendências (interno) ---------- */
.pend-case{padding:26px 28px;border:1px solid var(--linha);border-radius:16px;margin-bottom:18px;
  background:rgba(21,59,119,.08)}
.pend-cab{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.pend-cab h2{font-size:1.2rem;margin:0}
.pend-selo{font-size:.76rem;padding:5px 12px;border-radius:100px;
  background:rgba(255,176,32,.14);color:#ffb020;border:1px solid rgba(255,176,32,.3)}
.pend-selo.ok{background:rgba(0,163,216,.14);color:var(--azul);border-color:rgba(0,163,216,.34)}
.pend-url{font-size:.84rem;color:var(--dim2);margin:8px 0 16px}
.pend-url a{color:var(--azul)}
.pend-lista{margin:0 0 12px;padding-left:20px;list-style:disc}
.pend-lista li{color:var(--dim);line-height:1.7;font-size:.92rem}
.pend-case details{margin-top:12px;border-top:1px solid var(--linha);padding-top:12px}
.pend-case summary{cursor:pointer;color:var(--dim2);font-size:.88rem}
.pend-case summary:hover{color:var(--azul)}

/* Selo de imagem de projeto. Aparece acima da galeria quando as imagens são
   renderização e não registro de obra: o padrão de evidência da Etapa 06 separa
   fato de projeção, e sem a legenda o visitante lê render como obra entregue. */
.selo-projeto{display:inline-flex;align-items:flex-start;gap:9px;margin:0 0 16px;
  padding:11px 16px;border:1px solid rgba(255,176,32,.32);border-radius:12px;
  background:rgba(255,176,32,.08);color:#ffb020;font-size:.86rem;line-height:1.55}
.selo-projeto svg{flex:none;margin-top:.2em}

/* ── cabeçalho em telas intermediárias ─────────────────────────────────────
   Entre 940px (onde entra o hambúrguer) e 1180px o cabeçalho leva logo, seis
   itens de menu, busca e botão na mesma linha. Apertar o espaçamento do menu e
   a largura da busca é o que evita a quebra sem esconder nada: nessa faixa
   ainda não existe hambúrguer, então esconder a busca a deixaria inalcançável. */
@media(min-width:941px) and (max-width:1180px){
  .nav{gap:18px}
  .nav .busca-form{flex-basis:168px}
}
@media(min-width:941px) and (max-width:1040px){
  .nav{gap:13px;font-size:.88rem}
  .nav .busca-form{flex-basis:132px}
  .cabeca .wrap{gap:14px}
}

/* As tres faixas abaixo valem SO acima de 940px. Sem o `min-width:941px` elas
   vazavam para o celular e a regra do fim do arquivo vencia a do menu: o campo
   dentro do menu herdava `font-size:.8rem` e `::placeholder{opacity:0}`, ou
   seja, um campo mudo que ainda por cima dava zoom no iOS ao ser tocado.

   Na ponta estreita da faixa intermediária a busca chega a 89px, e "Buscar" não
   cabe: o placeholder aparecia cortado no meio da palavra. Some com ele e aperta
   o espaçamento, deixando a lupa mais o cursor, que continuam dizendo o que o
   campo é. Ao digitar, o texto ocupa a largura toda. */
@media(min-width:941px) and (max-width:1000px){
  .busca-form input[type=search]{padding-left:31px;padding-right:10px;font-size:.8rem}
  .busca-form input[type=search]::placeholder{opacity:0}
  .busca-form .busca-lupa{left:10px}
}
