/* ============================================================
   CULTURA MARGINAL — SISTEMA DE DESIGN
   Um arquivo só (menos requisições = site mais rápido).
   Escrito celular-primeiro: o layout base é o do celular e vai
   ganhando colunas conforme a tela cresce.
   ============================================================ */

:root{
  /* Paleta da marca */
  --tinta:#0A0A0A;
  --base:#FFFFFF;
  --voz:#B5533C;
  --voz-claro:#D9775F;
  --apoio-a:#E6DC7A;
  --apoio-b:#79C7CC;

  /* Azul do símbolo — a barra da logo. Entra como cor de detalhe e de
     interação. O tom claro é o da marca (bom sobre preto e como preenchimento);
     o tom tinta é a versão escurecida, legível como texto sobre branco. */
  --azul:#37C6DD;
  --azul-tinta:#0B7A8C;
  --azul-veu:rgba(55,198,221,.14);

  /* Neutros derivados */
  --papel:#F7F5F1;
  --linha:#E2DDD4;
  --linha-forte:#C9C2B6;
  --texto-medio:#33312E;
  --texto-suave:#6B665F;
  --escuro-suave:#C9C6C1;

  /* Tipografia */
  --f-display:'Archivo Black','Archivo Black Fallback',system-ui,sans-serif;
  --f-texto:'Archivo','Segoe UI',system-ui,-apple-system,sans-serif;

  /* Escala fluida — cresce junto com a tela, sem quebras bruscas */
  --t-micro:clamp(10px,2.4vw,11.5px);
  --t-pequeno:clamp(13px,3vw,14px);
  --t-corpo:clamp(15.5px,3.6vw,17px);
  --t-medio:clamp(17px,4vw,19px);
  --t-grande:clamp(20px,4.6vw,24px);
  --t-h3:clamp(19px,4.4vw,23px);
  --t-h2:clamp(26px,6.4vw,40px);
  --t-h1:clamp(34px,9vw,68px);
  --t-hero:clamp(38px,10.5vw,84px);

  /* Espaçamento */
  --gutter:clamp(18px,5vw,40px);
  --secao-y:clamp(44px,9vw,84px);
  --gap:clamp(16px,3.4vw,28px);
  --maxw:1180px;
  --maxw-texto:68ch;

  /* Blocos escuros de propósito (rodapé, barra do tocador, caixa preta, capa
     de vídeo). No tema claro são o inverso da página; no escuro continuam
     escuros, um tom acima do fundo, pra ainda se destacarem. */
  --escuro-fundo:var(--tinta);
  --escuro-texto:var(--base);

  --raio:6px;
  --transicao:180ms cubic-bezier(.2,.7,.3,1);
}

/* ============================================================
   TEMA ESCURO
   ============================================================
   Duas portas: a preferência do sistema da pessoa e o botão no cabeçalho,
   que grava data-tema no <html> e sempre ganha do sistema. Só as cores
   mudam — o layout é exatamente o mesmo. */
@media (prefers-color-scheme:dark){
  :root:not([data-tema="claro"]){
    --tinta:#F2F0EC;
    --base:#0E0E10;
    --papel:#17171A;
    --linha:#2B2B30;
    --linha-forte:#3E3E45;
    --texto-medio:#CFCBC4;
    --texto-suave:#9A958D;
    --voz:#D9775F;
    --voz-claro:#E89C87;
    --azul-tinta:#4FD5EA;
    --azul-veu:rgba(55,198,221,.12);
    --escuro-fundo:#17171A;
    --escuro-texto:#F2F0EC;
    color-scheme:dark;
  }
}
:root[data-tema="escuro"]{
  --tinta:#F2F0EC;
  --base:#0E0E10;
  --papel:#17171A;
  --linha:#2B2B30;
  --linha-forte:#3E3E45;
  --texto-medio:#CFCBC4;
  --texto-suave:#9A958D;
  --voz:#D9775F;
  --voz-claro:#E89C87;
  --azul-tinta:#4FD5EA;
  --azul-veu:rgba(55,198,221,.12);
  --escuro-fundo:#17171A;
  --escuro-texto:#F2F0EC;
  color-scheme:dark;
}
:root[data-tema="claro"]{color-scheme:light}

*,*::before,*::after{box-sizing:border-box}

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:90px;
}

body{
  margin:0;
  background:var(--base);
  color:var(--tinta);
  font-family:var(--f-texto);
  font-size:var(--t-corpo);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

body.nav-aberto{overflow:hidden}

img,svg,video,audio,iframe{max-width:100%}
img,svg,video{display:block;height:auto}
a{color:inherit}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
button,input,select,textarea{font-family:inherit;font-size:inherit}
button{cursor:pointer}

h1,h2,h3,h4{
  font-family:var(--f-display);
  text-transform:uppercase;
  letter-spacing:-0.015em;
  line-height:0.98;
  margin:0;
  text-wrap:balance;
  overflow-wrap:break-word;
}
h1{font-size:var(--t-h1)}
h2{font-size:var(--t-h2)}
h3{font-size:var(--t-h3)}

:focus-visible{outline:3px solid var(--azul-tinta);outline-offset:3px;border-radius:2px}

/* ---------- utilitários ---------- */
.container{
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.campo-oculto{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.pular-para-conteudo{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--tinta);color:var(--base);
  padding:12px 20px;text-decoration:none;font-weight:600;
}
.pular-para-conteudo:focus{left:12px;top:12px}

.rotulo{
  font:600 var(--t-micro)/1.3 var(--f-texto);
  letter-spacing:.18em;
  text-transform:uppercase;
  margin:0;
}
.rotulo.destaque{color:var(--voz)}

.eyebrow{
  display:flex;align-items:center;gap:12px;
  margin:0 0 16px;
}
.eyebrow .barra{width:32px;height:5px;background:var(--azul);flex:none;border-radius:2px}

.secao{padding-block:var(--secao-y)}
.secao + .secao{padding-top:0}
.secao-titulo{
  display:flex;align-items:baseline;justify-content:space-between;
  gap:12px;flex-wrap:wrap;margin-bottom:clamp(20px,4vw,32px);
  border-top:2px solid var(--tinta);padding-top:18px;
}
.secao-titulo h2{flex:1 1 auto;min-width:0}
.secao-titulo .link-secao{
  font:600 var(--t-micro)/1 var(--f-texto);
  letter-spacing:.12em;text-transform:uppercase;
  text-decoration:none;color:var(--voz);white-space:nowrap;
  padding:6px 0;border-bottom:2px solid transparent;
  transition:border-color var(--transicao);
}
.secao-titulo .link-secao:hover{border-bottom-color:var(--azul);color:var(--azul-tinta)}
/* No tema escuro o terracota some no preto; o azul da marca lê muito melhor. */
@media (prefers-color-scheme:dark){
  :root:not([data-tema="claro"]) .secao-titulo .link-secao,
  :root:not([data-tema="claro"]) .rotulo.destaque{color:var(--azul)}
}
:root[data-tema="escuro"] .secao-titulo .link-secao,
:root[data-tema="escuro"] .rotulo.destaque{color:var(--azul)}

.texto-longo{max-width:var(--maxw-texto);color:var(--texto-medio)}
.texto-longo p{margin-bottom:1.1em}
.texto-longo p:last-child{margin-bottom:0}
.pequeno{font-size:var(--t-pequeno);color:var(--texto-suave)}

/* ---------- botões ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;
  padding:13px 24px;
  font:600 var(--t-pequeno)/1 var(--f-texto);
  letter-spacing:.12em;text-transform:uppercase;
  text-decoration:none;text-align:center;
  border:2px solid var(--tinta);border-radius:var(--raio);
  background:transparent;color:var(--tinta);
  transition:background var(--transicao),color var(--transicao),transform var(--transicao),border-color var(--transicao);
}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}
.btn-solido{background:var(--tinta);color:var(--base)}
.btn-solido:hover{background:var(--voz);border-color:var(--voz);color:#fff}
.btn-contorno:hover{background:var(--tinta);color:var(--base)}
.btn-solido.negativo{background:var(--escuro-texto);color:var(--escuro-fundo);border-color:var(--escuro-texto)}
.btn-solido.negativo:hover{background:var(--voz);border-color:var(--voz);color:#fff}
.btn-contorno.negativo{border-color:var(--escuro-texto);color:var(--escuro-texto)}
.btn-contorno.negativo:hover{background:var(--escuro-texto);color:var(--escuro-fundo)}
.btn-pequeno{min-height:42px;padding:10px 16px;font-size:var(--t-micro)}

.grupo-botoes{display:flex;flex-wrap:wrap;gap:12px}

/* ---------- barra de notícias ----------
   Faixa decorativa que rola sozinha (Painel → Textos das páginas → Barra de
   notícias liga/desliga). É pura CSS: a lista de itens é repetida uma vez
   (ver partials/barra-noticias.php) e a animação translada a fita até a
   metade do seu próprio comprimento — como a segunda metade é idêntica à
   primeira, o corte é invisível e o loop parece infinito.
   Fica ACIMA do cabeçalho e não é fixa: rola junto com a página, pra não
   ocupar tela depois que a pessoa já viu a novidade. */
/* Ao contrário do rodapé/tocador (sempre escuros, ver --escuro-fundo), a
   faixa usa --tinta/--base direto: essas duas INVERTEM de tema pra tema, então
   a faixa fica preta-com-texto-branco no claro e branca-com-texto-preto no
   escuro — sempre no extremo oposto do fundo da página, pra se destacar em
   vez de ficar preta em cima de qualquer coisa nos dois temas. */
.barra-noticias{
  background:var(--tinta);color:var(--base);
  display:flex;align-items:stretch;
  position:relative;overflow:hidden;
}
.barra-noticias-pista{
  flex:1 1 auto;min-width:0;overflow:hidden;
  /* Some suavemente nas duas pontas, em vez de cortar o texto no meio. */
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 28px,#000 calc(100% - 28px),transparent);
          mask-image:linear-gradient(90deg,transparent,#000 28px,#000 calc(100% - 28px),transparent);
}
.barra-noticias-lista{
  display:flex;align-items:stretch;width:max-content;
  list-style:none;margin:0;padding:0;
  animation:barra-rolar var(--barra-duracao,20s) linear infinite;
}
/* Só a PISTA (o texto que rola) pausa por hover/foco — nunca a faixa
   inteira. O botão de pausar fica fora da pista mas dentro de
   .barra-noticias: se o gatilho fosse o container todo, o próprio botão
   ficaria com foco depois do clique (comportamento padrão do navegador ao
   clicar num <button>) e essa regra de :focus-within continuaria pausando
   a rolagem pra sempre — a faixa nunca voltaria a rolar depois de um play
   pelo botão, porque o clique de "continuar" deixa o botão focado. */
.barra-noticias-pista:hover .barra-noticias-lista,
.barra-noticias-pista:focus-within .barra-noticias-lista,
.barra-noticias.pausada .barra-noticias-lista{
  animation-play-state:paused;
}
@keyframes barra-rolar{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}
.barra-item{
  flex:none;display:flex;align-items:center;
  white-space:nowrap;
}
/* Cor do texto atual (--base), com transparência — acerta sozinho nos dois
   temas, já que --base é sempre o que contrasta com --tinta (o fundo daqui). */
.barra-item + .barra-item{border-left:1px solid color-mix(in srgb, currentColor 22%, transparent)}
.barra-item > a,.barra-item > span{
  display:flex;align-items:center;gap:10px;
  padding:10px clamp(14px,3vw,22px);
  color:inherit;text-decoration:none;
}
.barra-item > a:hover .barra-texto{text-decoration:underline}
.barra-texto{font-size:var(--t-pequeno);font-weight:600}
.barra-etiqueta{
  flex:none;padding:4px 10px;border-radius:100px;
  font:700 var(--t-micro)/1 var(--f-texto);letter-spacing:.1em;text-transform:uppercase;
}
/* Cor de texto fixa (não o token --tinta) nestas três: o fundo da etiqueta
   é sempre a cor de marca, nos dois temas — só o --tinta é que inverte de
   claro pra escuro, e texto claro sobre um fundo claro ficaria ilegível. */
.barra-etiqueta--voz{background:var(--voz-claro);color:#1A0E0A}
.barra-etiqueta--azul{background:var(--azul);color:#0A0A0A}
.barra-etiqueta--apoio{background:var(--apoio-a);color:#0A0A0A}
.barra-etiqueta--neutro{background:transparent;border:1px solid currentColor}

.barra-pausar{
  flex:none;width:42px;
  display:grid;place-items:center;
  border:0;border-left:1px solid color-mix(in srgb, currentColor 22%, transparent);
  background:transparent;color:inherit;cursor:pointer;
}
.barra-pausar:hover{background:color-mix(in srgb, currentColor 12%, transparent)}
.barra-pausar svg{width:15px;height:15px;display:block}
.barra-noticias:not(.pausada) .icone-tocar{display:none}
.barra-noticias.pausada .icone-pausar{display:none}

/* Quem prefere menos movimento não recebe nada rolando sozinho: a segunda
   cópia (só decorativa, ver o PHP) some, e o que sobra é uma lista normal —
   rolável com o dedo ou o mouse se não couber na tela, sem animação. */
@media (prefers-reduced-motion:reduce){
  .barra-noticias-lista{animation:none}
  .barra-item[aria-hidden]{display:none}
  .barra-noticias-pista{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .barra-pausar{display:none}
}

/* ---------- cabeçalho ---------- */
.site-header{
  position:sticky;top:0;z-index:100;
  background:var(--base);
  border-bottom:2px solid var(--tinta);
  transition:box-shadow var(--transicao);
}
/* O cabeçalho cria um contexto de empilhamento próprio, e o menu mora dentro
   dele. Sem subir o cabeçalho junto, o fundo escuro do menu seria pintado por
   cima do próprio menu — era isso que deixava as opções embaçadas. */
body.nav-aberto .site-header{z-index:120}
.site-header[data-rolado]{box-shadow:0 6px 24px rgba(0,0,0,.09)}

.header-inner{
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;min-height:72px;padding-block:12px;
}

.marca{
  display:flex;align-items:center;gap:12px;
  text-decoration:none;color:var(--tinta);flex:none;
}
/* As duas peças da marca. A imagem de cada uma vem do painel, injetada no
   <head> de cada página — aqui ficam só a forma e o tamanho. Como são imagens
   de fundo, o navegador baixa apenas a versão do tema que está no ar. */
.marca-simbolo{
  flex:none;display:block;
  background-size:contain;background-repeat:no-repeat;background-position:center;
}
.marca-logotipo{
  flex:none;display:block;
  width:clamp(104px,26vw,134px);aspect-ratio:1400/476;
  background-size:contain;background-repeat:no-repeat;background-position:left center;
}
.logotipo-img{max-width:100%;height:auto;object-fit:contain}
/* Logo enviada pelo painel: continua limitada pela altura, seja ela quadrada
   ou deitada. Só o logotipo desenhado (o nome) recebe largura fixa. */
.logo-rodape{max-height:74px;width:auto;margin-bottom:18px;object-fit:contain}
.simbolo-rodape{width:86px;height:auto;max-height:none}
.logotipo-img.logo-rodape{max-height:none;width:clamp(176px,40vw,232px)}
.footer-legal a{text-decoration-color:var(--azul)}

/* Ações do cabeçalho: troca de tema + hambúrguer (+ o menu, que no celular
   vira gaveta e no desktop entra nesta mesma linha). */
.header-acoes{display:flex;align-items:center;gap:8px;flex:none}

/* Botão de tema: um só, minimalista. Mostra a lua no claro e o sol no escuro,
   ou seja, sempre o destino da troca. */
.botao-tema{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;flex:none;padding:0;
  background:none;border:2px solid var(--linha-forte);border-radius:50%;
  color:var(--tinta);
  transition:border-color var(--transicao),background var(--transicao),transform var(--transicao);
}
.botao-tema:hover{border-color:var(--azul);background:var(--azul-veu)}
.botao-tema:active{transform:scale(.94)}
.botao-tema svg{width:19px;height:19px;display:block}
.botao-tema .icone-sol{display:none}
.botao-tema .icone-lua{display:block}
@media (prefers-color-scheme:dark){
  :root:not([data-tema="claro"]) .botao-tema .icone-sol{display:block}
  :root:not([data-tema="claro"]) .botao-tema .icone-lua{display:none}
}
:root[data-tema="escuro"] .botao-tema .icone-sol{display:block}
:root[data-tema="escuro"] .botao-tema .icone-lua{display:none}

/* Peças que aparecem só num dos temas (usado fora do cabeçalho). */
.so-claro{display:none}
@media (prefers-color-scheme:dark){
  :root:not([data-tema="claro"]) .so-escuro{display:none}
  :root:not([data-tema="claro"]) .so-claro{display:block}
}
:root[data-tema="escuro"] .so-escuro{display:none}
:root[data-tema="escuro"] .so-claro{display:block}

/* botão hambúrguer */
.nav-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:48px;height:48px;flex:none;
  background:none;border:2px solid var(--tinta);border-radius:var(--raio);
  padding:0;
}
.nav-toggle-barras{display:flex;flex-direction:column;gap:5px;width:22px}
.nav-toggle-barras span{
  display:block;height:2px;width:100%;background:var(--tinta);
  transition:transform var(--transicao),opacity var(--transicao);
}
.nav-toggle[aria-expanded="true"] .nav-toggle-barras span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] .nav-toggle-barras span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] .nav-toggle-barras span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* menu — gaveta no celular */
.nav-principal{
  position:fixed;inset:0 0 0 auto;
  width:min(86vw,360px);
  background:var(--base);
  border-left:2px solid var(--tinta);
  padding:calc(84px + env(safe-area-inset-top,0px)) var(--gutter) calc(32px + env(safe-area-inset-bottom,0px));
  display:flex;flex-direction:column;gap:8px;
  transform:translateX(100%);
  transition:transform 240ms cubic-bezier(.2,.7,.3,1);
  z-index:110;
  overflow-y:auto;
  overscroll-behavior:contain;
  box-shadow:-12px 0 40px rgba(0,0,0,.28);
}
.nav-principal[data-aberto]{transform:translateX(0)}

.nav-lista{display:flex;flex-direction:column;gap:2px}
.nav-lista a{
  display:block;padding:14px 0;
  font:700 clamp(17px,4.4vw,20px)/1.15 var(--f-display);
  text-transform:uppercase;letter-spacing:-0.01em;
  text-decoration:none;color:var(--tinta);
  border-bottom:1px solid var(--linha);
  transition:color var(--transicao),padding-left var(--transicao);
}
.nav-lista a:hover{color:var(--azul-tinta);padding-left:6px}
.nav-lista a[aria-current="page"]{color:var(--azul-tinta)}

.nav-cta{margin-top:20px;width:100%}

.nav-fundo{
  position:fixed;inset:0;z-index:105;
  background:rgba(10,10,10,.55);
  border:0;
}
.nav-fundo[hidden]{display:none}

/* ---------- cabeçalho de página ---------- */
.pagina-header{padding-block:clamp(36px,8vw,72px) clamp(24px,5vw,40px)}
.pagina-header h1{margin-bottom:18px}
.pagina-intro{
  max-width:56ch;font-size:var(--t-medio);
  color:var(--texto-medio);line-height:1.5;
}

/* ---------- hero ---------- */
.hero{
  display:grid;gap:clamp(28px,5vw,48px);
  padding-block:clamp(36px,7vw,80px);
  align-items:center;
}
.hero h1{font-size:var(--t-hero);margin-bottom:20px}
.hero p{
  font-size:var(--t-medio);color:var(--texto-medio);
  max-width:44ch;margin-bottom:26px;line-height:1.5;
}
.hero-figura img,.hero-figura .area-foto{
  width:100%;border-radius:var(--raio);object-fit:cover;
}

/* ---------- área de foto vazia ---------- */
.area-foto{
  width:100%;
  display:flex;align-items:center;justify-content:center;
  text-align:center;
  background:
    repeating-linear-gradient(135deg,var(--linha) 0 10px,transparent 10px 20px),
    var(--papel);
  color:var(--texto-suave);
  font:600 var(--t-micro)/1.4 var(--f-texto);
  letter-spacing:.16em;text-transform:uppercase;
  border-radius:var(--raio);
  padding:16px;
}

/* ---------- grades de cards ---------- */
.grid-cards{display:grid;gap:var(--gap);grid-template-columns:1fr}
.grid-cards.colunas-2{grid-template-columns:1fr}
.grid-cards.colunas-4{grid-template-columns:repeat(2,1fr)}

.card{
  display:flex;flex-direction:column;gap:10px;
  text-decoration:none;color:inherit;
  background:var(--base);
  border:1px solid var(--linha);
  border-radius:var(--raio);
  padding:14px;
  transition:transform var(--transicao),box-shadow var(--transicao),border-color var(--transicao);
  height:100%;
}
a.card:hover{transform:translateY(-3px);box-shadow:0 10px 30px rgba(0,0,0,.08);border-color:var(--linha-forte)}
.card img,.card .area-foto{width:100%;object-fit:cover;border-radius:4px}
.card .card-titulo{
  font-family:var(--f-display);text-transform:uppercase;
  font-size:var(--t-h3);line-height:1;letter-spacing:-0.01em;
}
.card .card-linha{font-size:var(--t-pequeno);color:var(--texto-suave);line-height:1.5}
.card .rotulo{color:var(--voz)}
.card .card-meta{
  font-size:var(--t-micro);color:var(--texto-suave);
  display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:auto;padding-top:6px;
}
.card .card-meta .ponto{opacity:.5}

/* cards de matéria (blog) usam título em fonte de texto, mais legível em bloco longo */
.card-post .card-titulo{
  font-family:var(--f-texto);font-weight:800;
  text-transform:none;letter-spacing:-0.01em;line-height:1.25;
  font-size:var(--t-medio);
}

/* ---------- agenda ---------- */
.faixa-agenda{display:flex;flex-direction:column;border-top:1px solid var(--linha)}
.faixa-agenda li{
  display:grid;grid-template-columns:1fr;gap:4px;
  padding-block:16px;border-bottom:1px solid var(--linha);
}
.faixa-agenda .data{
  font:700 var(--t-micro)/1.3 var(--f-texto);
  letter-spacing:.12em;text-transform:uppercase;color:var(--voz);
}
.faixa-agenda .titulo{font-size:var(--t-medio);font-weight:600;line-height:1.3}
.faixa-agenda .local{font-size:var(--t-pequeno);color:var(--texto-suave)}
.faixa-agenda .acao{margin-top:6px}

/* ---------- números ---------- */
.grid-numeros{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,3vw,28px)}
.grid-numeros > div{border-top:3px solid var(--tinta);padding-top:14px}
.numero{
  font-family:var(--f-display);
  font-size:clamp(30px,8vw,60px);line-height:0.9;
  font-variant-numeric:tabular-nums;
}
.numero-rotulo{
  font:600 var(--t-micro)/1.35 var(--f-texto);
  letter-spacing:.12em;text-transform:uppercase;color:var(--texto-suave);
  margin-top:8px;
}

/* ---------- blocos escuros ---------- */
.bloco-escuro{
  background:var(--escuro-fundo);color:var(--escuro-texto);
  border-radius:var(--raio);
  padding:clamp(22px,5vw,44px);
  display:flex;flex-direction:column;gap:20px;
}
.bloco-escuro h2,.bloco-escuro h3{color:var(--escuro-texto)}
.bloco-escuro .rotulo{color:var(--apoio-a)}
.bloco-escuro p{color:var(--escuro-suave);font-size:var(--t-pequeno)}

/* ---------- vídeo ---------- */
.video-embed{
  position:relative;width:100%;aspect-ratio:16/9;
  background:#101012;border-radius:var(--raio);overflow:hidden;
}
.video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* Capa do vídeo: o que aparece no lugar do player até alguém clicar.
   Vale em qualquer lugar da página, não só dentro de um card. */
.capa-video{
  position:relative;display:block;width:100%;cursor:pointer;
  border-radius:var(--raio);overflow:hidden;background:#101012;
}
.capa-video img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.capa-video-vazia{display:block;width:100%;background:#101012}
.card-video .capa-video{border-radius:4px}
.play-marca{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(10,10,10,.25);transition:background var(--transicao);
}
.play-marca span{
  width:54px;height:54px;border-radius:50%;
  background:var(--base);color:var(--tinta);
  display:flex;align-items:center;justify-content:center;
  font-size:20px;padding-left:4px;
  box-shadow:0 4px 18px rgba(0,0,0,.3);
  transition:transform var(--transicao);
}
/* No hover a capa só escurece um pouco e o botão cresce. Antes ela ganhava um
   véu azul que parecia defeito de renderização. */
.capa-video:hover .play-marca,a.card-video:hover .play-marca{background:rgba(10,10,10,.42)}
.capa-video:hover .play-marca span{transform:scale(1.08)}
.capa-video:focus-visible{outline:3px solid var(--azul-tinta);outline-offset:3px}

/* O player entra na página assim que a pessoa clica (ver ligarVideos() em
   site.js), mas começa transparente — só aparece quando o vídeo já carregou
   de verdade. Até lá, quem está vendo continua com a capa na tela (nunca um
   vazio/branco), com um símbolo de carregando no lugar do play. */
.capa-video>iframe{
  position:absolute;inset:0;width:100%;height:100%;border:0;
  opacity:0;transition:opacity var(--transicao);
}
.capa-video[data-carregando]{cursor:progress}
.capa-video[data-carregando] .play-marca{background:rgba(10,10,10,.55)}
.capa-video[data-carregando] .play-marca span{
  background:transparent;box-shadow:none;color:transparent;position:relative;
}
.capa-video[data-carregando] .play-marca span::before{
  content:'';position:absolute;inset:8px;border-radius:50%;
  border:3px solid rgba(255,255,255,.35);border-top-color:#fff;
  animation:capa-video-girar .8s linear infinite;
}
@keyframes capa-video-girar{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  .capa-video[data-carregando] .play-marca span::before{animation-duration:2.4s}
}
/* Vídeo pronto: a capa vira mesmo o player (ver classe video-embed que o JS
   acrescenta), a foto/o play somem e o iframe (já carregado) aparece. */
.capa-video[data-video-pronto] img,
.capa-video[data-video-pronto] .capa-video-vazia,
.capa-video[data-video-pronto] .play-marca{display:none}
.capa-video[data-video-pronto]>iframe{opacity:1}

/* Vídeo começa mudo pra garantir o autoplay em qualquer aparelho (ver
   site.js) — esse botão fica bem no meio do player pra ligar o som num
   toque só, já que o controle de som do YouTube/Vimeo é pequeno demais e
   passa despercebido numa tela de celular. Fundo em --azul (cor de marca,
   sempre clara/vibrante nos dois temas — por isso cor fixa, não
   var(--tinta)/--base) pra destacar bem do vídeo, que é sempre escuro; o
   texto sobre esse fundo também é cor fixa (#0A0A0A), mesmo motivo de
   sempre (ver .barra-etiqueta--azul). Um pulso sutil chama atenção sem
   atrapalhar — para com prefers-reduced-motion. */
.botao-ativar-som-video{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:2;
  display:inline-flex;align-items:center;gap:10px;min-height:52px;
  padding:0 24px;border:0;border-radius:100px;
  background:var(--azul);color:#0A0A0A;
  font:700 17px/1 var(--f-texto);cursor:pointer;white-space:nowrap;
  box-shadow:0 6px 22px rgba(0,0,0,.5);
  animation:botao-som-pulso 1.8s ease-out infinite;
  transition:background var(--transicao);
}
.botao-ativar-som-video svg{flex:none;width:24px;height:24px}
.botao-ativar-som-video:hover{background:#fff}
.botao-ativar-som-video:active{transform:translate(-50%,-50%) scale(.95)}
.botao-ativar-som-video:focus-visible{outline:3px solid #fff;outline-offset:3px}
@keyframes botao-som-pulso{
  0%,100%{box-shadow:0 6px 22px rgba(0,0,0,.5),0 0 0 0 rgba(55,198,221,.6)}
  50%{box-shadow:0 6px 22px rgba(0,0,0,.5),0 0 0 16px rgba(55,198,221,0)}
}
@media (prefers-reduced-motion:reduce){
  .botao-ativar-som-video{animation:none}
}
@media (max-width:420px){
  .botao-ativar-som-video{padding:0 18px;font-size:15px;gap:8px;min-height:46px}
  .botao-ativar-som-video svg{width:20px;height:20px}
}

/* ---------- som / tocador ----------
   Lista enxuta no estilo de um aplicativo de música: cada linha é a faixa,
   e quem toca é uma barra só, presa no rodapé da tela. */
.tocador{border-top:2px solid var(--tinta)}
.tocador-lista{display:block}
.faixa{
  display:grid;
  grid-template-columns:auto auto minmax(0,1fr) auto;
  grid-template-areas:'acionar capa texto texto' 'acionar capa links duracao';
  align-items:center;column-gap:10px;row-gap:4px;
  padding:10px 8px;border-bottom:1px solid var(--linha);
  border-radius:var(--raio);
  transition:background var(--transicao);
}
.faixa:hover{background:var(--papel)}
.faixa[data-tocando]{background:var(--azul-veu)}

.faixa-acionar{
  grid-area:acionar;
  display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;flex:none;padding:0;
  background:none;border:0;border-radius:50%;color:var(--tinta);
  transition:background var(--transicao),color var(--transicao);
}
.faixa-acionar-vazio{color:var(--texto-suave)}
.faixa-indice{font:600 var(--t-pequeno)/1 var(--f-texto);font-variant-numeric:tabular-nums;color:var(--texto-suave)}
.faixa-icone{display:none;align-items:center;justify-content:center}
.faixa-icone .icone-pause,.faixa-ondas{display:none}
.faixa:hover .faixa-acionar{background:var(--tinta);color:var(--base)}
.faixa:hover .faixa-indice{display:none}
.faixa:hover .faixa-icone{display:inline-flex}
.faixa:hover .icone-play{display:block}

/* Faixa no ar: o número vira três barrinhas azuis que pulsam. */
.faixa[data-tocando] .faixa-indice{display:none}
.faixa[data-tocando] .faixa-icone{display:inline-flex}
.faixa[data-tocando] .icone-play{display:none}
.faixa[data-tocando] .faixa-ondas{display:inline-flex;align-items:flex-end;gap:2px;height:15px}
.faixa[data-tocando] .faixa-ondas i{display:block;width:3px;background:var(--azul-tinta);border-radius:1px;animation:onda-som .9s ease-in-out infinite}
.faixa[data-tocando] .faixa-ondas i:nth-child(1){height:7px;animation-delay:-.6s}
.faixa[data-tocando] .faixa-ondas i:nth-child(2){height:15px;animation-delay:-.3s}
.faixa[data-tocando] .faixa-ondas i:nth-child(3){height:10px}
.faixa[data-tocando]:hover .faixa-acionar{background:none;color:var(--tinta)}
.faixa[data-tocando][data-pausado] .faixa-ondas{display:none}
.faixa[data-tocando][data-pausado] .icone-play{display:block}
@keyframes onda-som{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1)}}
@media (prefers-reduced-motion:reduce){
  .faixa[data-tocando] .faixa-ondas i{animation:none}
}

.faixa-capa{
  grid-area:capa;width:46px;height:46px;flex:none;
  border-radius:4px;object-fit:cover;background:var(--papel);
}
.faixa-capa-vazia{
  display:inline-flex;align-items:center;justify-content:center;
  color:var(--texto-suave);border:1px solid var(--linha);
}
.faixa-texto{grid-area:texto;min-width:0}
.faixa-nome{font-weight:700;font-size:var(--t-corpo);line-height:1.3;overflow-wrap:anywhere}
.faixa[data-tocando] .faixa-nome{color:var(--azul-tinta)}
.faixa-legenda{font-size:var(--t-pequeno);color:var(--texto-suave);line-height:1.35}
.faixa-duracao{
  grid-area:duracao;font-size:var(--t-pequeno);color:var(--texto-suave);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.faixa-links{grid-area:links;display:flex;flex-wrap:wrap;gap:14px;align-items:center;min-width:0}
.faixa-links a{
  font:600 var(--t-micro)/1 var(--f-texto);letter-spacing:.1em;text-transform:uppercase;
  color:var(--texto-suave);text-decoration:none;
  border-bottom:1px solid transparent;padding-bottom:3px;
  transition:color var(--transicao),border-color var(--transicao);
}
.faixa-links a:hover{color:var(--azul-tinta);border-bottom-color:var(--azul)}
.faixa-sem-audio .faixa-nome{color:var(--texto-medio)}
.faixa noscript audio{grid-area:links;width:100%;margin-top:8px}

/* Barra do tocador — presa embaixo, como num aplicativo de música. */
.barra-som{
  position:fixed;left:0;right:0;bottom:0;z-index:130;
  background:var(--escuro-fundo);color:var(--escuro-texto);
  border-top:2px solid var(--azul);
  padding:10px var(--gutter) max(10px,env(safe-area-inset-bottom,0px));
  box-shadow:0 -10px 30px rgba(0,0,0,.25);
}
.barra-som[hidden]{display:none}
.barra-som-interna{
  width:100%;max-width:var(--maxw);margin-inline:auto;
  display:grid;grid-template-columns:1fr auto;align-items:center;
  column-gap:12px;row-gap:8px;
}
.barra-som-agora{display:flex;align-items:center;gap:10px;min-width:0}
.barra-som-capa{
  width:44px;height:44px;flex:none;border-radius:4px;object-fit:cover;
  background:#1E1C1A;
}
.barra-som-capa-vazia{display:inline-flex;align-items:center;justify-content:center;color:#6E6A65}
.barra-som-capa[hidden],.barra-som-capa-vazia[hidden]{display:none}
.barra-som-texto{display:flex;flex-direction:column;min-width:0;gap:2px}
.barra-som-nome{
  font-weight:700;font-size:var(--t-pequeno);line-height:1.25;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.barra-som-legenda{
  font-size:var(--t-micro);color:#9B9791;line-height:1.25;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.barra-som-centro{grid-column:1/-1;order:3;display:flex;flex-direction:column;gap:6px}
.barra-som-controles{display:flex;align-items:center;justify-content:center;gap:6px}
.barra-som-linha{display:flex;align-items:center;gap:10px}
.barra-som-tempo{
  font:600 var(--t-micro)/1 var(--f-texto);color:#9B9791;
  font-variant-numeric:tabular-nums;flex:none;min-width:34px;
}
.barra-som-tempo:last-child{text-align:right}
.barra-som-direita{display:flex;align-items:center;gap:4px;flex:none}
.barra-som-contador{
  font:600 var(--t-micro)/1 var(--f-texto);letter-spacing:.08em;
  color:#9B9791;font-variant-numeric:tabular-nums;white-space:nowrap;
  padding-right:4px;
}

.botao-som{
  display:inline-flex;align-items:center;justify-content:center;position:relative;
  width:40px;height:40px;flex:none;padding:0;
  /* A barra do tocador é sempre escura (ver --escuro-fundo), nos dois temas —
     por isso os ícones usam --escuro-texto (fixo, sempre claro), nunca
     --tinta/--base: esses dois invertem no escuro e o ícone (antes branco)
     virava quase preto sobre o fundo quase preto da barra, ficando invisível. */
  background:none;border:0;border-radius:50%;color:var(--escuro-texto);
  transition:background var(--transicao),color var(--transicao),transform var(--transicao);
}
.botao-som:hover{background:rgba(255,255,255,.12)}
.botao-som:active{transform:scale(.94)}
.botao-som .icone-pause{display:none}
.botao-som-principal{
  width:46px;height:46px;background:var(--escuro-texto);color:var(--escuro-fundo);
}
.botao-som-principal:hover{background:var(--azul);color:#0A0A0A}
.barra-som[data-tocando] .botao-som-principal .icone-play{display:none}
.barra-som[data-tocando] .botao-som-principal .icone-pause{display:block}
.botao-som[data-modo="todas"],.botao-som[data-modo="uma"]{color:var(--azul)}
.botao-som .marca-um{
  position:absolute;right:3px;bottom:2px;display:none;
  font:700 9px/1.1 var(--f-texto);
  /* Selo com fundo de cor de marca fixa (--azul, não inverte) — o texto tem
     que ser uma cor literal, não var(--tinta), pelo mesmo motivo de sempre
     (ver .barra-etiqueta--azul): tinta vira quase-branco no escuro e ficaria
     ilegível sobre o azul claro. O anel usa --escuro-fundo (não --tinta) pra
     se misturar com o fundo sempre-escuro da barra nos dois temas. */
  background:var(--azul);color:#0A0A0A;
  border-radius:100px;padding:2px 4px;
  box-shadow:0 0 0 2px var(--escuro-fundo);
}
.botao-som[data-modo="uma"] .marca-um{display:block}
.botao-som-fechar{width:34px;height:34px;color:#9B9791}

.barra-som-progresso{
  -webkit-appearance:none;appearance:none;
  flex:1;min-width:0;height:18px;background:none;margin:0;cursor:pointer;
}
.barra-som-progresso::-webkit-slider-runnable-track{
  height:5px;border-radius:100px;
  background:linear-gradient(to right,var(--azul) 0 var(--pct,0%),rgba(255,255,255,.22) var(--pct,0%) 100%);
}
.barra-som-progresso::-moz-range-track{height:5px;border-radius:100px;background:rgba(255,255,255,.22)}
.barra-som-progresso::-moz-range-progress{height:5px;border-radius:100px;background:var(--azul)}
.barra-som-progresso::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;
  width:13px;height:13px;border-radius:50%;background:var(--escuro-texto);
  border:0;margin-top:-4px;
}
.barra-som-progresso::-moz-range-thumb{
  width:13px;height:13px;border-radius:50%;background:var(--escuro-texto);border:0;
}
.barra-som-progresso:focus-visible{outline:3px solid var(--azul);outline-offset:4px;border-radius:100px}

/* Espaço no fim da página pra barra não cobrir o rodapé. */
body.com-barra-som{padding-bottom:150px}
body.com-barra-som .botao-topo{bottom:max(160px,calc(150px + env(safe-area-inset-bottom,0px)))}

/* ---------- listas de documentos / biblioteca ---------- */
.lista-documentos{display:flex;flex-direction:column;gap:0;border-top:1px solid var(--linha)}
.item-documento{
  display:flex;flex-direction:column;gap:12px;
  padding-block:18px;border-bottom:1px solid var(--linha);
}
.item-documento .titulo{font-weight:700;font-size:var(--t-medio);line-height:1.3}
.item-documento .desc{font-size:var(--t-pequeno);color:var(--texto-medio)}
.item-documento .meta{
  font:600 var(--t-micro)/1 var(--f-texto);
  letter-spacing:.1em;text-transform:uppercase;color:var(--texto-suave);
}
.item-documento .acao{flex:none}

/* ---------- filtros e paginação ---------- */
.filtro-categorias{
  display:flex;gap:8px;flex-wrap:wrap;
  padding-block:8px 24px;
}
.filtro-categorias a{
  padding:9px 14px;border:1px solid var(--linha-forte);border-radius:100px;
  font:600 var(--t-micro)/1 var(--f-texto);
  letter-spacing:.1em;text-transform:uppercase;
  text-decoration:none;color:var(--texto-medio);
  transition:background var(--transicao),color var(--transicao),border-color var(--transicao);
}
.filtro-categorias a:hover{border-color:var(--tinta);color:var(--tinta)}
.filtro-categorias a[aria-current="true"]{background:var(--tinta);border-color:var(--tinta);color:var(--base)}

.paginacao{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;padding-block:32px}
.paginacao a,.paginacao span{
  min-width:44px;min-height:44px;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--linha-forte);border-radius:var(--raio);
  text-decoration:none;font-weight:600;
}
.paginacao span[aria-current]{background:var(--tinta);color:var(--base);border-color:var(--tinta)}

/* ---------- artigo (blog) ---------- */
.artigo-header{padding-block:clamp(28px,6vw,56px) 20px;max-width:var(--maxw-texto)}
.artigo-header h1{
  font-family:var(--f-texto);font-weight:800;text-transform:none;
  font-size:clamp(27px,6.6vw,46px);line-height:1.1;letter-spacing:-0.02em;
  margin-block:12px 16px;
}
.artigo-meta{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  font-size:var(--t-pequeno);color:var(--texto-suave);
}
.artigo-meta .ponto{opacity:.5}
.artigo-capa{width:100%;border-radius:var(--raio);overflow:hidden;margin-bottom:10px}
.artigo-capa img{width:100%;aspect-ratio:16/9;object-fit:cover}

.artigo-corpo{max-width:var(--maxw-texto);padding-block:clamp(20px,4vw,32px)}
.artigo-corpo p{margin-bottom:1.15em;font-size:var(--t-medio);line-height:1.68;color:var(--texto-medio)}
.artigo-corpo h2{font-size:var(--t-grande);margin:1.6em 0 .6em}
.artigo-corpo h3{font-size:var(--t-h3);margin:1.4em 0 .5em}
.artigo-corpo a{color:var(--azul-tinta);text-underline-offset:3px;text-decoration-color:var(--azul)}
.artigo-corpo .video-embed{margin-block:1.6em}

.artigo-tags{display:flex;flex-wrap:wrap;gap:8px;max-width:var(--maxw-texto);padding-bottom:24px}
.artigo-tags span{
  padding:6px 12px;border-radius:100px;background:var(--papel);
  font:600 var(--t-micro)/1 var(--f-texto);letter-spacing:.1em;text-transform:uppercase;
  color:var(--texto-suave);
}

/* ---------- projeto ---------- */
.projeto-header{padding-block:clamp(28px,6vw,56px) 20px}
.projeto-header .status{
  display:inline-block;margin-bottom:14px;
  padding:6px 12px;border-radius:100px;background:var(--voz);color:#fff;
  font:600 var(--t-micro)/1 var(--f-texto);letter-spacing:.12em;text-transform:uppercase;
}
.projeto-header .sintese{
  font-size:var(--t-medio);color:var(--texto-medio);
  max-width:50ch;margin-top:16px;line-height:1.5;
}
.projeto-capa{width:100%;border-radius:var(--raio);overflow:hidden}
.projeto-capa img{width:100%;aspect-ratio:16/9;object-fit:cover}
.projeto-corpo{display:grid;gap:clamp(24px,5vw,48px)}
.ficha-tecnica{
  background:var(--papel);border-radius:var(--raio);
  padding:clamp(18px,4vw,26px);align-self:start;
}
.ficha-tecnica dl{margin:12px 0 0;display:flex;flex-direction:column;gap:12px}
.ficha-tecnica dt{
  font:600 var(--t-micro)/1.3 var(--f-texto);
  letter-spacing:.12em;text-transform:uppercase;color:var(--texto-suave);
}
.ficha-tecnica dd{margin:2px 0 0;font-size:var(--t-pequeno);font-weight:600}

/* ---------- carrossel de fotos ----------
   A fita rola de verdade (scroll nativo com encaixe). No celular arrastar já
   funciona sem JavaScript nenhum; o JavaScript só acrescenta setas, pontinhos,
   contador e a legenda que troca sozinha.
   O sinal de que há mais foto é a beirada: a próxima aparece espiando à
   direita. É o aviso mais silencioso que existe — a pessoa entende sem ler. */
.carrossel{
  margin:0;
  /* quanto da próxima foto fica aparecendo na beirada */
  --espia:clamp(20px,5vw,52px);
}
.carrossel-palco{position:relative}
.carrossel-fita{
  display:flex;gap:10px;align-items:flex-start;
  overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
  border-radius:var(--raio);
  /* a fita sangra até a borda da tela no celular, sem quebrar o container */
  margin-inline:calc(var(--gutter) * -1);
  padding-inline:var(--gutter);
  scroll-padding-inline:var(--gutter);
}
.carrossel-fita::-webkit-scrollbar{display:none}
.carrossel-fita:focus-visible{outline:2px solid var(--azul-tinta);outline-offset:3px}
.carrossel-slide{
  flex:0 0 calc(100% - var(--espia));
  scroll-snap-align:start;
  border-radius:var(--raio);overflow:hidden;
  background:var(--papel);
  /* A proporção mora no slide, não na foto: assim o espaço já está reservado
     mesmo antes de a foto adiada ser baixada, e nada pula de lugar. */
  aspect-ratio:16/9;
}
/* A última encaixa pela direita: sem isso o navegador não deixa a rolagem
   parar nela (ela nunca alcança a borda esquerda) e a fita volta sozinha. */
.carrossel-slide:last-child{scroll-snap-align:end}
.carrossel-slide img{width:100%;height:100%;object-fit:cover;display:block}
/* Foto que ainda não foi baixada: some até o JavaScript pedir o arquivo.
   Sem JavaScript ela nunca aparece — quem entra é a cópia do <noscript>. */
.foto-adiada{display:none}

/* Setas: só aparecem onde existe mouse, e só quando há pra onde ir. */
.carrossel-seta{
  position:absolute;top:50%;translate:0 -50%;
  width:40px;height:40px;border-radius:100px;border:0;
  display:none;place-items:center;cursor:pointer;
  background:rgba(10,10,10,.55);color:#fff;
  font-size:22px;line-height:1;padding:0 0 2px;
  backdrop-filter:blur(3px);
  opacity:0;transition:opacity .18s,background .18s;
}
.carrossel-seta span{display:block;translate:0 -1px}
.carrossel-antes{left:10px}
.carrossel-depois{right:calc(var(--espia) + 10px)}
.carrossel-seta:hover{background:rgba(10,10,10,.78)}
.carrossel-seta:focus-visible{opacity:1;outline:2px solid #fff;outline-offset:2px}
@media (hover:hover) and (min-width:760px){
  .carrossel-seta:not([hidden]){display:grid}
  .carrossel-palco:hover .carrossel-seta:not([hidden]){opacity:1}
}

/* Rodapé: legenda de um lado, pontinhos e contador do outro.
   A altura mínima segura duas linhas de legenda pra página não pular
   de tamanho quando a foto troca. */
.carrossel-rodape{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:16px;flex-wrap:wrap;
  padding-top:12px;
}
.carrossel-legenda{
  margin:0;flex:1 1 260px;min-height:2.9em;
  font-size:var(--t-pequeno);line-height:1.45;color:var(--texto-suave);
  max-width:62ch;
}
.carrossel-unica .carrossel-legenda{min-height:0;padding-top:10px}
.carrossel-navegacao{display:flex;align-items:center;gap:14px;flex:none;padding-top:2px}
.carrossel-pontos{display:flex;align-items:center;gap:7px}
.carrossel-ponto{
  border:0;background:none;padding:6px 1px;cursor:pointer;line-height:0;
}
.carrossel-ponto span{
  display:block;width:7px;height:7px;border-radius:100px;
  background:var(--linha-forte);
  transition:background .2s,width .2s;
}
.carrossel-ponto:hover span{background:var(--texto-suave)}
.carrossel-ponto.ativo span{background:var(--azul-tinta);width:20px}
.carrossel-ponto:focus-visible{outline:2px solid var(--azul-tinta);outline-offset:1px;border-radius:3px}
.carrossel-contador{
  font:600 var(--t-micro)/1 var(--f-texto);letter-spacing:.1em;
  color:var(--texto-suave);font-variant-numeric:tabular-nums;white-space:nowrap;
}
.carrossel-contador span[aria-hidden]{margin:0 2px;opacity:.55}

@media (prefers-reduced-motion:reduce){
  .carrossel-fita{scroll-behavior:auto}
  .carrossel-ponto span{transition:none}
}

/* No escuro o azul-tinta (versão escurecida, feita pra ler sobre branco) fica
   apagado demais no pontinho. Volta pro azul da marca. */
@media (prefers-color-scheme:dark){
  :root:not([data-tema="claro"]) .carrossel-ponto.ativo span{background:var(--azul)}
}
:root[data-tema="escuro"] .carrossel-ponto.ativo span{background:var(--azul)}

/* ---------- pessoas ---------- */
.grid-pessoas{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--gap)}
.card-pessoa{display:flex;flex-direction:column;gap:8px}
.card-pessoa img,.card-pessoa .area-foto{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--raio)}
/* Formato escolhido no painel (Quem Somos → "Formato das fotos de Pessoas").
   Sem essa classe, mantém o quadrado (com cantos arredondados) de sempre. */
.pessoas-circulo .card-pessoa img,.pessoas-circulo .card-pessoa .area-foto{border-radius:50%}
.card-pessoa .nome{font-weight:800;font-size:var(--t-pequeno);line-height:1.25}
.card-pessoa .funcao{font-size:var(--t-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--voz)}
.card-pessoa .linha{font-size:var(--t-pequeno);color:var(--texto-suave);line-height:1.45}
.subgrupo-titulo{
  font:600 var(--t-micro)/1 var(--f-texto);
  letter-spacing:.16em;text-transform:uppercase;color:var(--texto-suave);
  margin:clamp(24px,5vw,40px) 0 16px;
}

/* ---------- metodologias ---------- */
.grid-metodologias{display:grid;gap:var(--gap);grid-template-columns:1fr}
.card-metodologia{
  border:1px solid var(--linha);border-left:4px solid var(--azul);
  border-radius:var(--raio);padding:clamp(18px,4vw,26px);
  display:flex;flex-direction:column;gap:10px;
}
.card-metodologia h3{font-size:var(--t-grande)}
.card-metodologia p{font-size:var(--t-pequeno);color:var(--texto-medio);line-height:1.55}

/* ---------- contato ---------- */
.grid-contato{display:grid;gap:clamp(24px,5vw,48px);grid-template-columns:1fr}
.form-contato{display:flex;flex-direction:column;gap:16px}
.form-contato label{
  display:block;margin-bottom:6px;
  font:600 var(--t-micro)/1 var(--f-texto);
  letter-spacing:.12em;text-transform:uppercase;
}
.form-contato input[type="text"],
.form-contato input[type="email"],
.form-contato select,
.form-contato textarea{
  width:100%;padding:13px 14px;min-height:48px;
  border:2px solid var(--linha-forte);border-radius:var(--raio);
  background:var(--base);color:var(--tinta);
  transition:border-color var(--transicao);
}
.form-contato input:focus,.form-contato select:focus,.form-contato textarea:focus{border-color:var(--azul-tinta);box-shadow:0 0 0 3px var(--azul-veu)}
.form-contato textarea{min-height:150px;resize:vertical}
.bloco-contato-direto{
  background:var(--papel);border-radius:var(--raio);
  padding:clamp(20px,4vw,30px);
  display:flex;flex-direction:column;gap:22px;align-self:start;
}
.bloco-contato-direto a{color:var(--azul-tinta);font-weight:600;text-underline-offset:3px;word-break:break-word}

.aceite{
  display:flex;gap:10px;align-items:flex-start;
  font-size:var(--t-pequeno);line-height:1.45;
  text-transform:none;letter-spacing:0;font-weight:400;
  color:var(--texto-suave);
}
.aceite input{width:20px;height:20px;flex:none;margin-top:2px;accent-color:var(--azul-tinta)}

.aviso-envio{font-size:var(--t-pequeno);margin-top:10px;font-weight:600}
.aviso-envio.ok{color:#1F7A3D}
.aviso-envio.erro{color:var(--voz)}

/* ---------- apoiadores ---------- */
/* Antes as logos saíam com 36px de altura fixa — pequenas demais pra dar
   visibilidade pros apoiadores, no site e no celular. Agora escala com a
   tela (clamp), sempre maior que antes mesmo no menor celular. */
.logos-parceiros{display:flex;flex-wrap:wrap;gap:clamp(20px,4vw,32px);align-items:center}
.logos-parceiros img{height:clamp(48px,7vw,72px);width:auto;max-width:220px;object-fit:contain}
.logos-parceiros span{
  font:600 var(--t-micro)/1 var(--f-texto);letter-spacing:.1em;text-transform:uppercase;
  color:var(--texto-suave);border:1px dashed var(--linha-forte);border-radius:4px;padding:10px 14px;
}

/* ---------- rodapé ---------- */
.site-footer{
  background:var(--escuro-fundo);color:var(--escuro-texto);
  margin-top:clamp(56px,10vw,110px);
}
.footer-inner{
  display:grid;grid-template-columns:1fr;gap:clamp(30px,5vw,44px);
  padding-block:clamp(40px,8vw,72px) 32px;
}
.footer-newsletter h2{font-size:var(--t-grande);margin:10px 0 12px;max-width:22ch}
.footer-texto{color:var(--escuro-suave);font-size:var(--t-pequeno);line-height:1.55;max-width:44ch}
.form-newsletter{display:flex;flex-direction:column;gap:14px;margin-top:20px;max-width:460px}
.campo-email{display:flex;flex-direction:column;gap:10px}
.form-newsletter input[type="email"]{
  width:100%;padding:13px 14px;min-height:48px;
  border:2px solid var(--escuro-texto);border-radius:var(--raio);
  background:transparent;color:var(--escuro-texto);
}
.form-newsletter input[type="email"]::placeholder{color:#9A958E}
.form-newsletter .aceite{color:var(--escuro-suave)}
.form-newsletter .aviso-envio.ok{color:#8FD6A5}
.form-newsletter .aviso-envio.erro{color:var(--voz-claro)}

.footer-nav,.footer-redes{display:flex;flex-direction:column;gap:12px}
.footer-nav a,.footer-redes a{
  text-decoration:none;color:var(--escuro-texto);
  font-size:var(--t-pequeno);font-weight:600;
  width:fit-content;padding-block:2px;
  border-bottom:1px solid transparent;
  transition:border-color var(--transicao),color var(--transicao);
}
.footer-nav a:hover,.footer-redes a:hover{border-bottom-color:var(--azul);color:var(--azul)}
.footer-nav .rotulo,.footer-redes .rotulo{margin-bottom:4px}

.footer-legal{
  grid-column:1/-1;border-top:1px solid #2C2A28;
  margin-top:8px;padding-top:22px;
}
.footer-legal p{font-size:var(--t-micro);line-height:1.7;color:#8E8A84;margin-bottom:6px}
.footer-legal a{color:var(--escuro-suave);word-break:break-word}

/* ---------- voltar ao topo ---------- */
.botao-topo{
  position:fixed;right:16px;z-index:90;
  bottom:max(16px,env(safe-area-inset-bottom,0px));
  width:48px;height:48px;border-radius:50%;
  background:var(--escuro-fundo);color:var(--escuro-texto);
  border:2px solid var(--escuro-texto);
  display:flex;align-items:center;justify-content:center;
  font-size:19px;
  opacity:0;visibility:hidden;transform:translateY(10px);
  transition:opacity var(--transicao),transform var(--transicao),background var(--transicao);
  box-shadow:0 4px 18px rgba(0,0,0,.3);
}
.botao-topo[data-visivel]{opacity:1;visibility:visible;transform:translateY(0)}
.botao-topo:hover{background:var(--azul-tinta)}

/* ---------- marcações de conteúdo de exemplo ---------- */
[data-placeholder="true"]{
  outline:1px dashed var(--linha-forte);outline-offset:6px;border-radius:2px;
}
.tag-exemplo{
  display:inline-block;
  font:700 9.5px/1 var(--f-texto);letter-spacing:.14em;text-transform:uppercase;
  color:var(--voz);background:rgba(181,83,60,.1);
  padding:4px 8px;border-radius:3px;margin-bottom:8px;
}
.aviso-vazio{
  padding:clamp(20px,4vw,28px);background:var(--papel);border-radius:var(--raio);
  color:var(--texto-suave);font-size:var(--t-pequeno);
}

/* ============================================================
   TABLET — a partir de 640px
   ============================================================ */
@media (min-width:640px){
  .grid-cards.colunas-2{grid-template-columns:repeat(2,1fr)}
  .grid-cards.colunas-3{grid-template-columns:repeat(2,1fr)}
  .grid-cards.colunas-4{grid-template-columns:repeat(2,1fr)}
  .grid-pessoas{grid-template-columns:repeat(3,1fr)}
  .grid-metodologias{grid-template-columns:repeat(2,1fr)}

  .faixa-agenda li{grid-template-columns:130px 1fr;gap:16px;align-items:baseline}
  .item-documento{flex-direction:row;align-items:center;justify-content:space-between;gap:20px}
  .campo-email{flex-direction:row}
  .campo-email input{flex:1}
  .campo-email .btn{flex:none}
  .faixa{
    grid-template-columns:auto auto minmax(0,1fr) auto auto;
    grid-template-areas:'acionar capa texto links duracao';
    column-gap:18px;padding:12px 12px;
  }
  .faixa-capa{width:52px;height:52px}
  .faixa-links{justify-content:flex-end}
  .barra-som-interna{grid-template-columns:minmax(0,1fr) minmax(320px,2fr) minmax(0,1fr)}
  .barra-som-centro{grid-column:auto;order:0}
  .barra-som-direita{justify-content:flex-end}
  body.com-barra-som{padding-bottom:110px}
  body.com-barra-som .botao-topo{bottom:max(120px,calc(110px + env(safe-area-inset-bottom,0px)))}
  .footer-inner{grid-template-columns:repeat(2,1fr)}
  .botao-topo{right:24px;bottom:max(24px,env(safe-area-inset-bottom,0px))}
}

/* ============================================================
   TABLET GRANDE / DESKTOP — a partir de 900px
   ============================================================ */
@media (min-width:900px){
  html{scroll-padding-top:110px}

  .grid-cards.colunas-3{grid-template-columns:repeat(3,1fr)}
  .grid-cards.colunas-4{grid-template-columns:repeat(4,1fr)}
  .grid-pessoas{grid-template-columns:repeat(4,1fr)}
  .grid-metodologias{grid-template-columns:repeat(3,1fr)}

  .hero{grid-template-columns:1.15fr .85fr;align-items:end}
  .projeto-corpo{grid-template-columns:1.6fr .9fr}
  .grid-contato{grid-template-columns:1.2fr .8fr}
  .footer-inner{grid-template-columns:1.6fr .7fr .9fr}

  .bloco-escuro{flex-direction:row;align-items:center;justify-content:space-between}
  .bloco-escuro > *{flex:1 1 auto}
  .bloco-escuro .acao{flex:none}

  .header-inner{min-height:84px}
  .marca .simbolo{width:46px;height:46px}
}

/* ============================================================
   MENU HORIZONTAL — a partir de 1060px
   ============================================================
   Abaixo disso o menu continua na gaveta. Com o logotipo desenhado no
   cabeçalho, a marca ficou mais larga: espremer os sete itens ao lado dela
   deixava o "Quem somos" colado na logo. Aqui cabe com folga. */
@media (min-width:1060px){
  .nav-toggle{display:none}
  .nav-fundo{display:none !important}
  .nav-principal{
    position:static;width:auto;transform:none;
    border:0;padding:0;background:transparent;
    flex-direction:row;align-items:center;gap:clamp(18px,2.2vw,30px);
    overflow:visible;
    /* A sombra é da gaveta do celular. No desktop ela ficava desenhando uma
       borda escura logo antes do primeiro item do menu — parecia uma caixa
       com o "Quem somos" colado na beirada. */
    box-shadow:none;
  }
  .nav-lista{flex-direction:row;align-items:center;gap:clamp(16px,1.9vw,26px)}
  .nav-lista a{
    padding:6px 0;border-bottom:2px solid transparent;
    font:600 var(--t-micro)/1 var(--f-texto);
    letter-spacing:.12em;text-transform:uppercase;
    font-family:var(--f-texto);
  }
  .nav-lista a:hover{padding-left:0;border-bottom-color:var(--azul)}
  .nav-lista a[aria-current="page"]{border-bottom-color:var(--azul)}
  .nav-cta{margin-top:0;width:auto;min-height:42px;padding:11px 18px}

  /* Espaço mínimo garantido entre a marca e o primeiro item do menu. */
  .header-inner{gap:clamp(40px,6vw,96px)}
  /* O botão de tema fecha a linha, depois do Apoie. */
  .header-acoes{gap:14px}
  .botao-tema{order:3}
}

@media (min-width:1100px){
  .grid-pessoas{grid-template-columns:repeat(4,1fr)}
}

/* ============================================================
   Acessibilidade / preferências do sistema
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  .btn:hover,a.card:hover{transform:none}
}

@media print{
  .site-header,.site-footer,.botao-topo,.nav-fundo,.filtro-categorias,.paginacao{display:none !important}
  body{color:#000}
}
