/* ═══════════════════════════════════════════════════════════════
   CONFLUÊNCIAS · SISTEMA DE DESIGN
   Direção "Periódico" — aprovada em 14/08/2026

   REGRAS INEGOCIÁVEIS DESTA LINGUAGEM
   1. Nada de border-radius, box-shadow ou linear-gradient.
      A hierarquia vem de fio, peso tipográfico e espaço.
   2. Duas famílias apenas: Newsreader (voz editorial) e
      IBM Plex Mono (metadado: data, CRP, índice, rótulo).
      Nenhuma sans genérica.
   3. O laranja #F29A1E NUNCA leva texto branco (2,2:1).
      Sempre texto marrom #4C2A23 (5,7:1).
   4. A terracota #BD6A4B reprova em AA para texto pequeno (3,6:1).
      Para rótulos use --terracota-txt (#9E5334, 5,1:1).
      Reserve #BD6A4B para traços e elementos decorativos.
   5. Sem foto real, o retrato é monograma em cor chapada.
      Cores válidas p/ iniciais em creme: #A61F21, #4C2A23,
      #8F4A2E, #7A3B22, #9E5334. Com #F29A1E, iniciais em marrom.

   FONTES (carregar no <head> de cada página)
   <link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,300;0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,300;1,6..72,400&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
   ═══════════════════════════════════════════════════════════════ */

  :root{
    --papel:#FAF4E4;
    --papel-2:#F3E7CD;
    --tinta:#3B211A;
    --tinta-suave:#7A5647;
    --terracota-txt:#9E5334;
    --regra:rgba(59,33,26,.16);
    --regra-media:rgba(59,33,26,.30);
    --laranja:#F29A1E;
    --vermelho:#CC1A1A;
    --bordo:#A61F21;
    --marrom:#4C2A23;
    --terracota:#BD6A4B;
    --dourado:#DFA567;
    --pessego:#F0C6A3;
    --creme:#FBF1D5;
    --serif:'Newsreader', Georgia, serif;
    --mono:'IBM Plex Mono', ui-monospace, monospace;
  }
  *{ box-sizing:border-box; margin:0; padding:0; }
  html{ -webkit-font-smoothing:antialiased; }
  body{
    font-family:var(--serif); background:var(--papel); color:var(--tinta);
    font-size:18px; line-height:1.6;
  }
  a{ color:inherit; text-decoration:none; }
  img{ display:block; }

  .shell{ max-width:1280px; margin:0 auto; padding:0 48px; }
  .grid{ display:grid; grid-template-columns:repeat(12,1fr); column-gap:28px; }
  .mono{ font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; font-weight:500; }

  /* ═════ CAMADA 1 · CABEÇALHO ═════ */
  .utility{ border-bottom:1px solid var(--regra); }
  .utility .shell{
    display:flex; justify-content:space-between; align-items:center;
    padding-top:11px; padding-bottom:11px; color:var(--tinta-suave);
  }
  .utility a{ color:var(--tinta); }
  .utility a + a{ margin-left:22px; }

  .masthead .shell{
    display:flex; align-items:flex-end; justify-content:space-between;
    gap:48px; padding-top:32px; padding-bottom:26px;
  }
  .mh-brand{ display:flex; align-items:center; gap:22px; }
  .mh-brand img{ width:84px; height:84px; }
  .wordmark{ font-weight:400; font-size:70px; letter-spacing:-.028em; line-height:.88; }
  /* `.mh-meta` (descrição do site + "N perfis · N estados") saiu do
     masthead em 18/08/2026, por decisão do autor. As regras vão junto:
     regra de CSS sem marcação é exatamente o que a auditoria de 17/08
     encontrou em três outros lugares e mandou resolver. */

  .mainnav{ border-top:2px solid var(--tinta); border-bottom:1px solid var(--regra); }
  .mainnav .shell{ display:flex; align-items:stretch; justify-content:space-between; }
  .mainnav-links{ display:flex; }
  .mainnav-links a{
    padding:15px 22px 14px; border-right:1px solid var(--regra);
    font-family:var(--mono); font-size:11px; letter-spacing:.11em;
    text-transform:uppercase; font-weight:500;
  }
  .mainnav-links a:first-child{ padding-left:0; }
  .mainnav-links a.current{ color:var(--bordo); }
  .nav-cta{
    background:var(--laranja); color:var(--marrom); align-self:center;
    padding:11px 22px; font-family:var(--mono); font-size:11px;
    letter-spacing:.11em; text-transform:uppercase; font-weight:600;
  }

  /* marcadores e cabeçalhos de seção */
  .sec-mark{ display:flex; align-items:baseline; gap:14px; color:var(--terracota-txt); }
  .sec-mark .num{ color:var(--bordo); font-weight:600; }
  .sec-head{
    display:flex; align-items:flex-end; justify-content:space-between;
    gap:32px; margin:14px 0 32px;
  }
  .sec-head h2, .sec-head h1{ font-size:40px; font-weight:400; letter-spacing:-.022em; line-height:1; }
  .sec-head .aside{ text-align:right; color:var(--tinta-suave); }
  .sec-head .aside a{ color:var(--bordo); border-bottom:1px solid var(--bordo); padding-bottom:2px; }

  /* ═════ CAMADA 2 · QUEM SOMOS ═════ */
  .quem{ padding:54px 0 56px; border-bottom:1px solid var(--regra); }
  .statement{
    font-size:56px; line-height:1.05; font-weight:400; letter-spacing:-.018em;
    margin:24px 0 34px; max-width:17.5em;
  }
  .statement em{ font-style:italic; color:var(--bordo); }
  .quem-corpo{ columns:2; column-gap:44px; max-width:960px; margin-bottom:30px; }
  .quem-corpo p{
    font-size:18px; line-height:1.62; color:var(--tinta-suave);
    font-weight:300; margin-bottom:14px; break-inside:avoid;
  }
  .quem-corpo p strong{ color:var(--tinta); font-weight:500; }
  .quem-acoes{ display:flex; align-items:center; gap:28px; }
  .btn-bloco{
    background:var(--tinta); color:var(--papel); padding:14px 26px;
    font-family:var(--mono); font-size:11px; letter-spacing:.11em;
    text-transform:uppercase; font-weight:600;
  }
  .lnk-sub{
    font-family:var(--mono); font-size:11px; letter-spacing:.11em;
    text-transform:uppercase; font-weight:500; color:var(--bordo);
    border-bottom:1px solid var(--bordo); padding-bottom:3px;
  }

  /* ═════ CAMADA 3 · DIRETÓRIO (carrossel) ═════ */
  .diretorio{ padding:46px 0 58px; border-bottom:1px solid var(--regra); overflow:hidden; }
  .car-nav{ display:flex; align-items:center; gap:18px; justify-content:flex-end; }
  .car-contador{ color:var(--tinta-suave); }
  .car-setas{ display:flex; gap:8px; }
  /* `.car-seta` é <button>; a regra antiga vestia <span> decorativo. O
     seletor de span fica por compatibilidade com telas que ainda não foram
     convertidas. */
  .car-setas span, .car-seta{
    width:38px; height:38px; border:1px solid var(--regra-media);
    display:flex; align-items:center; justify-content:center;
    font-size:15px; color:var(--tinta);
  }
  .car-setas span.off{ color:var(--regra-media); }
  .car-seta{ background:transparent; cursor:pointer; font-family:var(--serif); padding:0; }
  .car-seta:hover:not(:disabled){ border-color:var(--tinta); color:var(--bordo); }
  .car-seta:disabled{ color:var(--regra-media); cursor:default; }
  .car-seta[hidden]{ display:none; }
  .car-todos{ margin-top:9px; }

  /* Indicador de posição — só onde o .car-nav some (≤1024px). No desktop as
     setas e o contador já dizem onde a pessoa está. */
  .car-progresso{ display:none; }

  /* O quadro tem a geometria da `.shell`; a faixa rola DENTRO dele.
     Antes o recuo vinha de um `padding-left` calculado na própria faixa —
     e padding de faixa rola junto com o conteúdo, então valia só no
     repouso: bastava uma seta para a ficha encostar na borda da janela. */
  .dir-quadro{ max-width:1280px; margin:0 auto; padding:0 48px; }
  .dir-viewport{ overflow:hidden; padding:8px 0 10px; }
  .dir-strip{ display:flex; gap:28px; }
  .ficha{ flex:0 0 275px; display:flex; flex-direction:column; }
  .ficha .retrato{
    aspect-ratio:1 / 1; display:flex; align-items:center; justify-content:center;
    margin-bottom:16px; overflow:hidden;
  }
  .ficha .retrato img{ width:100%; height:100%; object-fit:cover; }
  .ficha .retrato span{
    font-family:var(--serif); font-size:66px; font-weight:400;
    color:var(--creme); letter-spacing:.02em; line-height:1;
  }
  .ficha h3{ font-size:22px; font-weight:400; line-height:1.15; margin-bottom:5px; letter-spacing:-.015em; }
  .ficha .reg{ color:var(--terracota-txt); display:block; margin-bottom:12px; }
  .ficha .abord{
    font-size:16px; line-height:1.4; color:var(--tinta); font-weight:400;
    padding-top:11px; border-top:1px solid var(--regra); margin-bottom:7px;
  }
  .ficha .acesso{ color:var(--tinta-suave); display:block; font-size:10px; line-height:1.5; }

  /* ═════ CAMADA 4 · AGENDA ═════ */
  .agenda{ background:var(--papel-2); padding:46px 0 58px; }
  .ag-row{
    display:grid; grid-template-columns:112px 1fr 236px 172px;
    column-gap:24px; align-items:center;
    padding:21px 0; border-top:1px solid var(--regra-media);
  }
  .ag-row:last-child{ border-bottom:1px solid var(--regra-media); }
  .ag-data{ display:flex; align-items:baseline; gap:8px; }
  .ag-data .dia{ font-size:36px; font-weight:400; line-height:1; letter-spacing:-.03em; }
  .ag-data .mes{ color:var(--terracota-txt); }
  .ag-titulo{ font-size:21px; font-weight:400; line-height:1.25; }
  .ag-local{ font-size:15px; color:var(--tinta-suave); font-weight:300; }
  .ag-estado{ text-align:right; color:var(--bordo); white-space:nowrap; }
  .ag-estado.espera{ color:var(--tinta-suave); }

  /* ═════ CAMADA 5 · NOTÍCIAS ═════ */
  .noticias{ padding:46px 0 58px; border-bottom:1px solid var(--regra); }
  .not-grid{ display:grid; grid-template-columns:repeat(4,1fr); border-top:2px solid var(--tinta); }
  .not-item{ padding:22px 26px 4px; border-right:1px solid var(--regra); }
  .not-item:first-child{ padding-left:0; }
  .not-item:last-child{ border-right:none; padding-right:0; }
  .not-item .data{ color:var(--bordo); display:block; margin-bottom:11px; }
  .not-item h3{ font-size:20px; line-height:1.25; font-weight:400; margin-bottom:10px; letter-spacing:-.01em; }
  .not-item p{ font-size:15px; line-height:1.5; color:var(--tinta-suave); font-weight:300; margin-bottom:12px; }
  .not-item .fonte{ color:var(--tinta-suave); font-size:10px; }

  /* ═════ CAMADA 6 · ARTIGOS ═════ */
  .artigos{ padding:46px 0 60px; border-bottom:1px solid var(--regra); }
  .destaque{ border-top:2px solid var(--tinta); padding-top:24px; }
  .dest-cita{
    grid-column:1 / span 5; background:var(--marrom); color:var(--creme);
    padding:36px 32px 30px; position:relative; align-self:start;
  }
  .dest-cita p{ font-size:26px; line-height:1.3; font-weight:300; font-style:italic; margin-bottom:22px; }
  .dest-cita .fonte{ color:var(--dourado); }
  .dest-cita img{ width:46px; height:46px; position:absolute; right:26px; bottom:24px; opacity:.75; }
  .dest-corpo{ grid-column:7 / span 6; }
  .dest-corpo .kicker{ color:var(--bordo); margin-bottom:14px; display:block; }
  .dest-corpo h3{ font-size:42px; line-height:1.06; font-weight:400; letter-spacing:-.022em; margin-bottom:16px; }
  .dest-corpo .lide{
    font-size:18px; line-height:1.6; color:var(--tinta-suave); font-weight:300;
    margin-bottom:24px; max-width:30em;
  }
  .assinatura{ display:flex; align-items:baseline; gap:14px; color:var(--tinta-suave); flex-wrap:wrap; }
  .assinatura .autor{ font-size:17px; font-weight:500; text-transform:none; letter-spacing:0; color:var(--tinta); font-family:var(--serif); }

  .indice{ margin-top:36px; }
  .idx-row{
    display:grid; grid-template-columns:44px 1fr 216px 82px;
    column-gap:24px; align-items:baseline;
    padding:18px 0; border-top:1px solid var(--regra);
  }
  .idx-row:last-child{ border-bottom:1px solid var(--regra); }
  .idx-num{ color:var(--terracota-txt); }
  .idx-titulo{ font-size:21px; line-height:1.25; font-weight:400; }
  .idx-autor{ font-size:15px; color:var(--tinta-suave); font-weight:300; }
  .idx-data{ color:var(--tinta-suave); text-align:right; white-space:nowrap; }

  /* ═════ CAMADA 7 · BIBLIOTECA DE REFERÊNCIAS ═════ */
  .biblio{ background:var(--papel-2); padding:46px 0 58px; }
  .bib-grid{ display:grid; grid-template-columns:1fr 1fr; column-gap:56px; border-top:2px solid var(--tinta); }
  .bib-item{ padding:20px 0; border-bottom:1px solid var(--regra-media); }
  .bib-item .tipo{ color:var(--terracota-txt); display:block; margin-bottom:8px; font-size:10px; }
  .bib-ref{
    font-size:17px; line-height:1.45; font-weight:300; color:var(--tinta);
    padding-left:26px; text-indent:-26px; margin-bottom:9px;
  }
  .bib-ref em{ font-style:italic; }
  .bib-item .indic{ color:var(--tinta-suave); font-size:10px; }
  .bib-item .indic b{ color:var(--terracota-txt); font-weight:500; }

  /* ═════ FECHO ═════ */
  .fecho{ background:var(--marrom); color:var(--creme); padding:74px 0 70px; }
  .fecho .grid{ align-items:center; }
  .fecho-mark{ grid-column:1 / span 3; }
  .fecho-mark img{ width:168px; height:168px; }
  .fecho-txt{ grid-column:5 / span 8; }
  .fecho-txt h2{ font-size:42px; line-height:1.1; font-weight:400; letter-spacing:-.018em; margin-bottom:20px; max-width:16em; }
  .fecho-txt h2 em{ font-style:italic; color:var(--laranja); }
  .fecho-txt p{ font-size:17px; color:var(--pessego); font-weight:300; max-width:36em; margin-bottom:30px; line-height:1.55; }
  .fecho-acoes{ display:flex; align-items:center; gap:28px; }
  .btn-claro{
    background:var(--laranja); color:var(--marrom); padding:14px 26px;
    font-family:var(--mono); font-size:11px; letter-spacing:.11em;
    text-transform:uppercase; font-weight:600;
  }
  .lnk-claro{
    font-family:var(--mono); font-size:11px; letter-spacing:.11em;
    text-transform:uppercase; font-weight:500; color:var(--creme);
    border-bottom:1px solid rgba(251,241,213,.5); padding-bottom:3px;
  }

  /* ═════ RODAPÉ ═════ */
  footer{ background:var(--papel); padding:46px 0 30px; }
  .foot-grid{ display:grid; grid-template-columns:2.2fr 1fr 1fr 1fr; column-gap:28px; }
  .foot-brand{ display:flex; align-items:center; gap:13px; margin-bottom:15px; }
  .foot-brand img{ width:40px; height:40px; }
  .foot-brand span{ font-size:25px; letter-spacing:-.025em; }
  .foot-grid p{ font-size:15px; color:var(--tinta-suave); font-weight:300; max-width:26em; line-height:1.55; }
  .foot-grid h4{ color:var(--terracota-txt); margin-bottom:14px; }
  .foot-grid a{ display:block; font-size:15px; color:var(--tinta); margin-bottom:9px; font-weight:300; }
  .foot-base{
    display:flex; justify-content:space-between; margin-top:40px; padding-top:18px;
    border-top:1px solid var(--regra); color:var(--tinta-suave);
  }

/* ═════════════════════════════════════════════════════════════
   COMPONENTES DE PÁGINAS INTERNAS
   ═════════════════════════════════════════════════════════════ */

/* --- barra de filtros --- */
.filtros{ border-top:2px solid var(--tinta); border-bottom:1px solid var(--regra); }
/* A faixa de busca já fecha com o próprio fio; manter os dois daria uma
   régua dupla logo abaixo do campo. */
.busca-faixa + .filtros{ border-top:none; }
.filtros-linha{ display:flex; align-items:stretch; }
/* `min-width:0` porque item de flex não encolhe abaixo do próprio conteúdo
   por padrão: com cinco filtros, uma opção longa como "Terapia
   Cognitivo-Comportamental" empurrava a barra para fora da tela. */
.filtro{ padding:14px 24px; border-right:1px solid var(--regra); flex:1; min-width:0; }
.filtro select{ text-overflow:ellipsis; }
.filtro:first-child{ padding-left:0; }
.filtro .rot{ display:block; color:var(--terracota-txt); font-size:10px; margin-bottom:5px; }
.filtro .val{ font-size:16px; font-weight:400; }
.filtro .val .seta{ color:var(--tinta-suave); margin-left:6px; font-size:12px; }
.filtro-acao{ display:flex; align-items:center; padding-left:24px; }

/* alternador de modalidade */
.modos{ display:flex; gap:0; border:1px solid var(--regra-media); }
.modos a{
  padding:9px 18px; font-family:var(--mono); font-size:10px; letter-spacing:.11em;
  text-transform:uppercase; font-weight:500; border-right:1px solid var(--regra-media);
}
.modos a:last-child{ border-right:none; }
.modos a.ativo{ background:var(--tinta); color:var(--papel); }

/* --- mapa --- */
.mapa-bloco{ display:grid; grid-template-columns:1.55fr 1fr; column-gap:44px; align-items:start; }
.mapa-quadro{ position:relative; }
.mapa-quadro svg{ width:100%; height:auto; display:block; }
.mapa-quadro .costa{ stroke:#3B211A; stroke-width:.9; fill:none; }
.mapa-quadro .fronteira{ stroke:#BD6A4B; stroke-width:.55; fill:none; opacity:.55; }
.mapa-ponto{ fill:#A61F21; fill-opacity:.72; stroke:#FAF4E4; stroke-width:.8; }
.mapa-rot{ font-family:var(--mono); font-size:9.5px; letter-spacing:.06em; fill:#3B211A; }
.mapa-num{ font-family:var(--mono); font-size:9px; fill:#7A5647; }
.mapa-legenda{
  display:flex; gap:26px; align-items:center; margin-top:14px;
  padding-top:12px; border-top:1px solid var(--regra); color:var(--tinta-suave);
}
.mapa-legenda .escala{ display:flex; align-items:center; gap:8px; }

/* painel lateral do exterior */
.exterior h3{ font-size:23px; font-weight:400; letter-spacing:-.015em; margin:8px 0 8px; }
.exterior .nota{ font-size:14px; line-height:1.5; color:var(--tinta-suave); font-weight:300; margin-bottom:16px; }
.exterior .mundo{ margin-bottom:16px; }
.ext-row{
  display:flex; justify-content:space-between; align-items:baseline;
  padding:9px 0; border-top:1px solid var(--regra);
}
.ext-row:last-child{ border-bottom:1px solid var(--regra); }
.ext-row .cid{ font-size:16px; font-weight:400; }
.ext-row .pais{ color:var(--tinta-suave); font-size:10px; margin-left:7px; }
.ext-row .qtd{ font-family:var(--mono); font-size:12px; color:var(--bordo); }

/* --- abas do diretório: Lista / Mapa ---
   São links (?vista=mapa), não botões: sem JavaScript o clique recarrega no
   painel certo, e a busca no mapa pode ser copiada e enviada como URL. */
/* O painel escondido é marcado com o atributo `hidden`. O navegador já sabe
   escondê-lo, mas basta uma regra futura com `display` no seletor da seção
   para o atributo perder a briga e os dois painéis aparecerem juntos. */
[hidden]{ display:none !important; }

.dir-abas{ display:flex; border-bottom:1px solid var(--regra-media); margin-top:26px; }
.dir-abas a{
  padding:12px 18px 11px; color:var(--tinta);
  font-family:var(--mono); font-size:10px; letter-spacing:.11em;
  text-transform:uppercase; font-weight:500;
  border-bottom:2px solid transparent; margin-bottom:-1px;
}
.dir-abas a:first-child{ padding-left:0; }
.dir-abas a[aria-selected="true"]{ color:var(--bordo); border-bottom-color:var(--bordo); }

/* filtro que não tem <select> na barra — hoje só cidade, que chega pelo mapa */
.filtro-ativo{ display:flex; align-items:baseline; gap:12px; margin-top:20px; }
.filtro-ativo .rot{ margin:0; }
.filtro-ativo .valor{ font-size:19px; font-weight:400; }

/* ═══════════════════════════════════════════════════════════════
   DIRETÓRIO — busca, filtros ativos, ordenação e ficha de resultado
   ═══════════════════════════════════════════════════════════════ */

/* — busca livre — */
.busca-faixa{ border-top:2px solid var(--tinta); border-bottom:1px solid var(--regra); background:var(--papel-2); }
.busca-faixa .shell{ padding-top:22px; padding-bottom:22px; }
.busca-faixa .rot{ display:block; color:var(--terracota-txt); margin-bottom:9px; }
.busca-caixa{ display:flex; align-items:stretch; border:1px solid var(--tinta); background:#FFFCF4; }
.busca-caixa input[type=search]{
  flex:1; min-width:0; font-family:var(--serif); font-size:19px; font-weight:300; color:var(--tinta);
  background:transparent; border:none; padding:15px 18px; -webkit-appearance:none; appearance:none;
}
.busca-caixa input[type=search]:focus{ outline:none; }
.busca-caixa:focus-within{ outline:2px solid var(--bordo); outline-offset:2px; }
.busca-caixa button{
  background:var(--tinta); color:var(--papel); border:none; cursor:pointer; padding:0 26px; min-height:44px;
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; font-weight:600;
}
.busca-caixa button:hover{ background:var(--bordo); }

/* — filtro com valor aplicado se anuncia —
   Antes, um filtro ativo era visualmente idêntico a um vazio: a única pista
   era ler o texto dentro do <select>. */
.filtro.tem-valor .rot{ color:var(--bordo); }
.filtro.tem-valor select{ font-weight:500; }

/* — fichas de filtro ativo — */
.ativos{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:16px 0 0; }
.ativos .titulo{ color:var(--terracota-txt); }
.ficha-filtro{
  display:inline-flex; align-items:center; gap:9px; padding:7px 12px; min-height:24px;
  border:1px solid var(--regra-media); background:#FFFCF4; font-size:15px; font-weight:400; color:var(--tinta);
}
.ficha-filtro .x{ font-family:var(--mono); font-size:13px; color:var(--tinta-suave); }
.ficha-filtro:hover{ border-color:var(--tinta); }
.ficha-filtro:hover .x{ color:var(--bordo); }
.limpar-tudo{
  font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase;
  font-weight:500; color:var(--bordo); border-bottom:1px solid var(--regra-media);
}
.limpar-tudo:hover{ border-bottom-color:var(--bordo); }

/* — barra de abas com ordenação — */
.dir-barra{ display:flex; justify-content:space-between; align-items:flex-end; gap:20px; flex-wrap:wrap; margin-top:26px; border-bottom:1px solid var(--regra-media); }
.dir-barra .dir-abas{ margin-top:0; border-bottom:none; }
.dir-abas .qtd{ color:var(--tinta-suave); margin-left:7px; }
.dir-ordem{ display:flex; align-items:baseline; gap:9px; padding-bottom:9px; }
.dir-ordem .rot{ margin:0; color:var(--terracota-txt); white-space:nowrap; }
.dir-ordem select{
  font-family:var(--serif); font-size:15px; color:var(--tinta); width:auto;
  background-color:transparent; border:none; border-bottom:1px solid var(--regra-media);
  padding:2px 18px 2px 0; cursor:pointer; -webkit-appearance:none; appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--tinta-suave) 50%),
                   linear-gradient(135deg,var(--tinta-suave) 50%,transparent 50%);
  background-position:calc(100% - 9px) calc(50% + 1px), calc(100% - 4px) calc(50% + 1px);
  background-size:5px 5px, 5px 5px; background-repeat:no-repeat;
}
.dir-ordem select:hover{ color:var(--bordo); }
.ordem-ok{ background:var(--tinta); color:var(--papel); border:none; cursor:pointer; padding:7px 13px; }

/* — ficha de resultado — */
.res-ficha{
  display:grid; grid-template-columns:92px 1fr 210px; column-gap:28px;
  padding:24px 0; border-top:1px solid var(--regra); align-items:start;
}
.res-ficha:last-of-type{ border-bottom:1px solid var(--regra); }
.res-ficha:hover{ background:rgba(243,231,205,.42); }
.res-retrato{
  width:92px; height:92px; display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-size:34px; color:var(--creme); overflow:hidden;
}
.res-retrato img{ width:100%; height:100%; object-fit:cover; display:block; }
.res-corpo{ min-width:0; }
.res-ficha h3{ font-size:23px; font-weight:400; line-height:1.15; letter-spacing:-.012em; }
.res-ficha h3 a:hover{ color:var(--bordo); }
.res-linha-crp{ display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin:4px 0 9px; }
.res-crp{ color:var(--terracota-txt); font-size:10px; }
.res-selo{ display:inline-flex; align-items:center; gap:5px; color:var(--sucesso); font-size:9.5px; }
.res-selo .pt{ width:6px; height:6px; background:var(--sucesso); }
.res-headline{ font-size:16.5px; line-height:1.5; color:var(--tinta-suave); font-weight:300; margin-bottom:11px; max-width:46em; }
.res-tags{ display:flex; flex-wrap:wrap; gap:7px; }
.res-tag{ font-size:13.5px; font-weight:400; padding:4px 10px; border:1px solid var(--regra-media); color:var(--tinta); }
.res-tag.forte{ border-color:var(--terracota); color:var(--terracota-txt); }
.res-meta{ display:flex; flex-direction:column; align-items:flex-end; gap:7px; text-align:right; }
.res-meta .local{ font-size:15px; color:var(--tinta); }
.res-meta .modo{ font-size:9.5px; color:var(--tinta-suave); }
.res-meta .ver{ margin-top:4px; }

/* — vazio que ensina a sair dele — */
.res-vazio{ border:1px dashed var(--regra-media); padding:38px; text-align:center; margin-top:20px; }
.res-vazio h3{ font-size:23px; font-weight:400; margin-bottom:9px; }
.res-vazio p{ font-size:16px; color:var(--tinta-suave); font-weight:300; max-width:40em; margin:0 auto 18px; line-height:1.55; }
.res-vazio-acoes{ display:flex; gap:10px; justify-content:center; align-items:center; flex-wrap:wrap; }

@media (max-width:1024px){
  .res-ficha{ grid-template-columns:74px 1fr; row-gap:14px; }
  .res-retrato{ width:74px; height:74px; font-size:27px; }
  .res-meta{ grid-column:1 / -1; flex-direction:row; flex-wrap:wrap; align-items:baseline; gap:14px; text-align:left; }
  .res-meta .ver{ margin-top:0; }
}
@media (max-width:760px){
  .busca-caixa{ flex-direction:column; }
  .busca-caixa button{ padding:14px; }
  .dir-barra{ align-items:flex-start; }
  .res-vazio{ padding:24px 18px; }
}

/* --- mapa vivo (Google Maps) ---
   Classe separada de .mapa-quadro de propósito: aquela veste o SVG estático
   do protótipo e tem regras de padding e overflow no celular que deformariam
   o mapa interativo. */
.mapa-google{ width:100%; height:520px; background:var(--papel-2); border:1px solid var(--regra-media); }
.mapa-google.mapa-falhou{
  display:flex; align-items:center; justify-content:center; text-align:center;
  padding:28px; font-size:16px; font-weight:300; color:var(--tinta-suave);
}
.mapa-nota{ font-size:13px; line-height:1.5; color:var(--tinta-suave); font-weight:300; margin-top:12px; max-width:60em; }

/* --- biblioteca: capa, resenha e base de direitos --- */
.ref-capa{ float:left; width:190px; margin:4px 26px 18px 0; }
.ref-capa img{ display:block; width:100%; height:auto; border:1px solid var(--regra-media); }
.ref-resenha{ clear:both; margin-top:28px; padding-top:20px; border-top:1px solid var(--regra); }
.ref-resenha h2{ color:var(--terracota-txt); margin-bottom:14px; }
.ref-base{ font-size:12.5px; line-height:1.5; color:var(--tinta-suave); font-weight:300; margin-top:7px; }
.bib-capa{ width:56px; height:78px; flex:0 0 56px; overflow:hidden; background:var(--papel-2); }
.bib-capa img{ width:100%; height:100%; object-fit:cover; display:block; }
@media (max-width:760px){
  .ref-capa{ float:none; width:150px; margin:0 0 18px; }
}

/* --- indicar o perfil, na lateral da página pública --- */
/* --- indicar o perfil: uma linha que abre, não quatro botões ---
   Reescrito em 18/08/2026. Antes eram quatro `.btn-linha` empilhados,
   do mesmo peso visual dos botões de contato logo acima: ~250px de
   caixas idênticas na lateral, e a leitura de que indicar o perfil
   importa tanto quanto falar com a pessoa.

   Agora é `<details>`: fechado ocupa a altura de UMA linha; aberto,
   mostra as opções como itens de lista separados por fio — mais leves
   que botão, que é o peso certo para ação secundária. O idioma do
   `+`/`—` é o mesmo das seções recolhíveis do resto do projeto. */
/* `.recolhe` é o gesto, e ele passou a ser usado duas vezes na lateral do
   perfil: "Outras formas de falar" e "Indicar este perfil". As classes
   específicas ficam para o que muda dentro; a linha que abre é a mesma nos
   dois, porque duas maneiras diferentes de abrir a mesma coisa na mesma
   coluna seria ruído. */
.recolhe, .compartilhar{ margin-top:22px; border-top:1px solid var(--regra); }

.recolhe > summary,
.compartilhar > summary{
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  padding:15px 0 14px; cursor:pointer; list-style:none;
  color:var(--terracota-txt);
}
.recolhe > summary::-webkit-details-marker,
.compartilhar > summary::-webkit-details-marker{ display:none; }
.recolhe > summary:hover,
.compartilhar > summary:hover{ color:var(--bordo); }
.recolhe > summary:focus-visible,
.compartilhar > summary:focus-visible{ outline:2px solid var(--bordo); outline-offset:3px; }
.recolhe .sinal,
.compartilhar .sinal{ color:var(--tinta-suave); flex:0 0 auto; }
.recolhe[open] .sinal .mais,
.compartilhar[open] .sinal .mais{ display:none; }
.recolhe:not([open]) .sinal .menos,
.compartilhar:not([open]) .sinal .menos{ display:none; }

/* Dentro de "outras formas de falar", os botões mantêm o peso de botão:
   ligar para alguém não é indicar um perfil. O que muda é que eles só
   aparecem para quem foi procurar. */
.contato-mais .btn-secundario{ display:block; }
.contato-nota{ font-size:13px; color:var(--tinta-suave); font-weight:300; line-height:1.5; margin-top:14px; }

.comp-opcoes{ border-top:1px solid var(--regra); }
.comp-opcao{
  display:block; width:100%; text-align:left; cursor:pointer;
  padding:12px 0; border:none; border-bottom:1px solid var(--regra);
  background:transparent; color:var(--tinta);
  font-family:var(--serif); font-size:16px; font-weight:300; line-height:1.4;
}
.comp-opcao:hover{ color:var(--bordo); }
.comp-opcao:last-of-type{ border-bottom:none; }
.comp-opcao.comp-copiar.copiado{ color:var(--sucesso); }

.comp-nota{ font-size:12px; color:var(--tinta-suave); font-weight:300; line-height:1.45; margin-top:11px; }

/* --- divulgar o próprio perfil, na lateral do painel --- */
.divulgar-bloco{ border:1px solid var(--regra-media); padding:20px; margin-top:26px; }
.divulgar-bloco > .rot{ display:block; margin-bottom:14px; }
.qr-quadro{ background:var(--papel); border:1px solid var(--regra); padding:10px; line-height:0; }
.qr-quadro canvas{ display:block; width:100%; height:auto; }
.divulgar-nota{ font-size:13px; color:var(--tinta-suave); font-weight:300; line-height:1.5; margin:12px 0 12px; }
.divulgar-campo{ margin-top:16px; padding-top:14px; border-top:1px solid var(--regra); }
.divulgar-campo .rot{ display:block; margin-bottom:7px; }
.divulgar-campo input{ font-size:14px; padding:9px 11px; }

/* --- mini mapa do consultório, na lateral do perfil ---
   Só aparece para quem autorizou a divulgação do endereço e atende
   presencialmente; a decisão mora em conf_perfil_endereco_publico(). */
.mapa-mini-bloco{ margin-top:22px; padding-top:18px; border-top:1px solid var(--regra); }
.mapa-mini-bloco > .rot{ margin-bottom:10px; }
.mapa-mini-fachada{
  position:relative; display:block; width:100%; aspect-ratio:4/3;
  background:var(--marrom); border:none; padding:0; cursor:pointer; overflow:hidden;
}
.mapa-mini-fachada iframe{ width:100%; height:100%; display:block; border:0; }
.mapa-mini-fachada .cobre{
  position:absolute; inset:0; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:8px; color:var(--creme);
}
.mapa-mini-fachada .cobre .simbolo{ font-size:30px; line-height:1; }
.mapa-mini-end{ font-size:15px; font-weight:300; line-height:1.45; margin-top:11px; }
.mapa-mini-nota{ font-size:12px; color:var(--tinta-suave); font-weight:300; line-height:1.45; margin-top:8px; }

/* janela do pino — o Google injeta o contêiner, aqui só vestimos o miolo */
.mapa-janela{ font-family:var(--serif); max-width:250px; padding:2px 2px 4px; }
.mapa-janela h3{ font-size:19px; font-weight:400; line-height:1.2; margin-bottom:2px; }
.mapa-janela h3 span{ font-family:var(--mono); font-size:10px; color:var(--terracota-txt); letter-spacing:.08em; }
.mapa-janela-qtd{ font-family:var(--mono); font-size:10px; letter-spacing:.09em; text-transform:uppercase; color:var(--tinta-suave); margin-bottom:9px; }
.mapa-janela ul{ list-style:none; margin:0; padding:0; }
.mapa-janela li{ padding:6px 0; border-top:1px solid var(--regra); }
.mapa-janela li a{ font-size:16px; font-weight:400; }
.mapa-janela-end{ font-size:14px; font-weight:300; line-height:1.45; color:var(--tinta); margin-bottom:2px; }
.mapa-janela-crp{ display:block; font-family:var(--mono); font-size:10px; color:var(--terracota-txt); }
.mapa-janela-todos{
  display:inline-block; margin-top:10px; padding-top:9px; border-top:1px solid var(--regra);
  font-family:var(--mono); font-size:10px; letter-spacing:.09em; text-transform:uppercase; color:var(--bordo);
}

@media (max-width:760px){
  .mapa-google{ height:400px; }
  .dir-abas a{ padding-left:14px; padding-right:14px; }
  .dir-abas a:first-child{ padding-left:0; }
}

/* --- linha de resultado de busca --- */
.res-row{
  display:grid; grid-template-columns:64px 1fr 190px 150px 90px;
  column-gap:22px; align-items:center;
  padding:18px 0; border-top:1px solid var(--regra);
}
.res-row:last-child{ border-bottom:1px solid var(--regra); }
/* O `overflow:hidden` e a regra de `img` abaixo não são enfeite: sem elas a
   foto entrava na linha com o tamanho natural do arquivo que o WordPress
   gerou. `medium` preserva a proporção — 400x600 vira 200x300, 800x400 vira
   300x150 — então cada perfil aparecia de um tamanho. O monograma não sofria
   disso porque é <span>, que o flex centraliza. Mesmo par que .perfil-mono
   (linha 354) e .ficha .retrato (linha 150) já usavam; só .res-mono ficou de
   fora. */
.res-mono{
  width:64px; height:64px; display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-size:24px; color:var(--creme);
  overflow:hidden;
}
.res-mono img{ width:100%; height:100%; object-fit:cover; display:block; }
.res-row h3{ font-size:21px; font-weight:400; line-height:1.2; margin-bottom:3px; }
.res-row .crp{ color:var(--terracota-txt); font-size:10px; }
.res-row .abord{ font-size:15px; color:var(--tinta-suave); font-weight:300; }
.res-row .local{ font-size:14px; color:var(--tinta-suave); font-weight:300; }
.res-row .ver{ text-align:right; }

/* paginação */
.paginacao{ display:flex; align-items:center; justify-content:space-between; margin-top:32px; }
.pag-nums{ display:flex; gap:6px; }
.pag-nums a{
  min-width:36px; height:36px; border:1px solid var(--regra-media);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--mono); font-size:11px;
}
.pag-nums a.ativo{ background:var(--tinta); color:var(--papel); border-color:var(--tinta); }

/* --- página do profissional --- */
/* Três colunas reequilibradas em 18/08/2026. A coluna do retrato tinha
   210px de altura e seguia vazia por mais de 600px — o buraco no meio da
   página. Agora ela é a coluna de QUEM É a pessoa: rosto e, logo abaixo,
   o convite para falar com ela. A da direita fica com o secundário
   (indicar o perfil, onde fica). A do meio, com os dados.

   A esquerda cresceu de 210px para 300px porque um botão de 210px de
   largura não cabe texto em versalete sem quebrar. */
.perfil-topo{ display:grid; grid-template-columns:300px 1fr 288px; column-gap:44px; align-items:start; padding:44px 0 34px; }
.perfil-coluna{ display:flex; flex-direction:column; gap:22px; }
.perfil-coluna .perfil-mono{ width:100%; height:auto; aspect-ratio:1 / 1; }

/* A coluna da direita é uma caixa só, como a de contato: sem ela, o
   `<details>` de indicar e o mapa flutuariam soltos ao lado de duas
   caixas com borda. */
.perfil-lado{ border:1px solid var(--regra-media); padding:20px 22px; }
.perfil-lado .compartilhar{ margin-top:0; border-top:none; }
.perfil-lado .compartilhar > summary{ padding-top:0; }
.perfil-lado > .mapa-mini-bloco:first-child{ margin-top:0; padding-top:0; border-top:none; }

/* O mapa da lateral é quadrado, e não 4/3. Duas razões: "onde fica" é um
   pino, não uma paisagem — o enquadramento quadrado mostra mais rua em
   volta —, e ele é o que faz a coluna da direita terminar mais perto das
   outras duas, em vez de parar 170px antes. */
.perfil-lado .mapa-mini-fachada{ aspect-ratio:1 / 1; }
.perfil-mono{ width:210px; height:210px; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.perfil-mono img{ width:100%; height:100%; object-fit:cover; }
.perfil-mono span{ font-family:var(--serif); font-size:82px; color:var(--creme); }
.perfil-mono img{ width:100%; height:100%; object-fit:cover; }
.perfil-id h1{ font-size:46px; font-weight:400; letter-spacing:-.022em; line-height:1.05; margin-bottom:8px; }
.perfil-id .linha-crp{ color:var(--terracota-txt); margin-bottom:22px; display:block; }
.perfil-id .linha-crp + .linha-especialista{ margin-top:-12px; }
.perfil-id .linha-especialista{
  font-family:var(--serif); font-size:21px; font-weight:500; line-height:1.25;
  color:var(--tinta); display:block; margin-bottom:18px;
}
.perfil-id .linha-especialista.autodeclarado::after{
  content:' · autodeclarado'; font-family:var(--mono); font-size:10px;
  font-weight:300; color:var(--tinta-suave); letter-spacing:.06em;
}
.perfil-dado{ display:flex; gap:14px; padding:11px 0; border-top:1px solid var(--regra); align-items:baseline; }
.perfil-dado .rot{ color:var(--terracota-txt); font-size:10px; width:112px; flex:0 0 112px; }
.perfil-dado .val{ font-size:16px; font-weight:400; }
.contato-box{ border:1px solid var(--regra-media); padding:26px 24px; }
.contato-box h3{ font-size:19px; font-weight:400; margin-bottom:6px; }
.contato-box p{ font-size:14px; color:var(--tinta-suave); font-weight:300; line-height:1.5; margin-bottom:18px; }
.contato-box .btn-bloco{ display:block; text-align:center; margin-bottom:10px; }
.contato-box .sec{ display:block; text-align:center; font-family:var(--mono); font-size:10px;
  letter-spacing:.11em; text-transform:uppercase; color:var(--bordo); padding:11px; border:1px solid var(--regra-media); }
.selo{ display:inline-flex; align-items:center; gap:7px; color:var(--bordo); margin-bottom:16px; }
.selo .pt{ width:7px; height:7px; background:var(--bordo); border-radius:50%; }

/* --- corpo de texto longo (artigo / notícia) --- */
.leitura{ max-width:34em; overflow-wrap:break-word; word-break:break-word; }
.leitura p{ font-size:19px; line-height:1.72; margin-bottom:20px; font-weight:300; }
.leitura p.abre::first-letter{
  font-size:64px; line-height:.82; float:left; padding:6px 10px 0 0; color:var(--bordo);
}
.leitura h3{ font-size:25px; font-weight:400; margin:34px 0 14px; letter-spacing:-.015em; }
.leitura blockquote{
  border-left:2px solid var(--bordo); padding-left:24px; margin:28px 0;
  font-size:23px; line-height:1.4; font-style:italic; font-weight:300; color:var(--tinta);
}
.leitura ul{ margin:0 0 20px 20px; }
.leitura li{ font-size:18px; line-height:1.6; font-weight:300; margin-bottom:8px; }
.artigo-cabeca{ padding:40px 0 30px; border-bottom:2px solid var(--tinta); margin-bottom:36px; }
.artigo-cabeca h1{ font-size:54px; font-weight:400; line-height:1.05; letter-spacing:-.025em; margin:16px 0 18px; max-width:17em; }
.artigo-cabeca .lide{ font-size:21px; line-height:1.5; color:var(--tinta-suave); font-weight:300; max-width:32em; margin-bottom:24px; }
.artigo-corpo{ display:grid; grid-template-columns:1fr 300px; column-gap:56px; align-items:start; }
.artigo-lado .bloco{ border-top:1px solid var(--regra); padding-top:14px; margin-bottom:26px; }
.artigo-lado h4{ color:var(--terracota-txt); margin-bottom:12px; }
.artigo-lado .autor-nome{ font-size:20px; font-weight:400; margin-bottom:4px; }
.artigo-lado p{ font-size:14px; line-height:1.55; color:var(--tinta-suave); font-weight:300; overflow-wrap:break-word; word-break:break-word; }

/* estado vazio */
.vazio{ border:1px dashed var(--regra-media); padding:34px; text-align:center; }
.vazio p{ font-size:16px; color:var(--tinta-suave); font-weight:300; }
.res-row .ver a{ white-space:nowrap; }
.exterior .mundo{ padding:10px 0; border-top:1px solid var(--regra); border-bottom:1px solid var(--regra); }

/* --- abertura da home: logo ao lado da declaração (substitui o masthead) --- */
.abertura{
  display:grid; grid-template-columns:300px 1fr; column-gap:60px;
  align-items:start; padding-top:6px;
}
.abertura-marca img{ width:196px; height:196px; margin-bottom:20px; }
.abertura-marca .nome{
  display:block; font-size:42px; letter-spacing:-.028em; line-height:1; margin-bottom:14px;
}
/* `.dados` (a linha "N perfis · N estados" da abertura) saiu em 18/08/2026,
   junto com a do masthead. Regra sem marcação sai junto com ela. */
.abertura .statement{ margin-top:18px; }

/* ═══════════════════════════════════════════════════════════════
   RESPONSIVO — mobile, tablet e uso como webapp
   Estratégia: tipografia fluida com clamp() + três pontos de quebra
   (1200 / 1024 / 760). Nada de esconder conteúdo: as grades
   desmontam em coluna única, preservando a hierarquia de fio e peso.
   ═══════════════════════════════════════════════════════════════ */

:root{ --gutter:48px; }
.shell{ padding:0 var(--gutter); }
img{ max-width:100%; height:auto; }

/* --- tipografia fluida (mín. em 375px, máx. no desktop) --- */
.wordmark{ font-size:clamp(38px, 4.9vw, 70px); }
.statement{ font-size:clamp(29px, 4.4vw, 56px); }
.abertura-marca .nome{ font-size:clamp(30px, 3.4vw, 42px); }
.sec-head h2, .sec-head h1{ font-size:clamp(27px, 3.2vw, 40px); }
.dest-corpo h3{ font-size:clamp(26px, 3.4vw, 42px); }
.dest-cita p{ font-size:clamp(20px, 2.1vw, 26px); }
.artigo-cabeca h1{ font-size:clamp(31px, 4.3vw, 54px); }
.artigo-cabeca .lide{ font-size:clamp(18px, 1.7vw, 21px); }
.perfil-id h1{ font-size:clamp(30px, 3.6vw, 46px); }
.fecho-txt h2{ font-size:clamp(27px, 3.4vw, 42px); }
.leitura p{ font-size:clamp(17px, 1.35vw, 19px); }
.leitura blockquote{ font-size:clamp(19px, 1.9vw, 23px); }
.ag-data .dia{ font-size:clamp(28px, 2.6vw, 36px); }
.ficha .retrato span{ font-size:clamp(48px, 5vw, 66px); }
.perfil-mono span{ font-size:clamp(56px, 6.4vw, 82px); }

/* --- carrossel: rolagem real por toque, sem JS --- */
/* ── carrossel do diretório · reescrito em 18/08/2026 ──────────────
   O problema relatado ("o carrossel está muito colado na página") não
   estava no repouso: estava no PASSO. A faixa era sangrada até a borda
   da janela e o recuo inicial vinha de um `padding-left` calculado nela
   mesma — e padding de faixa rola junto com o conteúdo. No repouso a
   primeira ficha aparecia alinhada; ao avançar uma seta, as fichas
   encostavam no canto da tela, cortadas, ignorando a margem que todas as
   outras seções respeitam.

   A janela de rolagem passou a ter a geometria da `.shell`: começa e
   termina nas mesmas réguas do texto, e o que sobra é recortado. A ficha
   parcial continua existindo — é ela que anuncia "tem mais" —, só que
   agora ela é cortada pela margem da página, e não pela borda do monitor.

   A rolagem continua sendo do navegador, no mesmo elemento, e o
   carrossel.js não mudou de alvo. */
.dir-quadro{ width:100%; max-width:1280px; margin:0 auto; padding:0 var(--gutter); }
.dir-viewport{
  overflow-x:auto; scroll-snap-type:x proximity;
  -webkit-overflow-scrolling:touch; scrollbar-width:none;

  /* Respiro vertical: a faixa encostava no `.sec-head` acima e na régua
     que fecha a seção abaixo. */
  padding:8px 0 10px;
}
.dir-viewport::-webkit-scrollbar{ display:none; }
.dir-strip{ padding:0; }
.ficha{ scroll-snap-align:start; }

/* ─────────── ≤1200px ─────────── */
@media (max-width:1200px){
  :root{ --gutter:36px; }
  .mainnav-links a{ padding-left:16px; padding-right:16px; }
  .res-row{ grid-template-columns:64px 1fr 170px 130px 78px; column-gap:16px; }
  .artigo-corpo{ column-gap:40px; grid-template-columns:1fr 260px; }
  .perfil-topo{ grid-template-columns:262px 1fr 252px; column-gap:32px; }
  .perfil-mono{ width:170px; height:170px; }
  .abertura{ grid-template-columns:240px 1fr; column-gap:44px; }
  .abertura-marca img{ width:150px; height:150px; }
}

/* ─────────── ≤1024px · tablet ─────────── */
@media (max-width:1024px){
  :root{ --gutter:28px; }
  body{ font-size:17px; }

  /* barra utilitária: some o descritivo longo, ficam os acessos */
  .utility .shell > span:first-child{ display:none; }
  .utility .shell{ justify-content:flex-end; }

  .masthead .shell{ gap:24px; }

  /* mapa e painel do exterior empilham */
  .mapa-bloco{ grid-template-columns:1fr; row-gap:36px; }
  .exterior .mundo{ max-width:640px; }

  /* notícias: 4 colunas → 2, com fio horizontal separando as fileiras */
  .not-grid{ grid-template-columns:1fr 1fr; }
  .not-item{ padding:20px 22px; border-bottom:1px solid var(--regra); }
  .not-item:nth-child(2n){ border-right:none; padding-right:0; }
  .not-item:nth-child(2n+1){ padding-left:0; }

  /* artigo e perfil: coluna lateral desce */
  .artigo-corpo{ grid-template-columns:1fr; row-gap:34px; }
  .artigo-lado{ display:grid; grid-template-columns:1fr 1fr; column-gap:28px; align-items:start; }
  .leitura{ max-width:none; }

  /* No tablet e no celular a coluna da esquerda se desfaz: o retrato
     volta a ficar ao lado do nome, e as duas caixas descem inteiras.
     `display:contents` promove os filhos a itens da grade; as linhas
     são explícitas porque, sem elas, o posicionamento automático joga
     o nome para baixo da caixa de contato. */
  .perfil-topo{ grid-template-columns:150px 1fr; row-gap:28px; padding-top:34px; }
  .perfil-coluna{ display:contents; }
  .perfil-coluna > .perfil-mono{ grid-column:1; grid-row:1; width:150px; height:150px; aspect-ratio:auto; }
  .perfil-id{ grid-column:2; grid-row:1; }
  .contato-box{ grid-column:1 / -1; grid-row:2; }
  .perfil-lado{ grid-column:1 / -1; grid-row:3; }
  .perfil-mono{ width:150px; height:150px; }

  /* Indicador de posição do carrossel: entra exatamente onde o .car-nav
     sai, para nunca haver os dois nem nenhum. */
  .car-progresso{ display:block; height:2px; background:var(--regra); margin-top:20px; overflow:hidden; }
  .car-progresso i{ display:block; height:100%; background:var(--bordo); width:0; }

  /* fecho e destaque em coluna única */
  .grid{ grid-template-columns:1fr; row-gap:28px; }
  .fecho-mark, .fecho-txt, .dest-cita, .dest-corpo{ grid-column:1 / -1; }
  .fecho-mark img{ width:120px; height:120px; }

  .foot-grid{ grid-template-columns:1fr 1fr; row-gap:32px; }
  .bib-grid{ column-gap:36px; }
}

/* ─────────── ≤760px · celular ─────────── */
@media (max-width:760px){
  :root{ --gutter:20px; }

  /* menu vira grade de duas colunas: tudo visível, nada escondido */
  .mainnav .shell{ flex-direction:column; align-items:stretch; }
  .mainnav-links{ display:grid; grid-template-columns:1fr 1fr; }
  .mainnav-links a{
    padding:0 14px; min-height:50px; display:flex; align-items:center;
    border-bottom:1px solid var(--regra);
  }
  .mainnav-links a:nth-child(odd){ padding-left:0; }
  .mainnav-links a:nth-child(even){ border-right:none; }
  .nav-cta{ align-self:stretch; margin:14px 0 16px; text-align:center; padding:16px; }

  /* masthead das páginas internas */
  .masthead .shell{ flex-direction:column; align-items:flex-start; gap:16px; padding-top:24px; padding-bottom:20px; }
  .mh-brand{ gap:14px; }
  .mh-brand img{ width:54px; height:54px; }

  /* abertura da home */
  .abertura{ grid-template-columns:1fr; row-gap:22px; }
  .abertura-marca{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
  .abertura-marca img{ width:88px; height:88px; margin-bottom:0; }
  .abertura-marca .nome{ margin-bottom:2px; }
  .abertura .statement{ margin-top:0; }
  .quem{ padding:28px 0 34px; }
  .quem-corpo{ columns:1; }
  .quem-acoes{ flex-wrap:wrap; gap:16px 22px; }

  /* seções */
  .section-module, .noticias, .artigos, .diretorio{ padding:34px 0 40px; }
  .agenda, .biblio{ padding:34px 0 40px; }
  .sec-head{ flex-direction:column; align-items:flex-start; gap:12px; margin-bottom:24px; }
  .sec-head .aside{ text-align:left; }

  /* ── carrossel: ficha centralizada, com espia dos dois lados ──
     A ficha encostava à esquerda (`scroll-snap-align:start` mais o
     `padding-left` do .shell) e sobrava um pedaço só do lado direito.

     Para centralizar não basta trocar o snap para `center`: sem sangria
     lateral, a PRIMEIRA e a ÚLTIMA ficha nunca alcançam o centro — não há
     rolagem para lá. Daí a conta fechar em 100: 78vw de ficha e 11vw de
     cada lado. Essa sangria é o que permite a primeira ficha centralizar, e
     é ela também que vira a espia da ficha vizinha quando o carrossel
     avança. */
  /* `width:max-content` não é enfeite. Sem ele a .dir-strip continua com a
     largura da tela e as fichas apenas TRANSBORDAM dela — então o
     `padding-right` fica lá nos 360px, dentro da área visível, e não depois
     da última ficha. Resultado medido em Chromium: a primeira ficha
     centralizava e a última encostava na borda direita, com 79px de sobra
     só do lado esquerdo. Fazendo a faixa crescer com o conteúdo, a sangria
     final passa a existir de fato e a última ficha alcança o centro. */
  /* No celular o quadro se desfaz: aqui o desenho é a ficha centralizada
     com espia dos dois lados, que precisa da largura inteira da tela. */
  .dir-quadro{ max-width:none; padding:0; }
  .dir-strip{ width:max-content; padding-left:11vw; padding-right:11vw; }
  .ficha{ flex:0 0 78vw; scroll-snap-align:center; }
  .dir-viewport{ padding:6px 0 8px; }

  .car-nav{ display:none; }

  /* filtros viram grade de duas colunas */
  .filtros-linha{ display:grid; grid-template-columns:1fr 1fr; }
  .filtro{ padding:12px 14px; border-bottom:1px solid var(--regra); }
  .filtro:nth-child(odd){ padding-left:0; }
  .filtro:nth-child(even){ border-right:none; }
  .filtro .val{ font-size:15px; }
  .filtro-acao{ grid-column:1 / -1; padding:14px 0 0; }
  .modos{ width:100%; }
  .modos a{ flex:1; text-align:center; padding:13px 8px; }

  /* notícias: coluna única */
  .not-grid{ grid-template-columns:1fr; }
  .not-item{ padding:18px 0; border-right:none; }

  /* linhas de listagem desmontam */
  .ag-row{ grid-template-columns:1fr; row-gap:7px; padding:18px 0; }
  .ag-estado{ text-align:left; }

  .idx-row{ grid-template-columns:34px 1fr; row-gap:5px; }
  .idx-row > *:nth-child(n+3){ grid-column:2; }
  .idx-data{ text-align:left; }

  .res-row{ grid-template-columns:56px 1fr; column-gap:16px; row-gap:8px; align-items:start; }
  .res-mono{ width:56px; height:56px; font-size:21px; }
  .res-row > *:nth-child(n+3){ grid-column:1 / -1; }
  .res-row .ver{ text-align:left; }

  .bib-grid{ grid-template-columns:1fr; }
  .artigo-lado{ grid-template-columns:1fr; }
  .foot-grid{ grid-template-columns:1fr; row-gap:26px; }
  .foot-base{ flex-direction:column; gap:8px; }

  /* perfil */
  .perfil-topo{ grid-template-columns:1fr; row-gap:22px; }
  .perfil-mono{ width:120px; height:120px; }

  /* Coluna única: as posições explícitas do bloco de 1024px continuam
     valendo por cascata, e `grid-column:2` numa grade de uma coluna faz o
     navegador inventar uma segunda — 22px de estouro horizontal a 360px,
     medidos em Chromium. Aqui elas são reescritas para empilhar na ordem
     que a leitura pede: rosto, quem é, como falar, o resto. */
  .perfil-coluna > .perfil-mono{ grid-column:1; grid-row:1; width:120px; height:120px; }
  .perfil-id{ grid-column:1; grid-row:2; }
  .contato-box{ grid-column:1; grid-row:3; }
  .perfil-lado{ grid-column:1; grid-row:4; }
  .perfil-dado{ flex-direction:column; gap:3px; }
  .perfil-dado .rot{ width:auto; flex:none; }

  /* leitura */
  .artigo-cabeca{ padding:26px 0 22px; margin-bottom:26px; }
  .leitura p.abre::first-letter{ font-size:52px; }
  .leitura blockquote{ padding-left:18px; margin:22px 0; }

  .fecho{ padding:44px 0 44px; }
  .fecho-acoes{ flex-wrap:wrap; gap:18px; }
  .assinatura{ gap:10px; }

  /* alvos de toque com no mínimo 44px */
  .pag-nums a{ min-width:44px; height:44px; }
  .paginacao{ flex-direction:column; align-items:flex-start; gap:16px; }
  .btn-bloco, .btn-claro{ padding:16px 24px; }
  .utility .shell{ padding-top:13px; padding-bottom:13px; }
  .utility a{ display:inline-block; padding:3px 0; }
}

/* ─────────── ≤400px ─────────── */
@media (max-width:340px){
  .mainnav-links{ grid-template-columns:1fr; }
  .mainnav-links a{ padding-left:0; border-right:none; }
  .filtros-linha{ grid-template-columns:1fr; }
  .filtro{ padding-left:0; border-right:none; }
  .abertura-marca img{ width:74px; height:74px; }
}

/* --- respeita quem prefere menos movimento --- */
@media (prefers-reduced-motion:reduce){
  *{ animation:none !important; transition:none !important; scroll-behavior:auto !important; }
}

/* --- impressão: o protótipo é um periódico, então deve imprimir bem --- */
@media print{
  .mainnav, .utility, .nav-cta, .car-nav, .filtros{ display:none; }
  body{ background:#fff; font-size:11pt; }
  .fecho{ background:none; color:var(--tinta); }
  .fecho-txt h2 em{ color:var(--bordo); }
  a{ text-decoration:none; }
}

/* ═══ Alvos de toque (WCAG 2.2 · 2.5.8 exige 24px em AA; buscamos 44px) ═══
   A caixa cresce para cima e o texto fica no rodapé dela, para o sublinhado
   continuar colado à palavra em vez de flutuar longe dela. */
@media (max-width:1024px), (pointer:coarse){
  .lnk-sub, .lnk-claro, .sec-head .aside a{
    display:inline-flex; align-items:flex-end; min-height:44px; padding-bottom:3px;
  }
  .utility a{ display:inline-flex; align-items:center; min-height:44px; padding-top:0; padding-bottom:0; }
  .foot-grid a{ display:flex; align-items:center; min-height:44px; margin-bottom:0; }
  .idx-titulo a, .res-row h3 a, .ficha h3 a, .dest-corpo h3 a,
  .ag-titulo a, .not-item h3 a, .assinatura .autor a{
    display:inline-block; padding:6px 0;
  }
  .car-setas span{ width:44px; height:44px; }
  .modos a{ min-height:44px; display:inline-flex; align-items:center; justify-content:center; }
}
@media (max-width:1024px), (pointer:coarse){
  .artigo-lado .autor-nome a, .bib-item a, .ext-row a{ display:inline-block; padding:6px 0; }
}
@media (max-width:1024px), (pointer:coarse){ .wordmark a{ display:inline-block; padding:4px 0; } }

/* O SVG do mapa escala junto com o contêiner: no celular os rótulos
   precisam de corpo maior em unidades de viewBox para continuarem legíveis. */
@media (max-width:760px){
  .mapa-rot{ font-size:15px; }
  /* no celular a contagem por cidade sai: o tamanho do ponto e a legenda
     já dão a grandeza, e dois níveis de rótulo entopem o aglomerado do Sudeste */
  .mapa-num{ display:none; }
  /* deixa o rótulo transbordar o viewBox para nomes longos não serem cortados */
  .mapa-quadro svg{ overflow:visible; }
  .mapa-quadro{ padding-right:46px; }
  .mapa-quadro .costa{ stroke-width:1.4; }
  .mapa-quadro .fronteira{ stroke-width:.9; }
  .mapa-ponto{ stroke-width:1.2; }
}

/* ═══════════════════════════════════════════════════════════════
   FORMULÁRIOS E FLUXOS (entrada, cadastro, onboarding, checkout, painel)
   Mensagens de erro seguem a seção 7 da especificação, ao pé da letra.
   ═══════════════════════════════════════════════════════════════ */

/* --- foco visível: obrigatório para navegação por teclado --- */
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible, summary:focus-visible{
  outline:2px solid var(--bordo); outline-offset:2px;
}

/* --- topo dos fluxos focados: sem menu, para não dispersar --- */
.fluxo-topo{ border-bottom:1px solid var(--regra); }
.fluxo-topo .shell{
  display:flex; align-items:center; justify-content:space-between;
  padding-top:22px; padding-bottom:20px; gap:20px;
}
.fluxo-marca{ display:flex; align-items:center; gap:14px; }
.fluxo-marca img{ width:48px; height:48px; }
.fluxo-marca span{ font-size:27px; letter-spacing:-.025em; }

.passos{ display:flex; flex-wrap:wrap; gap:0 34px; border-bottom:1px solid var(--regra); }
.passo{
  display:flex; align-items:baseline; gap:9px; padding:15px 0 13px;
  color:var(--tinta-suave); border-bottom:2px solid transparent; margin-bottom:-1px;
}
.passo .n{ font-family:var(--mono); font-size:11px; letter-spacing:.11em; }
.passo .t{ font-size:16px; }
.passo.ativo{ color:var(--tinta); border-bottom-color:var(--bordo); }
.passo.ativo .n{ color:var(--bordo); font-weight:600; }
.passo.feito .n{ color:var(--terracota-txt); }

/* --- campos --- */
.form-col{ max-width:580px; }
.form-grid{ display:grid; grid-template-columns:1fr 1fr; column-gap:24px; }
.form-grid.tres{ grid-template-columns:2fr 1fr 1fr; }
.campo{ margin-bottom:22px; }
.campo > label, .rot-campo{
  display:block; font-family:var(--mono); font-size:11px; letter-spacing:.11em;
  text-transform:uppercase; font-weight:500; color:var(--terracota-txt); margin-bottom:7px;
}
.campo .opcional{ color:var(--tinta-suave); text-transform:none; letter-spacing:0; font-family:var(--serif); font-size:13px; }
input[type=text], input[type=email], input[type=password], input[type=tel],
input[type=url], input[type=search], input[type=number], input[type=date],
select, textarea{
  width:100%; font-family:var(--serif); font-size:17px; line-height:1.4; color:var(--tinta);
  background:#FFFCF4; border:1px solid var(--regra-media); border-radius:0;
  padding:13px 14px; -webkit-appearance:none; appearance:none;
}
textarea{ min-height:150px; resize:vertical; }
select{
  background-image:linear-gradient(45deg,transparent 50%,var(--tinta-suave) 50%),
                   linear-gradient(135deg,var(--tinta-suave) 50%,transparent 50%);
  background-position:calc(100% - 20px) 22px, calc(100% - 14px) 22px;
  background-size:6px 6px, 6px 6px; background-repeat:no-repeat; padding-right:44px;
}
::placeholder{ color:var(--tinta-suave); opacity:1; }
.ajuda{ font-size:14px; line-height:1.5; color:var(--tinta-suave); font-weight:300; margin-top:7px; }
.contador{ float:right; font-family:var(--mono); font-size:10px; letter-spacing:.08em; color:var(--tinta-suave); text-transform:none; }

/* erro */
.campo.invalido input, .campo.invalido select, .campo.invalido textarea{
  border-color:var(--bordo); border-width:2px; padding:12px 13px;
}
.erro{ display:flex; align-items:flex-start; gap:8px; font-size:14px; color:var(--bordo); margin-top:8px; font-weight:400; }
.erro::before{ content:"—"; font-family:var(--mono); }

/* consentimento / caixas de marcação */
.consent{ display:flex; gap:13px; align-items:flex-start; margin-bottom:15px; }
.consent input[type=checkbox], .consent input[type=radio]{
  appearance:none; -webkit-appearance:none; flex:0 0 22px; width:22px; height:22px;
  border:1px solid var(--regra-media); background:#FFFCF4; margin:2px 0 0; position:relative; cursor:pointer;
}
.consent input[type=radio]{ border-radius:50%; }
.consent input:checked{ background:var(--tinta); border-color:var(--tinta); }
.consent input[type=checkbox]:checked::after{
  content:"✓"; position:absolute; inset:0; display:flex; align-items:center;
  justify-content:center; color:var(--papel); font-size:14px; line-height:1;
}
.consent input[type=radio]:checked::after{
  content:""; position:absolute; inset:5px; border-radius:50%; background:var(--papel);
}
.consent label{ font-size:15px; line-height:1.55; color:var(--tinta-suave); font-weight:300; cursor:pointer; }
.consent a{ color:var(--bordo); border-bottom:1px solid var(--bordo); }
fieldset{ border:none; padding:0; margin:0 0 22px; }
legend{
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase;
  font-weight:600; color:var(--tinta); padding:0 0 9px; margin-bottom:18px;
  width:100%; border-bottom:1px solid var(--regra);
}

/* botões */
button, .btn{ font-family:var(--mono); border:none; cursor:pointer; }
.btn-principal{
  display:inline-block; background:var(--tinta); color:var(--papel);
  padding:16px 30px; font-size:11px; letter-spacing:.11em; text-transform:uppercase; font-weight:600;
}
.btn-largo{ display:block; width:100%; text-align:center; }
.btn-secundario{
  display:inline-block; background:transparent; color:var(--tinta);
  border:1px solid var(--regra-media); padding:15px 28px;
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; font-weight:500;
}
.acoes-form{ display:flex; align-items:center; gap:20px; flex-wrap:wrap; margin-top:8px; }

/* --- onboarding: escolha de participação --- */
.opcoes{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; align-items:stretch; }
.opcao{ border:1px solid var(--regra-media); padding:30px 26px 26px; display:flex; flex-direction:column; position:relative; }
.opcao.destaque{ border:2px solid var(--tinta); padding:29px 25px 25px; }
.opcao .marca{
  position:absolute; top:-1px; right:22px; background:var(--laranja); color:var(--marrom);
  font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase;
  font-weight:600; padding:5px 12px;
}
.opcao h3{ font-size:24px; font-weight:400; letter-spacing:-.015em; margin-bottom:6px; }
.opcao .preco{ font-size:38px; font-weight:400; letter-spacing:-.02em; color:var(--bordo); margin:10px 0 2px; }
.opcao .preco small{ font-family:var(--mono); font-size:12px; letter-spacing:.08em; color:var(--tinta-suave); }
.opcao .sub{ font-size:14px; color:var(--tinta-suave); font-weight:300; margin-bottom:18px; }
.opcao ul{ list-style:none; margin:0 0 24px; }
.opcao li{ font-size:15px; line-height:1.45; color:var(--tinta-suave); font-weight:300; padding:10px 0; border-top:1px solid var(--regra); }
.opcao .acao{ margin-top:auto; }

/* --- checkout --- */
.checkout{ display:grid; grid-template-columns:1fr 340px; column-gap:56px; align-items:start; }
.abas{ display:flex; border:1px solid var(--regra-media); margin-bottom:28px; }
.abas a{
  flex:1; text-align:center; padding:15px 10px; border-right:1px solid var(--regra-media);
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; font-weight:500;
}
.abas a:last-child{ border-right:none; }
.abas a.ativo{ background:var(--tinta); color:var(--papel); font-weight:600; }
.resumo{ border:1px solid var(--regra-media); padding:26px 24px; }
.resumo h3{ font-size:20px; font-weight:400; margin-bottom:4px; }
.resumo .sub{ font-size:14px; color:var(--tinta-suave); font-weight:300; margin-bottom:18px; }
.resumo-linha{ display:flex; justify-content:space-between; align-items:baseline; gap:14px; padding:11px 0; border-top:1px solid var(--regra); font-size:15px; font-weight:300; color:var(--tinta-suave); }
.resumo-linha b{ font-weight:400; color:var(--tinta); }
.resumo-total{ display:flex; justify-content:space-between; align-items:baseline; padding:14px 0 0; border-top:2px solid var(--tinta); margin-top:6px; }
.resumo-total .v{ font-size:30px; letter-spacing:-.02em; color:var(--bordo); }

/* espera do redirecionamento ao Asaas (page-checkout.php, page-apoie.php)

   .conf-checkout-form não carrega visual: é o gancho que o JS das duas
   páginas usa para interceptar o envio. Fica declarada mesmo assim porque
   classe presente na marcação e ausente da folha é indistinguível de regra
   esquecida — foi exatamente assim que .pular-para-conteudo passou meses
   aparecendo solta no topo de todas as páginas.

   A espera é FIXA na janela, não no fluxo, por um motivo estrutural: o bloco
   é o segundo filho de .checkout, que é grade de `1fr 340px`. Exibido no
   lugar onde está, ele tomaria a coluna do resumo e empurraria o <aside>
   para uma terceira linha — a página se remontaria inteira no instante em
   que ela precisa ficar quieta. Cobrindo a janela, também impede o segundo
   clique no botão enquanto o Asaas responde.

   z-index 60: acima da barra fixa (40) e do menu suspenso (30), abaixo do
   link de pular para o conteúdo (99), que nunca deve ficar inalcançável.
   O `[hidden]` global (display:none !important) continua mandando. */
.conf-checkout-form{ display:block; }

.checkout-loading{
  position:fixed; inset:0; z-index:60;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:15px; padding:24px; text-align:center;
  background:var(--papel);
}
.checkout-loading p{ margin:0; max-width:36ch; }
.checkout-loading .ajuda{ font-size:15px; line-height:1.5; font-weight:300; color:var(--tinta-suave); }

.checkout-loading-icone{ display:flex; align-items:flex-end; justify-content:center; gap:7px; height:34px; }

/* Três fios, no mesmo vocabulário do resto do sistema — nada de disco
   girando, que pediria raio de canto e sombra. Em repouso ficam inteiros e
   opacos: com `prefers-reduced-motion` a animação é desligada globalmente
   (ver o bloco no início do arquivo), e o que sobra precisa continuar
   parecendo uma marca, não um componente quebrado. */
.checkout-loading-traco{
  width:2px; height:34px; background:var(--bordo);
  transform-origin:50% 100%;
  animation:conf-espera 1.05s ease-in-out infinite;
}
.checkout-loading-traco:nth-child(2){ animation-delay:.14s; }
.checkout-loading-traco:nth-child(3){ animation-delay:.28s; }

@keyframes conf-espera{
  0%, 100%{ transform:scaleY(.34); opacity:.45; }
  50%     { transform:scaleY(1);   opacity:1; }
}

/* aviso / nota destacada (LGPD, moderação, segurança) */
.aviso{ border-left:2px solid var(--bordo); padding:15px 20px; background:rgba(166,31,33,.045); margin-bottom:24px; }
.aviso p{ font-size:14px; line-height:1.55; color:var(--tinta-suave); font-weight:300; }
.aviso strong{ color:var(--tinta); font-weight:500; }

/* --- painel do usuário --- */
.painel-nav{ background:var(--papel-2); border-bottom:1px solid var(--regra); }
.painel-nav .shell{ display:flex; overflow-x:auto; scrollbar-width:none; }
.painel-nav .shell::-webkit-scrollbar{ display:none; }
.painel-nav a{
  padding:15px 20px; white-space:nowrap; border-right:1px solid var(--regra);
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; font-weight:500;
}
.painel-nav a:first-child{ padding-left:0; }
.painel-nav a.ativo{ color:var(--bordo); font-weight:600; box-shadow:inset 0 -2px 0 var(--bordo); }
.painel-topo{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; padding:34px 0 8px; }
.painel-topo h1{ font-size:clamp(28px,3.2vw,40px); font-weight:400; letter-spacing:-.022em; }
.estado{ display:inline-flex; align-items:center; gap:8px; font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; }
.estado .pt{ width:8px; height:8px; border-radius:50%; background:var(--terracota); }
.estado.aprovado .pt{ background:#3E6B4A; } .estado.aprovado{ color:#2F5439; }
.estado.pendente .pt{ background:var(--laranja); } .estado.pendente{ color:var(--terracota-txt); }
.secao-form{ padding:30px 0; border-top:1px solid var(--regra); }
.secao-form > .cab{ margin-bottom:22px; }
.secao-form h2{ font-size:24px; font-weight:400; letter-spacing:-.015em; margin-bottom:5px; }
.secao-form .cab p{ font-size:15px; color:var(--tinta-suave); font-weight:300; }

/* envio de foto */
.foto-envio{ display:flex; gap:22px; align-items:flex-start; }
.foto-previa{ width:132px; height:132px; flex:0 0 132px; display:flex; align-items:center; justify-content:center; background:#A61F21; }
.foto-previa span{ font-family:var(--serif); font-size:48px; color:var(--creme); }

/* etiquetas selecionáveis (especialidades, abordagens) */
.etiquetas{ display:flex; flex-wrap:wrap; gap:9px; }
.etiqueta{
  display:inline-flex; align-items:center; gap:8px; border:1px solid var(--regra-media);
  padding:9px 14px; font-size:14px; color:var(--tinta-suave); font-weight:300; cursor:pointer;
}
.etiqueta.marcada{ background:var(--tinta); color:var(--papel); border-color:var(--tinta); }
.etiqueta .x{ font-family:var(--mono); font-size:11px; }

/* rodapé enxuto dos fluxos */
.rodape-slim{ border-top:1px solid var(--regra); padding:26px 0 30px; margin-top:56px; }
.rodape-slim .shell{ display:flex; justify-content:space-between; gap:20px; flex-wrap:wrap; color:var(--tinta-suave); }
.rodape-slim a{ margin-left:20px; }
.rodape-slim a:first-child{ margin-left:0; }

/* responsivo dos formulários */
@media (max-width:1024px){
  .checkout{ grid-template-columns:1fr; row-gap:34px; }
  .opcoes{ grid-template-columns:1fr; }
  .opcao .acao .btn-principal{ display:inline-block; width:auto; }
}
@media (max-width:760px){
  .form-grid, .form-grid.tres{ grid-template-columns:1fr; }
  .passos{ gap:0 22px; }
  .passo .t{ font-size:15px; }
  .fluxo-topo .shell{ padding-top:16px; padding-bottom:14px; }
  .fluxo-marca img{ width:40px; height:40px; }
  .fluxo-marca span{ font-size:22px; }
  .foto-envio{ flex-direction:column; gap:16px; }
  .painel-topo{ flex-direction:column; align-items:flex-start; gap:12px; }
  .btn-principal, .btn-secundario{ width:100%; text-align:center; }
  .acoes-form{ gap:14px; }
  .rodape-slim .shell{ flex-direction:column; gap:10px; }
  .rodape-slim a{ margin-left:0; margin-right:18px; }
}

/* atalho de teclado: pular direto ao conteúdo */
/* `.screen-reader-text` é classe do núcleo do WordPress: `the_posts_pagination()`
   a emite sozinha, e search.php a usa para completar o rótulo dos links ("Ler
   artigo: <título>"). O tema não a definia em lugar nenhum — então esse texto,
   que existe só para leitor de tela, aparecia escrito na página. Encontrado na
   auditoria de 17/08.

   `clip-path` em vez do `clip` obsoleto, e sem `display:none`: conteúdo com
   display:none é ignorado por leitor de tela, que é o oposto do objetivo. */
.screen-reader-text{
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip-path:inset(50%); white-space:nowrap; margin:-1px; padding:0; border:0;
}
.screen-reader-text:focus{
  position:fixed; left:0; top:0; width:auto; height:auto; clip-path:none;
  background:var(--tinta); color:var(--papel); padding:13px 20px; z-index:99;
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase;
}

/* `.pular-para-conteudo` é o nome que header.php usa; `.pular` era o nome do
   protótipo e ficou aqui sozinho. Sem o seletor certo, a regra abaixo nunca
   se aplicava e o link "Pular para o conteúdo" aparecia visível no topo de
   TODA página — encontrado na auditoria de 17/08. Os dois nomes ficam, para
   não quebrar marcação antiga que ainda use `.pular`. */
.pular,
.pular-para-conteudo{
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip-path:inset(50%); white-space:nowrap;
}
.pular:focus,
.pular-para-conteudo:focus{
  position:fixed; left:0; top:0; width:auto; height:auto; clip-path:none;
  background:var(--tinta); color:var(--papel); padding:13px 20px; z-index:99;
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase;
}

.checkout.estreito{ grid-template-columns:1fr 380px; }
@media (max-width:1024px){ .checkout.estreito{ grid-template-columns:1fr; } }

/* alvos de toque dos fluxos de conta */
@media (max-width:1024px), (pointer:coarse){
  .rodape-slim a, .fluxo-topo .mono, .painel-nav a{
    display:inline-flex; align-items:center; min-height:44px;
  }
  .abas a{ min-height:48px; display:flex; align-items:center; justify-content:center; }
  .etiqueta{ min-height:44px; }
  .consent input[type=checkbox], .consent input[type=radio]{ width:24px; height:24px; flex-basis:24px; }
  .consent label{ padding:8px 0; }
}

/* ═══════════════════════════════════════════════════════════════
   PAINEL ADMINISTRATIVO
   A barra escura sinaliza contexto privilegiado: quem está no admin
   precisa saber disso o tempo todo.
   ═══════════════════════════════════════════════════════════════ */

.admin-barra{ background:var(--marrom); color:var(--creme); }
.admin-barra .shell{ display:flex; align-items:center; justify-content:space-between; gap:20px; padding-top:13px; padding-bottom:13px; }
.admin-barra .marca{ display:flex; align-items:center; gap:11px; }
.admin-barra .marca img{ width:28px; height:28px; }
.admin-barra .marca b{ font-family:var(--serif); font-size:19px; font-weight:400; letter-spacing:-.02em; }
.admin-barra .rotulo{ font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--laranja); border:1px solid rgba(242,154,30,.5); padding:4px 9px; }
.admin-barra a{ color:var(--pessego); }

.admin-nav{ background:var(--papel-2); border-bottom:1px solid var(--regra); }
.admin-nav .shell{ display:flex; overflow-x:auto; scrollbar-width:none; }
.admin-nav .shell::-webkit-scrollbar{ display:none; }
.admin-nav a{
  padding:15px 20px; white-space:nowrap; border-right:1px solid var(--regra);
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; font-weight:500;
}
.admin-nav a:first-child{ padding-left:0; }
.admin-nav a.ativo{ color:var(--bordo); font-weight:600; box-shadow:inset 0 -2px 0 var(--bordo); }
.admin-nav .conta{ margin-left:auto; padding-left:20px; border-right:none; color:var(--tinta-suave); }

/* --- mostradores --- */
.kpis{ display:grid; grid-template-columns:repeat(4,1fr); border-top:2px solid var(--tinta); border-bottom:1px solid var(--regra); }
.kpi{ padding:20px 24px; border-right:1px solid var(--regra); }
.kpi:first-child{ padding-left:0; }
.kpi:last-child{ border-right:none; }
.kpi .rot{ display:block; font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--terracota-txt); }
.kpi .val{ display:block; font-size:36px; line-height:1.05; letter-spacing:-.025em; margin:9px 0 5px; }
.kpi .delta{ font-family:var(--mono); font-size:11px; letter-spacing:.06em; color:var(--tinta-suave); }
.kpi .delta.sobe{ color:#2F5439; } .kpi .delta.desce{ color:var(--bordo); }
.kpi.alerta .val{ color:var(--bordo); }

/* --- gráfico --- */
.grafico svg{ width:100%; height:auto; display:block; }
.gr-linha{ fill:none; stroke:#A61F21; stroke-width:2; stroke-linejoin:round; stroke-linecap:round; }
.gr-grade{ stroke:rgba(59,33,26,.16); stroke-width:1; }
.gr-eixo{ font-family:var(--mono); font-size:10px; fill:#7A5647; font-variant-numeric:tabular-nums; }
.gr-ponto{ fill:#A61F21; stroke:#FAF4E4; stroke-width:2; }
.gr-rot{ font-family:var(--mono); font-size:11px; fill:#3B211A; font-weight:600; }
details.tabela-twin{ margin-top:14px; border-top:1px solid var(--regra); padding-top:12px; }
details.tabela-twin summary{ font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--bordo); cursor:pointer; }

/* --- tabelas --- */
.tabela{ width:100%; border-collapse:collapse; }
.tabela th{
  text-align:left; font-family:var(--mono); font-size:10px; letter-spacing:.11em;
  text-transform:uppercase; font-weight:600; color:var(--terracota-txt);
  padding:0 16px 11px 0; border-bottom:2px solid var(--tinta); white-space:nowrap;
}
.tabela td{ padding:15px 16px 15px 0; border-bottom:1px solid var(--regra); font-size:15px; font-weight:300; vertical-align:middle; }
.tabela td strong{ font-weight:400; font-size:16px; }
.tabela .num{ font-family:var(--mono); font-size:13px; font-variant-numeric:tabular-nums; text-align:right; padding-right:0; }
.tabela th.num{ text-align:right; padding-right:0; }
.tabela .acao{ text-align:right; padding-right:0; white-space:nowrap; }
.tabela-rolagem{ overflow-x:auto; }

/* --- selos de estado --- */
.selo{ display:inline-flex; align-items:center; gap:7px; font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; white-space:nowrap; }
.selo::before{ content:""; width:7px; height:7px; border-radius:50%; flex:0 0 7px; }
.selo.ok{ color:#2F5439; } .selo.ok::before{ background:#3E6B4A; }
.selo.pend{ color:var(--terracota-txt); } .selo.pend::before{ background:var(--laranja); }
.selo.rej{ color:var(--bordo); } .selo.rej::before{ background:var(--bordo); }
.selo.off{ color:var(--tinta-suave); } .selo.off::before{ background:var(--tinta-suave); }

/* --- moderação: fila + revisão --- */
.moderacao{ display:grid; grid-template-columns:330px 1fr; column-gap:40px; align-items:start; }
.fila{ border-top:2px solid var(--tinta); }
.fila-cab{ display:flex; justify-content:space-between; align-items:baseline; padding:12px 0; border-bottom:1px solid var(--regra); }
.fila-item{ display:block; padding:15px 0; border-bottom:1px solid var(--regra); }
.fila-item.ativo{ border-left:2px solid var(--bordo); padding-left:14px; margin-left:-16px; background:rgba(166,31,33,.04); }
.fila-item .linha1{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; }
.fila-item .nome{ font-size:17px; }
.fila-item .espera{ font-family:var(--mono); font-size:10px; letter-spacing:.06em; color:var(--terracota-txt); white-space:nowrap; }
.fila-item .meta{ font-family:var(--mono); font-size:10px; letter-spacing:.06em; color:var(--tinta-suave); margin-top:5px; display:block; }

.revisao{ border:1px solid var(--regra-media); }
.revisao-cab{ display:flex; justify-content:space-between; align-items:flex-start; gap:20px; padding:22px 26px; border-bottom:1px solid var(--regra); }
.revisao-cab h2{ font-size:26px; font-weight:400; letter-spacing:-.018em; margin-bottom:5px; }
.revisao-corpo{ padding:24px 26px; }
.campo-revisao{ padding:14px 0; border-top:1px solid var(--regra); display:grid; grid-template-columns:150px 1fr; column-gap:20px; align-items:start; }
.campo-revisao:first-child{ border-top:none; padding-top:0; }
.campo-revisao .rot{ font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--terracota-txt); padding-top:3px; }
.campo-revisao .val{ font-size:16px; font-weight:300; line-height:1.55; }
.campo-revisao .val em{ color:var(--tinta-suave); font-style:italic; }
.decisao{ border-top:1px solid var(--regra); padding:24px 26px; background:var(--papel-2); }
.decisao h3{ font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; font-weight:600; margin-bottom:14px; }
.decisao-botoes{ display:flex; gap:12px; flex-wrap:wrap; margin-top:18px; }
.btn-aprovar{ background:#2F5439; color:var(--papel); }
.btn-ajustes{ background:transparent; color:var(--tinta); border:1px solid var(--regra-media); }
.btn-reprovar{ background:transparent; color:var(--bordo); border:1px solid var(--bordo); }
.criterios{ border:1px solid var(--regra); padding:18px 20px; margin-top:22px; }
.criterios h4{ font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--terracota-txt); margin-bottom:10px; }
.criterios li{ font-size:14px; line-height:1.5; color:var(--tinta-suave); font-weight:300; padding:5px 0 5px 18px; position:relative; list-style:none; }
.criterios li::before{ content:"—"; position:absolute; left:0; font-family:var(--mono); }

/* histórico */
.historico{ border-top:1px solid var(--regra); }
.hist-item{ display:grid; grid-template-columns:120px 1fr; column-gap:20px; padding:13px 0; border-bottom:1px solid var(--regra); align-items:start; }
.hist-item .quando{ font-family:var(--mono); font-size:10px; letter-spacing:.06em; color:var(--tinta-suave); padding-top:3px; }
.hist-item .oque{ font-size:15px; font-weight:300; line-height:1.5; }
.hist-item .oque b{ font-weight:400; }

@media (max-width:1024px){
  .kpis{ grid-template-columns:1fr 1fr; }
  .kpi{ border-bottom:1px solid var(--regra); }
  .kpi:nth-child(2n){ border-right:none; padding-right:0; }
  .kpi:nth-child(2n+1){ padding-left:0; }
  .moderacao{ grid-template-columns:1fr; row-gap:32px; }
}
@media (max-width:760px){
  .kpis{ grid-template-columns:1fr; }
  .kpi{ border-right:none; padding:16px 0; }
  .campo-revisao{ grid-template-columns:1fr; row-gap:5px; }
  .revisao-cab, .revisao-corpo, .decisao{ padding:18px; }
  .decisao-botoes .btn-principal, .decisao-botoes .btn-secundario{ width:100%; }
  .admin-barra .shell{ flex-wrap:wrap; gap:10px; }
}

/* grade de duas colunas do painel — em classe, nunca em style inline,
   para a media query conseguir desmontar no celular */
.painel-grade{ display:grid; grid-template-columns:1.6fr 1fr; column-gap:48px; align-items:start; }
.painel-grade.igual{ grid-template-columns:1fr 1fr; }
@media (max-width:1024px){
  .painel-grade, .painel-grade.igual{ grid-template-columns:1fr; row-gap:34px; }
}

/* ═══════════════════════════════════════════════════════════════
   COMPONENTES DAS TELAS RESTANTES
   ═══════════════════════════════════════════════════════════════ */

/* estado vazio — sempre diz o que fazer, nunca só "nada aqui" */
.vazio{ border:1px dashed var(--regra-media); padding:44px 34px; text-align:center; }
.vazio h3{ font-size:22px; font-weight:400; margin-bottom:8px; }
.vazio p{ font-size:16px; color:var(--tinta-suave); font-weight:300; max-width:40em; margin:0 auto 20px; line-height:1.55; }

/* caixa de entrada de contatos */
.msg{ display:grid; grid-template-columns:20px 1fr 130px; column-gap:18px; padding:18px 0; border-top:1px solid var(--regra); align-items:start; }
.msg:last-child{ border-bottom:1px solid var(--regra); }
.msg .bolinha{ width:9px; height:9px; border-radius:50%; background:var(--bordo); margin-top:8px; }
.msg.lida .bolinha{ background:transparent; border:1px solid var(--regra-media); }
.msg.lida .de{ font-weight:300; color:var(--tinta-suave); }
.msg .de{ font-size:17px; display:block; margin-bottom:3px; }
.msg .contato{ font-family:var(--mono); font-size:10px; letter-spacing:.06em; color:var(--tinta-suave); display:block; margin-bottom:8px; }
.msg .texto{ font-size:15px; line-height:1.55; color:var(--tinta-suave); font-weight:300; }
.msg .quando{ font-family:var(--mono); font-size:10px; letter-spacing:.06em; color:var(--tinta-suave); text-align:right; }

/* seletor de tipo de conteúdo */
.tipos{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.tipo-op{ border:1px solid var(--regra-media); padding:18px 16px; display:block; }
.tipo-op.marcado{ border:2px solid var(--tinta); padding:17px 15px; }
.tipo-op b{ display:block; font-family:var(--serif); font-size:18px; font-weight:400; margin-bottom:5px; }
.tipo-op span{ font-size:13px; line-height:1.45; color:var(--tinta-suave); font-weight:300; }

/* documento legal */
.legal{ display:grid; grid-template-columns:250px 1fr; column-gap:56px; align-items:start; }
.legal-indice{ position:sticky; top:24px; border-top:2px solid var(--tinta); padding-top:14px; }
.legal-indice a{ display:block; font-size:15px; font-weight:300; color:var(--tinta-suave); padding:7px 0; }
.legal-indice a.ativo{ color:var(--bordo); }
.legal-corpo h2{ font-size:26px; font-weight:400; letter-spacing:-.015em; margin:34px 0 12px; padding-top:22px; border-top:1px solid var(--regra); }
.legal-corpo h2:first-child{ margin-top:0; padding-top:0; border-top:none; }
.legal-corpo p, .legal-corpo li{ font-size:17px; line-height:1.65; color:var(--tinta-suave); font-weight:300; margin-bottom:14px; }
.legal-corpo ul{ margin-left:20px; }
.legal-corpo strong{ color:var(--tinta); font-weight:500; }

/* zona de risco (exclusão de conta) */
.zona-risco{ border:1px solid var(--bordo); padding:24px 26px; margin-top:34px; }
.zona-risco h3{ font-size:20px; font-weight:400; color:var(--bordo); margin-bottom:8px; }
.zona-risco p{ font-size:15px; line-height:1.55; color:var(--tinta-suave); font-weight:300; margin-bottom:16px; }

/* escolha de valor da contribuição */
.valores{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:22px; }
.valor-op{ border:1px solid var(--regra-media); padding:18px 14px; text-align:center; display:block; }
.valor-op.marcado{ border:2px solid var(--tinta); padding:17px 13px; }
.valor-op b{ display:block; font-family:var(--serif); font-size:26px; font-weight:400; letter-spacing:-.02em; }
.valor-op span{ font-family:var(--mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--tinta-suave); }

/* princípios e compromissos da carta */
.principio{ display:grid; grid-template-columns:56px 1fr; column-gap:22px; padding:22px 0; border-top:1px solid var(--regra); align-items:start; }
.principio .n{ font-family:var(--mono); font-size:13px; font-weight:600; color:var(--bordo); padding-top:5px; }
.principio h3{ font-size:22px; font-weight:400; letter-spacing:-.015em; margin-bottom:7px; }
.principio p{ font-size:16px; line-height:1.6; color:var(--tinta-suave); font-weight:300; }

/* cabeçalho de evento */
.evento-cab{ display:grid; grid-template-columns:130px 1fr; column-gap:30px; align-items:start; padding:38px 0 30px; border-bottom:2px solid var(--tinta); }
.evento-data{ background:var(--marrom); color:var(--creme); padding:20px 14px; text-align:center; }
.evento-data .d{ font-size:46px; line-height:1; letter-spacing:-.03em; }
.evento-data .m{ font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; display:block; margin-top:6px; }
.evento-data .a{ font-family:var(--mono); font-size:10px; letter-spacing:.1em; color:var(--dourado); display:block; margin-top:3px; }

@media (max-width:1024px){
  .legal{ grid-template-columns:1fr; row-gap:26px; }
  .legal-indice{ position:static; }
  .legal-indice a{ display:inline-block; margin-right:20px; }
  .tipos{ grid-template-columns:1fr 1fr; }
}
@media (max-width:760px){
  .tipos, .valores{ grid-template-columns:1fr 1fr; }
  .msg{ grid-template-columns:16px 1fr; row-gap:6px; }
  .msg .quando{ grid-column:2; text-align:left; }
  .evento-cab{ grid-template-columns:1fr; row-gap:20px; }
  .evento-data{ display:inline-block; padding:14px 22px; }
  .principio{ grid-template-columns:1fr; row-gap:6px; }
}

/* variante de dois mostradores — em classe, não em style inline */
.kpis.duas{ grid-template-columns:1fr 1fr; }
@media (max-width:760px){ .kpis.duas{ grid-template-columns:1fr; } }

/* ═══ Tamanho de alvo em TODAS as larguras ═══
   A WCAG 2.2 (2.5.8) admite alvos menores quando há espaçamento suficiente,
   mas depender dessa exceção é frágil. Garantimos 24px sempre; o conforto de
   44px continua reservado ao toque, para não afrouxar o ritmo denso no desktop. */
.lnk-sub, .lnk-claro, .sec-head .aside a, .utility a, .foot-grid a,
.rodape-slim a, .fluxo-topo .mono, .legal-indice a, .tabela .acao a,
.idx-titulo a, .res-row h3 a, .ficha h3 a, .dest-corpo h3 a,
.ag-titulo a, .not-item h3 a, .assinatura .autor a, .artigo-lado .autor-nome a,
.wordmark a, .msg a, .criterios a{
  display:inline-flex; align-items:center; min-height:24px;
}
.lnk-sub, .lnk-claro, .sec-head .aside a{ align-items:flex-end; }
.foot-grid a{ display:flex; }

/* .bib-ref a fica de fora do grupo acima de propósito: é um link que
   envolve uma citação ABNT inteira, não um rótulo curto — `inline-flex`
   sem quebra vira uma única linha e a citação vaza por cima do item
   vizinho (texto sobreposto). Herdando `display:inline` padrão, o texto
   volta a quebrar em várias linhas normalmente, e o alvo de toque de 24px
   já sai garantido pela `line-height:1.45` a `font-size:17px` do `.bib-ref`
   (≈24,6px por linha), sem precisar de flex. */

/* Item de grade não encolhe abaixo do próprio conteúdo por padrão
   (min-width:auto). Sem isto, uma tabela ou um bloco largo estoura
   a coluna no celular em vez de rolar dentro dela. */
.painel-grade > *, .checkout > *, .moderacao > *, .grid > *,
/* `.abertura > *` entrou em 17/08 pela auditoria: é a armadilha nº 2 do
   LEIA-ME do projeto ("item de grade não encolhe abaixo do conteúdo"), e a
   abertura da home era a única grade que tinha ficado de fora. Entre 761px e
   o desktop ela é 300px + 1fr, e o `.statement` chega a 56px de corpo — uma
   palavra longa empurraria a coluna para fora. */
.legal > *, .mapa-bloco > *, .abertura > *, .artigo-lado > *{ min-width:0; }

/* ═══════════════════════════════════════════════════════════════
   PÁGINA PÚBLICA DO PROFISSIONAL — acréscimos
   Vem de single-profissional.php. `.abas` já existe (checkout usa
   abas em pílula, com borda inteira); aqui o padrão visual é outro —
   sublinhado, como em publicações — por isso a classe é `.abas-pub`,
   para não colidir com o componente do checkout.
   ═══════════════════════════════════════════════════════════════ */

.bloco-perfil{ padding:34px 0; border-top:1px solid var(--regra); }
.bloco-perfil > .sec-mark{ margin-bottom:16px; }
.bloco-perfil h2{ font-size:30px; font-weight:400; letter-spacing:-.018em; margin-bottom:16px; }

.selos{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:20px; }
.selo-item{
  display:inline-flex; align-items:center; gap:7px;
  font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase;
  font-weight:500; padding:7px 11px; border:1px solid var(--regra-media); color:var(--tinta);
}
.selo-item .pt{ width:7px; height:7px; background:var(--bordo); display:inline-block; }
.selo-item.forte{ background:var(--bordo); color:var(--creme); border-color:var(--bordo); }
.selo-item.forte .pt{ background:var(--creme); }
.selo-item.calmo{ color:var(--tinta-suave); }
.selo-item.calmo .pt{ background:var(--tinta-suave); }

.dados-grade{ display:grid; grid-template-columns:1fr 1fr; column-gap:48px; }
.dados-grade > *{ min-width:0; }

.video-fachada{
  position:relative; width:100%; max-width:760px; aspect-ratio:16/9;
  background:var(--marrom); border:none; padding:0; cursor:pointer; display:block; overflow:hidden;
}
.video-fachada img{ width:100%; height:100%; object-fit:cover; }
.video-fachada .cobre{
  position:absolute; inset:0; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:10px; color:var(--creme);
  background:rgba(76,42,35,.34);
}
.video-fachada .cobre .simbolo{ font-size:40px; line-height:1; }
.video-legenda{ font-size:14px; color:var(--tinta-suave); font-weight:300; margin-top:12px; max-width:44em; line-height:1.5; }

/* `overflow-x:auto` sozinho é uma armadilha do CSS: quando um eixo deixa
   de ser `visible`, o outro vira `auto` sozinho. Com o `margin-bottom:-1px`
   do botão — que é o que faz o sublinhado da aba ativa cair EM CIMA do fio
   do contêiner — sobrava exatamente 1px de transbordo vertical. Um pixel
   basta: no Windows, onde a barra de rolagem é clássica e não sobreposta,
   o Chrome desenhava uma barra vertical inteira (seta, polegar, seta) ao
   lado das abas. Em macOS e Linux ela é sobreposta e ninguém via.

   `overflow-y:hidden` fecha o eixo de vez, e o 1px de padding devolve o
   espaço que o `margin-bottom` negativo tirava — sem ele, o recorte
   comeria metade do sublinhado da aba ativa. */
.abas-pub{
  display:flex; border-bottom:1px solid var(--regra-media); margin-bottom:6px;
  overflow-x:auto; overflow-y:hidden; padding-bottom:1px;
}
.abas-pub button{
  background:transparent; border:none; cursor:pointer; white-space:nowrap;
  padding:12px 18px 11px; color:var(--tinta);
  font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase; font-weight:500;
  border-bottom:2px solid transparent; margin-bottom:-1px; min-height:44px;
}
.abas-pub button:first-child{ padding-left:0; }
.abas-pub button[aria-selected="true"]{ color:var(--bordo); border-bottom-color:var(--bordo); }
.abas-pub button .qtd{ color:var(--tinta-suave); margin-left:7px; }

.redes-linha{ display:flex; flex-wrap:wrap; gap:0 26px; }
.redes-linha a{
  display:inline-flex; align-items:baseline; gap:8px; padding:11px 0;
  border-bottom:1px solid transparent; min-height:44px;
}
.redes-linha a:hover{ border-bottom-color:var(--bordo); }
.redes-linha .rede-nome{ font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--terracota-txt); }
.redes-linha .rede-user{ font-size:16px; font-weight:300; }

/* barra fixa de contato no celular — some no desktop */
.acao-fixa{ display:none; }
@media (max-width:760px){
  .dados-grade{ grid-template-columns:1fr; }
  .redes-linha{ flex-direction:column; gap:0; }
  .acao-fixa{
    display:flex; position:fixed; left:0; right:0; bottom:0; z-index:40;
    background:var(--papel); border-top:1px solid var(--tinta); padding:10px var(--gutter, 20px);
    gap:12px; align-items:center;
  }
  .acao-fixa .btn-principal{ flex:1; text-align:center; }
  body.tem-acao-fixa{ padding-bottom:78px; }
}
@media (prefers-reduced-motion:reduce){
  .video-fachada{ transition:none; }
}

/* ═══════════════════════════════════════════════════════════════
   DIRETÓRIO — filtros funcionais (archive-profissional.php)
   O protótipo desenhava `.filtro .val` como texto estático decorado com
   uma seta; aqui é um <select> real, para funcionar sem JavaScript —
   o clique em "Filtrar" já resubmete o formulário por GET.
   ═══════════════════════════════════════════════════════════════ */
/* `background-color`, e não o atalho `background`: o atalho zerava o
   `background-image` herdado da regra base de `select` (linha 798), que é
   justamente onde mora a setinha ▾. Somado ao `appearance:none` desta mesma
   regra — que apaga a seta nativa do sistema —, o resultado era um <select>
   sem seta, sem moldura e sem fundo: idêntico a texto estático. A barra de
   filtros parecia não ter CSS nenhum, quando na verdade tinha CSS demais. */
.filtro select{
  font-family:var(--serif); font-size:16px; font-weight:400; color:var(--tinta);
  background-color:transparent; border:none; padding:0 20px 0 0; width:100%; cursor:pointer;
  -webkit-appearance:none; appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--tinta-suave) 50%),
                   linear-gradient(135deg,var(--tinta-suave) 50%,transparent 50%);
  background-position:calc(100% - 10px) calc(50% + 1px), calc(100% - 5px) calc(50% + 1px);
  background-size:5px 5px, 5px 5px;
  background-repeat:no-repeat;
}
.filtro select:hover{ color:var(--bordo); }
/* O campo de busca das telas de administração usa a mesma caixa invisível do
   seletor: dentro da barra de filtros, a moldura vem do fio do `.filtro`, não
   do campo. Fora dela, `input[type=search]` continua com a moldura normal. */
.filtro input[type=search]{
  font-family:var(--serif); font-size:16px; font-weight:400; color:var(--tinta);
  background:transparent; border:none; padding:0; width:100%;
}
.filtro-submit{
  background:var(--tinta); color:var(--papel); border:none; cursor:pointer;
  padding:11px 22px; font-family:var(--mono); font-size:11px; letter-spacing:.11em;
  text-transform:uppercase; font-weight:600; min-height:44px;
}
@media (max-width:760px){
  .filtro-acao{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
}

/* ═══════════════════════════════════════════════════════════════
   EDITOR DE PERFIL (painel-perfil.html) — Fase 2
   Portado de prototipo/painel-perfil.html, que trazia este bloco embutido
   com a instrução "acrescentar ao fim de design-system.css". Curado à mão,
   não copiado inteiro: boa parte do CSS daquele arquivo (.selo, .selos,
   .dados-grade, .redes-linha, .video-fachada, .abas, .campo base,
   input/select/textarea base, .contador, .ajuda, .aviso, a seção inteira
   de responsivo de base) já existe neste arquivo, de sessões anteriores —
   redeclarar teria criado regra duplicada ou, pior, colidido com um nome
   de classe já usado para outra coisa. Duas colisões reais encontradas e
   resolvidas:
     - `.opcao` já é o cartão de preço do onboarding (grid de 3 colunas
       com borda) — a linha de checkbox/rádio do editor virou `.opcao-campo`.
     - `.abas` já é o link em pílula do checkout — o editor não precisa de
       abas, então a regra do protótipo nem entrou.
   Duas variáveis de cor que já existiam foram reaproveitadas (--vermelho)
   ou nomeadas pelo termo semântico que as pendências do projeto já usam
   (--sucesso, não --verde — ver CLAUDE.md §9, "reconciliar o verde de
   'aprovar'").
   ═══════════════════════════════════════════════════════════════ */

:root{ --sucesso:#1F5C34; /* 7,3:1 sobre --papel */ }

/* --- cabeçalho de página interna do painel --- */
.pagina-cabeca{ padding:38px 0 26px; border-bottom:2px solid var(--tinta); }
.pagina-cabeca h1{ font-size:clamp(28px,4.4vw,44px); font-weight:400; letter-spacing:-.022em; line-height:1.05; margin:10px 0 10px; }
.pagina-cabeca .lide{ font-size:18px; color:var(--tinta-suave); font-weight:300; max-width:36em; line-height:1.55; }

/* --- layout de duas colunas do editor --- */
.editor-layout{ display:grid; grid-template-columns:1fr 316px; column-gap:56px; align-items:start; padding:34px 0 70px; }
.editor-layout > *{ min-width:0; }
.lateral{ position:sticky; top:18px; }

/* --- seções sanfonadas (details/summary) --- */
.secao{ border-top:1px solid var(--regra-media); }
.secao:last-of-type{ border-bottom:1px solid var(--regra-media); }
.secao > summary{ display:flex; align-items:baseline; gap:18px; padding:19px 0; cursor:pointer; list-style:none; }
.secao > summary::-webkit-details-marker{ display:none; }
.secao > summary:focus-visible{ outline:2px solid var(--bordo); outline-offset:3px; }
.secao .num{ color:var(--bordo); flex:0 0 auto; }
.secao h2{ font-size:25px; font-weight:400; letter-spacing:-.015em; line-height:1.15; flex:1; min-width:0; }
.secao .resumo{ font-size:14px; color:var(--tinta-suave); font-weight:300; text-align:right; max-width:19em; line-height:1.4; }
.secao .sinal{ color:var(--tinta-suave); flex:0 0 auto; }
.secao[open] .sinal .mais{ display:none; }
.secao:not([open]) .sinal .menos{ display:none; }
.secao-corpo{ padding:2px 0 36px; max-width:700px; }

/* --- rótulo de campo fora de `.campo > label` (legend, span solto) --- */
.rot{ display:block; font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase; font-weight:500; color:var(--terracota-txt); margin-bottom:8px; }
.rot .opc{ color:var(--tinta-suave); text-transform:none; font-family:var(--serif); }
legend.rot{ padding:0; border-bottom:none; margin-bottom:14px; }

/* estado de erro alternativo, usado só no editor de perfil (o resto do
   site usa `.campo.invalido`, já existente — os dois convivem) */
.campo.erro input, .campo.erro select, .campo.erro .prefixado, .campo.erro textarea{ border-color:var(--vermelho); }
.msg-erro{ display:block; font-size:14px; color:var(--vermelho); margin-top:7px; font-weight:400; }
.msg-ok{ display:block; font-size:14px; color:var(--sucesso); margin-top:7px; font-weight:400; }
.msg-aviso{ display:block; font-size:14px; color:var(--terracota-txt); margin-top:7px; font-weight:400; }

.aviso h4{ font-size:17px; font-weight:500; margin-bottom:5px; }
.aviso.nota{ border-left-color:var(--terracota); background:none; }

/* --- parecer da moderação, na tela de quem enviou ---
   Mesma caixa do .aviso, com o texto de quem moderou destacado como
   citação: é a fala de outra pessoa, e precisa se distinguir da voz do
   sistema em volta dela. */
.aviso.parecer{ margin-bottom:22px; }
.parecer-texto{ border-left:2px solid var(--regra-media); padding:2px 0 2px 16px;
  margin:12px 0; }
.parecer-texto p{ font-size:15px; line-height:1.6; color:var(--tinta); font-weight:300; }
.parecer-texto p + p{ margin-top:9px; }
.parecer-data{ font-size:12px; color:var(--tinta-suave); margin-top:10px; }
.parecer-linha{ display:block; margin-top:4px; }

/* A primeira coluna precisa de piso. Sem ele, o resumo do parecer sob o
   título faz o navegador achar que aquela coluna cabe em qualquer largura,
   e a 360px o título saía quebrado em uma palavra por linha. A tabela já
   rola dentro de .tabela-rolagem, então forçar um mínimo não vaza para a
   página — foi medido: 0px de estouro horizontal em todas as larguras. */
.tabela-rolagem .tabela td:first-child{ min-width:190px; }

/* --- linhas de campos lado a lado --- */
.linha{ display:grid; column-gap:20px; }
.linha > *{ min-width:0; }
.linha.d2{ grid-template-columns:1fr 1fr; }
.linha.d3{ grid-template-columns:1fr 1fr 1fr; }
.linha.reg{ grid-template-columns:minmax(0,1fr) 160px; }
.linha.tel{ grid-template-columns:180px minmax(0,1fr); }
.linha.cep{ grid-template-columns:160px minmax(0,1fr); }

/* --- pré-visualização de valor calculado (ex.: "CRP 04/123456") --- */
.previa{ display:flex; align-items:baseline; gap:14px; margin-top:14px; padding-top:13px; border-top:1px solid var(--regra); }
.previa .rot{ margin:0; flex:0 0 auto; }
.previa .val{ font-size:21px; font-weight:400; letter-spacing:.01em; }
.previa .val.indefinido{ color:var(--tinta-suave); font-weight:300; }

/* --- campo com prefixo fixo (redes sociais, endereço do perfil) --- */
.prefixado{ display:flex; align-items:stretch; border:1px solid var(--regra-media); background:#FFFCF4; }
.prefixado:focus-within{ outline:2px solid var(--bordo); outline-offset:2px; }
.prefixado .pref{
  display:flex; align-items:center; padding:0 0 0 13px; white-space:nowrap;
  font-family:var(--mono); font-size:12px; color:var(--tinta-suave);
  border-right:1px solid var(--regra); margin-right:10px; padding-right:10px;
}
.prefixado input{ border:none; padding-left:0; background:transparent; }
.prefixado input:focus-visible{ outline:none; }
.rede{ margin-bottom:14px; }
.rede .rot{ margin-bottom:6px; }

/* --- fichas de seleção múltipla (abordagem, especialidade, idioma...) --- */
.chips{ display:flex; flex-wrap:wrap; gap:8px; }
.chip{
  display:inline-flex; align-items:center; gap:8px; min-height:24px;
  font-family:var(--serif); font-size:15px; font-weight:300; color:var(--tinta);
  background:#FFFCF4; border:1px solid var(--regra-media); padding:8px 13px; cursor:pointer;
}
.chip:hover{ border-color:var(--tinta); }
.chip[aria-pressed="true"]{ background:var(--tinta); color:var(--papel); border-color:var(--tinta); font-weight:400; }
.chip[aria-pressed="true"]::before{ content:'✓'; font-size:11px; }
.chip.destacado[aria-pressed="true"]{ background:var(--bordo); border-color:var(--bordo); }
.chip:disabled{ opacity:.45; cursor:not-allowed; }
.chips-grupo{ margin-bottom:16px; }
.chips-grupo h4{
  font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase;
  font-weight:500; color:var(--tinta-suave); margin-bottom:9px; padding-top:9px; border-top:1px solid var(--regra);
}
.chips-grupo:first-child h4{ border-top:none; padding-top:0; }

/* --- editor rico da bio (negrito/itálico/lista) ------------------------
   A bio é o único campo do editor de perfil com formatação. Com JS, o
   contenteditable assume; sem JS, o textarea continua sendo o campo de
   verdade (ele já é a segunda metade da .bio-editor e só ganha `hidden`
   no upgrade — ver perfil-editor.js). */
.bio-toolbar{
  display:flex; align-items:center; gap:6px; flex-wrap:wrap;
  border:1px solid var(--regra-media); border-bottom:none; background:#FFFCF4; padding:6px 8px;
}
.bio-btn{
  font-family:var(--serif); font-size:16px; line-height:1; color:var(--tinta);
  background:none; border:1px solid transparent; border-radius:4px;
  min-width:30px; height:30px; padding:0 9px; cursor:pointer;
}
.bio-btn:hover{ border-color:var(--regra-media); background:var(--papel); }
.bio-btn b, .bio-btn i{ font-weight:700; }
.bio-dica{ font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--tinta-suave); margin-left:auto; }
#bio-editor{
  min-height:180px; line-height:1.6; padding:14px 16px; overflow-wrap:break-word;
  border:1px solid var(--regra-media); background:#FFFCF4;
}
#bio-editor:focus{ outline:2px solid var(--bordo); outline-offset:-2px; }
#bio-editor p{ margin:0 0 10px; font-weight:300; }
#bio-editor ul{ margin:0 0 10px 18px; }
#bio-editor li{ font-weight:300; margin-bottom:4px; }

/* --- opção de checkbox/rádio em linha de texto (não confundir com
   `.opcao`, o cartão de preço do onboarding) --- */
.opcao-campo{ display:flex; gap:12px; align-items:flex-start; padding:9px 0; cursor:pointer; }
.opcao-campo input[type=checkbox], .opcao-campo input[type=radio]{
  appearance:none; -webkit-appearance:none; flex:0 0 20px; width:20px; height:20px;
  margin:3px 0 0; border:1px solid var(--regra-media); background:#FFFCF4; cursor:pointer;
}
.opcao-campo input[type=radio]{ border-radius:50%; }
.opcao-campo input:checked{ background:var(--tinta); border-color:var(--tinta); }
.opcao-campo input[type=checkbox]:checked::after{ content:'✓'; display:block; text-align:center; line-height:18px; font-size:12px; color:var(--papel); }
.opcao-campo input[type=radio]:checked::after{ content:''; display:block; width:8px; height:8px; margin:5px auto; background:var(--papel); border-radius:50%; }
.opcao-campo .txt{ font-size:17px; font-weight:300; line-height:1.4; }
.opcao-campo .txt b{ font-weight:500; }
.opcao-campo .txt small{ display:block; font-size:14px; color:var(--tinta-suave); margin-top:2px; line-height:1.45; }

/* --- combobox com busca (regional do CRP, estado, cidade) --- */
.combo{ position:relative; }
.combo-lista{
  position:absolute; z-index:30; left:0; right:0; top:100%;
  background:var(--papel); border:1px solid var(--tinta); border-top:none;
  max-height:262px; overflow-y:auto; list-style:none; margin:0; padding:0;
}
.combo-lista li{ padding:10px 13px; font-size:16px; font-weight:300; cursor:pointer; border-bottom:1px solid var(--regra); }
.combo-lista li:last-child{ border-bottom:none; }
.combo-lista li[aria-selected="true"]{ background:var(--tinta); color:var(--papel); }
.combo-lista li .uf{ font-family:var(--mono); font-size:10px; color:var(--terracota-txt); margin-left:8px; }
.combo-lista li[aria-selected="true"] .uf{ color:var(--dourado); }
.combo-lista .nada{ color:var(--tinta-suave); cursor:default; font-style:italic; }

/* --- cartela de vídeo/foto compacta, usada no editor (distinta de
   `.video-fachada`, que é a foto grande da página pública) --- */
.video-cartela{ display:flex; gap:16px; align-items:flex-start; margin-top:16px; padding-top:16px; border-top:1px solid var(--regra); }
.video-mini{ flex:0 0 168px; aspect-ratio:16/9; background:var(--marrom); display:flex; align-items:center; justify-content:center; position:relative; overflow:hidden; }
.video-mini img{ width:100%; height:100%; object-fit:cover; }
.video-mini .play{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--creme); font-size:26px; }
.video-cartela .meta h4{ font-size:18px; font-weight:400; margin-bottom:5px; }
.video-cartela .meta p{ font-size:14px; color:var(--tinta-suave); font-weight:300; margin-bottom:10px; line-height:1.5; }

/* --- painel lateral: completude e prévia --- */
.medidor{ border:1px solid var(--regra-media); padding:20px 20px 22px; margin-bottom:26px; }
.medidor .topo{ display:flex; justify-content:space-between; align-items:baseline; }
.medidor .pct{ font-size:30px; font-weight:400; letter-spacing:-.02em; line-height:1; }
.barra{ height:6px; background:var(--regra); margin:13px 0 14px; }
.barra i{ display:block; height:100%; background:var(--bordo); }
.medidor p{ font-size:14px; line-height:1.5; font-weight:300; color:var(--tinta-suave); }
.medidor ul{ list-style:none; margin-top:10px; }
.medidor li{ font-size:14px; font-weight:300; color:var(--tinta-suave); padding:6px 0; border-top:1px solid var(--regra); }
.medidor li::before{ content:'· '; color:var(--bordo); }

.previa-bloco{ border:1px solid var(--regra-media); padding:20px; margin-bottom:26px; }
.previa-bloco > .rot{ margin-bottom:14px; }
.previa-bloco .ficha .retrato{ background:var(--bordo); }
.previa-nota{ font-size:13px; color:var(--tinta-suave); font-weight:300; line-height:1.5; margin-top:14px; padding-top:12px; border-top:1px solid var(--regra); }

.acoes-lateral{ display:flex; flex-direction:column; gap:11px; }
.acoes-lateral .btn-bloco{ text-align:center; border:none; cursor:pointer; }
.btn-linha{
  display:block; width:100%; text-align:center; padding:13px; cursor:pointer;
  border:1px solid var(--regra-media); background:transparent; color:var(--tinta);
  font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase; font-weight:500;
}
.btn-linha:hover{ border-color:var(--tinta); }
.salvo{ font-size:13px; color:var(--sucesso); font-weight:300; text-align:center; }

/* --- botão sólido (usado no rodapé fixo e na barra lateral do editor;
   `.btn-principal` já existe mas é sempre `<a>`/inline — este é para
   `<button type=submit>` de largura total) --- */
.btn-bloco{
  display:block; width:100%; text-align:center; background:var(--tinta); color:var(--papel);
  padding:14px 26px; font-family:var(--mono); font-size:11px; letter-spacing:.11em;
  text-transform:uppercase; font-weight:600; border:none; cursor:pointer;
}

@media (max-width:1200px){
  .editor-layout{ column-gap:36px; grid-template-columns:1fr 292px; }
}
@media (max-width:1024px){
  .editor-layout{ grid-template-columns:1fr; row-gap:34px; }
  .lateral{ position:static; }
  .previa-bloco .ficha{ max-width:300px; }
  .linha.d3{ grid-template-columns:1fr 1fr; }
  .secao .resumo{ display:none; }
}
@media (max-width:760px){
  .pagina-cabeca h1{ font-size:34px; }
  .linha.d2, .linha.d3, .linha.reg, .linha.tel, .linha.cep{ grid-template-columns:1fr; row-gap:16px; }
  .secao h2{ font-size:21px; }
  .secao-corpo{ padding-bottom:28px; }
  .video-cartela{ flex-direction:column; }
  .video-mini{ flex:0 0 auto; width:100%; }
  .prefixado{ flex-direction:column; align-items:stretch; }
  .prefixado .pref{ border-right:none; border-bottom:1px solid var(--regra); margin-right:0; padding:9px 13px; }
  .prefixado input{ padding-left:13px; }
  .medidor, .previa-bloco{ padding:16px; }
}
@media print{
  .painel-nav, .lateral, .acao-fixa, .nav-cta{ display:none; }
  .secao-corpo{ display:block !important; }
}
@media (prefers-reduced-motion:reduce){
  .barra i{ transition:none; }
}

/* ═════════════════════════════════════════════════════════════
   MÓDULO DE CURSOS · catálogo, página do curso, editor e categorias
   Fase B — 18/08/2026.

   Nenhuma regra existente foi alterada; tudo abaixo é acréscimo.
   Sem border-radius, box-shadow ou linear-gradient: a hierarquia vem
   de fio, peso tipográfico e espaço.

   O catálogo é o lugar onde "três cards iguais em grade" volta sem
   ninguém perceber — toda plataforma de curso do mundo é assim. Por
   isso ele é uma LISTA numerada com fio separador, e o nome de quem
   ensina tem o mesmo peso do título do curso.
   ═════════════════════════════════════════════════════════════ */

.secao-cursos{ padding:44px 0 60px; }
.sec-lide{ font-size:15px; color:var(--tinta-suave); margin-top:8px; max-width:44em; font-weight:300; }
.ativos-cursos{ padding:0 0 22px; }

/* --- catálogo --- */
.cur-lista{ list-style:none; margin:0; padding:0; border-top:2px solid var(--tinta); }
.cur-item{
  display:grid; grid-template-columns:56px 150px 1fr 206px;
  column-gap:28px; padding:28px 0; border-bottom:1px solid var(--regra);
  align-items:start;
}
.cur-item > *{ min-width:0; }
.cur-num{ color:var(--terracota-txt); padding-top:6px; white-space:nowrap; }

/* Folder de divulgação. Recorte 3:4 no servidor (conf_folder), fio de 1px
   em vez de sombra — mesmo tratamento da capa de livro na biblioteca.
   Sem imagem, uma placa tipográfica com o título: um retângulo vazio no
   lugar da foto é um dos sintomas listados no CLAUDE.md §2. */
.cur-capa-link{ display:block; }
.cur-capa{
  display:block; width:150px; aspect-ratio:3/4; overflow:hidden;
  background:var(--papel-2); border:1px solid var(--regra-media);
}
.cur-capa img{ width:100%; height:100%; object-fit:cover; }
/* A placa tipográfica tem altura fixa (3:4) e título de tamanho livre.
   15px/1.22 é o ponto em que o título mais longo do catálogo ainda cabe
   inteiro em 150px de largura; acima disso, ele era cortado no meio de
   uma palavra — pior do que não ter capa. */
.cur-capa-texto{
  display:flex; align-items:flex-start; padding:14px 13px;
  font-size:15px; line-height:1.22; border:none;
}
.cur-capa-texto span{ display:block; overflow:hidden; }

.cur-cat{ color:var(--terracota-txt); margin-bottom:8px; }
.cur-cat a{ color:var(--terracota-txt); }
.cur-titulo{ font-size:27px; line-height:1.2; font-weight:400; letter-spacing:-.015em; }
.cur-por{ display:flex; align-items:center; gap:11px; font-size:19px; margin-top:10px; }
.cur-por a{ border-bottom:1px solid var(--regra-media); padding-bottom:1px; }
.cur-crp{ color:var(--terracota-txt); margin-left:6px; }
.cur-lide{ font-size:15px; line-height:1.55; color:var(--tinta-suave); font-weight:300; margin-top:10px; max-width:44em; overflow-wrap:break-word; }

/* Retrato de quem ensina: foto do perfil, foto de conta, ou monograma —
   as mesmas iniciais e as mesmas cinco cores do resto do site. */
.cur-retrato{
  width:38px; height:38px; flex:0 0 38px; overflow:hidden;
  display:flex; align-items:center; justify-content:center;
}
.cur-retrato img{ width:100%; height:100%; object-fit:cover; }
.cur-retrato.cur-mono span{ font-family:var(--serif); font-size:15px; letter-spacing:.02em; }
.cur-retrato-g{ width:56px; height:56px; flex:0 0 56px; }
.cur-retrato-g.cur-mono span{ font-size:22px; }

.cur-aside{ text-align:right; padding-top:4px; }
.cur-meta{ display:flex; flex-direction:column; gap:7px; color:var(--tinta-suave); }
.cur-meta .cur-aberta{ color:var(--bordo); }
.cur-preco{ margin-top:16px; padding-top:14px; border-top:1px solid var(--regra); }
.cur-preco .valor{ display:block; font-size:26px; line-height:1.1; letter-spacing:-.02em; }
.cur-parc, .cur-desc, .cur-embreve{ display:block; margin-top:6px; color:var(--tinta-suave); }
.cur-desc{ color:var(--terracota-txt); }
.cur-item-preparo .cur-titulo{ color:var(--tinta-suave); }
.cur-item-preparo .cur-preco{ border-top:none; }
.cur-item-preparo .cur-embreve{ color:var(--terracota-txt); }

/* Na página do profissional a lista é mais curta e sem coluna de preço
   cheia — o curso ali é vitrine do pensamento, não gôndola. */
.cur-lista-perfil .cur-item{ grid-template-columns:44px 118px 1fr 150px; }
.cur-lista-perfil .cur-capa{ width:118px; }
.cur-lista-perfil .cur-titulo{ font-size:23px; }

/* --- página do curso --- */
.curso-cabeca .sec-mark{ margin-bottom:6px; }
.curso-cabeca .assinatura{ row-gap:8px; }

.curso-folder{ margin:0 0 32px; }
.curso-folder img{ width:100%; height:auto; max-height:420px; object-fit:cover; border:1px solid var(--regra-media); }
.curso-folder figcaption{ color:var(--tinta-suave); margin-top:8px; font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; }

.rot-secao{ color:var(--terracota-txt); border-top:2px solid var(--tinta); padding-top:12px; margin:44px 0 18px; font-weight:600; }

.prog-modulo{ margin-bottom:26px; }
.prog-mod-titulo{ font-size:21px; line-height:1.3; padding-bottom:10px; border-bottom:1px solid var(--regra-media); }
.prog-mod-num{ color:var(--terracota-txt); margin-right:12px; }
.prog-licoes{ list-style:none; margin:0; padding:0; }
.prog-licao{
  display:grid; grid-template-columns:34px 1fr 96px 92px;
  column-gap:16px; align-items:baseline;
  padding:13px 0; border-bottom:1px solid var(--regra);
}
.prog-licao > *{ min-width:0; }
.prog-num{ color:var(--tinta-suave); }
.prog-titulo{ font-size:18px; font-weight:300; }
.prog-licao-aberta .prog-titulo{ font-weight:400; }
.prog-titulo a{ border-bottom:1px solid var(--regra-media); padding-bottom:1px; }
.prog-tag{ color:var(--bordo); }
.prog-tag-fechada{ color:var(--tinta-suave); }
.prog-dur{ color:var(--tinta-suave); text-align:right; white-space:nowrap; }

.lista-seca{ list-style:none; margin:0; padding:0; max-width:40em; }
.lista-seca li{
  font-size:16px; line-height:1.55; font-weight:300; color:var(--tinta-suave);
  padding:11px 0 11px 26px; border-bottom:1px solid var(--regra); position:relative;
}
.lista-seca li::before{ content:"—"; position:absolute; left:0; color:var(--terracota-txt); }
.lista-seca b{ color:var(--tinta); font-weight:500; }

/* --- aula aberta --- */
.curso-aula-aberta{ margin-bottom:34px; }
.aula-titulo{ font-size:23px; line-height:1.25; margin-bottom:16px; }
.video-moldura{ position:relative; width:100%; max-width:760px; aspect-ratio:16/9; background:var(--marrom); }
.video-moldura iframe{ position:absolute; inset:0; width:100%; height:100%; border:none; }
.aula-transcricao{ margin-top:22px; border-top:1px solid var(--regra); padding-top:14px; }
.aula-transcricao summary{ color:var(--terracota-txt); cursor:pointer; padding:8px 0; min-height:24px; }
.aula-voltar{ margin-top:20px; }

/* --- caixa de compra --- */
.curso-compra{ border-top:2px solid var(--tinta) !important; }
.artigo-lado .compra-valor{ font-size:38px; line-height:1; letter-spacing:-.025em; margin:4px 0 8px; }
.artigo-lado .compra-nota{ color:var(--tinta-suave); }
.compra-parcelas{ margin:16px 0; padding:14px 0; border-top:1px solid var(--regra); border-bottom:1px solid var(--regra); }
.compra-parcelas label{ display:block; color:var(--terracota-txt); margin-bottom:8px; }
.compra-parcelas select{ width:100%; }
.artigo-lado .compra-parc-nota{ color:var(--tinta-suave); margin-top:9px; line-height:1.55; }
.artigo-lado .compra-desconto{ color:var(--terracota-txt); margin:0 0 16px; }
.compra-desconto b{ color:var(--bordo); font-weight:600; }
.artigo-lado .compra-rodape{ color:var(--tinta-suave); margin-top:12px; line-height:1.5; }

.curso-ficha{ margin:0; }
.curso-ficha dt{ color:var(--terracota-txt); margin-top:12px; }
.curso-ficha dt:first-child{ margin-top:0; }
.artigo-lado .curso-ficha dd{ font-size:15px; font-weight:300; color:var(--tinta-suave); margin:3px 0 0; }
.instrutor-topo{ display:flex; align-items:center; gap:12px; margin-bottom:10px; }
.artigo-lado .instrutor-crp{ color:var(--terracota-txt); margin-top:3px; }
.artigo-lado .lado-item{ padding:9px 0; border-bottom:1px solid var(--regra); }
.lado-item a{ font-size:15px; border-bottom:1px solid var(--regra-media); }
.lado-item .mono{ display:block; color:var(--tinta-suave); margin-top:4px; }

/* --- editor de curso, módulo e lição --- */
.prog-modulo-edicao .prog-mod-titulo{ display:flex; align-items:center; gap:14px; }
.prog-licao-edicao{ grid-template-columns:66px 1fr 96px 92px; }
.ordem-num{
  width:56px; padding:5px 7px; font-family:var(--mono); font-size:12px;
  border:1px solid var(--regra-media); background:#FFFCF4; color:var(--tinta);
}
.mod-edicao{ margin-top:34px; border-top:1px solid var(--regra-media); padding-top:18px; }
.mod-edicao-titulo{ font-size:19px; font-weight:500; margin-bottom:12px; }
.licao-editor{ border-bottom:1px solid var(--regra); }
.licao-editor summary{
  color:var(--tinta); cursor:pointer; padding:13px 0; min-height:24px;
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase;
}
.licao-editor[open] summary{ color:var(--bordo); }
.licao-form{ padding:8px 0 20px; }
.zona-risco-linha{ padding:10px 0 16px; }
.zona-risco-linha button{ background:none; border:none; cursor:pointer; padding:6px 0; font-family:var(--mono); }

/* --- categorias, em /admin/cursos/ --- */
.cat-nova{
  display:grid; grid-template-columns:1fr 1fr auto; column-gap:24px; align-items:end;
  border-top:2px solid var(--tinta); border-bottom:1px solid var(--regra);
  padding:22px 0; margin-bottom:8px;
}
.cat-nova .campo{ margin:0; min-width:0; }
.cat-tabela .num{ text-align:right; }
.cat-slug{ color:var(--tinta-suave); }
.cat-ramo{ color:var(--terracota-txt); margin-right:8px; }
.cat-acoes{ text-align:right; white-space:nowrap; }
.cat-acoes a, .cat-acoes form{ margin-left:16px; }
.cat-acoes form{ display:inline; }
.cat-travada{ color:var(--tinta-suave); margin-left:16px; }
.cat-remover{ color:var(--vermelho) !important; border-bottom:1px solid var(--vermelho) !important; }

/* Armadilha encontrada montando estas telas: `.screen-reader-text` é
   `position:absolute` sem ancestral posicionado, então escapa do recorte
   de `.tabela-rolagem` e se planta na largura original da tabela — 91px
   de rolagem horizontal em 390px, com a tabela já rolando corretamente
   por dentro. Uma linha resolve, e vale para toda tabela do projeto. */
.tabela-rolagem{ position:relative; }

/* --- larguras --- */
@media (max-width:1024px){
  .cur-item, .cur-lista-perfil .cur-item{ grid-template-columns:52px 128px 1fr 180px; column-gap:22px; }
  .cur-capa, .cur-lista-perfil .cur-capa{ width:128px; }
  .cur-titulo, .cur-lista-perfil .cur-titulo{ font-size:24px; }
  .cat-nova{ grid-template-columns:1fr 1fr; row-gap:16px; }
  .cat-nova .campo-acao{ grid-column:1 / -1; }
}
@media (max-width:768px){
  .cur-item, .cur-lista-perfil .cur-item{ grid-template-columns:44px 112px 1fr; row-gap:16px; }
  .cur-capa, .cur-lista-perfil .cur-capa{ width:112px; }
  .cur-aside{ grid-column:2 / -1; text-align:left; padding-top:0; }
  .cur-meta{ flex-direction:row; flex-wrap:wrap; gap:6px 16px; }
  .cur-preco .valor{ display:inline-block; margin-right:14px; }
  .cur-parc, .cur-desc{ display:inline-block; margin-right:14px; }
  .prog-licao{ grid-template-columns:30px 1fr; row-gap:5px; }
  .prog-licao-edicao{ grid-template-columns:62px 1fr; }
  .prog-tag, .prog-dur{ grid-column:2; text-align:left; }
  .prog-dur{ margin-top:-3px; }
  .rot-secao{ margin-top:34px; }
  .curso-folder img{ max-height:280px; }
}
@media (max-width:480px){
  .cur-item, .cur-lista-perfil .cur-item{ grid-template-columns:1fr; row-gap:12px; padding:24px 0; }
  .cur-num{ padding-top:0; }
  .cur-capa, .cur-lista-perfil .cur-capa{ width:100%; max-width:200px; }
  .cur-aside{ grid-column:1; }
  .cur-titulo, .cur-lista-perfil .cur-titulo{ font-size:22px; }
  .cur-por{ font-size:17px; }
  .artigo-lado .compra-valor{ font-size:32px; }
  .cat-nova{ grid-template-columns:1fr; }
  .cat-acoes{ text-align:left; }
  .cat-acoes a, .cat-acoes form{ margin:0 16px 0 0; }
}

/* Alvo de toque ≥24px em todas as larguras (CLAUDE.md §8). */
.cur-titulo a, .cur-por a, .prog-titulo a, .lado-item a, .cat-acoes a, .cat-acoes button{
  display:inline-block; padding:4px 0;
}

/* ═════════════════════════════════════════════════════════════
   MÓDULO DE CURSOS · área do aluno e certificado
   Fase D — 18/08/2026. Acréscimo; nenhuma regra existente alterada.
   ═════════════════════════════════════════════════════════════ */

/* --- lista de "Meus cursos" --- */
.aluno-lista{ border-top:2px solid var(--tinta); margin-top:30px; }
.aluno-item{
  display:grid; grid-template-columns:126px 1fr 230px;
  column-gap:28px; padding:26px 0; border-bottom:1px solid var(--regra);
  align-items:start;
}
.aluno-item > *{ min-width:0; }
.aluno-item .cur-capa{ width:126px; }
.aluno-por{ color:var(--tinta-suave); margin-top:8px; }
.aluno-medidor{ margin:16px 0 0; padding:14px 16px 16px; }
.aluno-inativa{ font-size:15px; color:var(--tinta-suave); font-weight:300; margin-top:14px; }
.aluno-aviso{ color:var(--bordo); margin-top:12px; line-height:1.6; }
.aluno-meta{ display:flex; flex-wrap:wrap; gap:6px 18px; color:var(--tinta-suave); margin-top:12px; }
.aluno-acoes{ display:flex; flex-direction:column; gap:11px; align-items:stretch; }
.aluno-acoes .btn-principal, .aluno-acoes .btn-secundario{ text-align:center; }
.aluno-desistir{ margin-top:4px; text-align:center; }
.aluno-desistir button{ background:none; border:none; cursor:pointer; padding:6px 0; font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--bordo); border-bottom:1px solid var(--regra-media); }
.aluno-desistir .mono{ display:block; color:var(--tinta-suave); margin-top:7px; line-height:1.5; }

/* --- a tela da aula --- */
.aula-tela{ padding-top:34px; padding-bottom:60px; }
.aula-topo{ display:flex; align-items:flex-end; justify-content:space-between; gap:32px; border-bottom:2px solid var(--tinta); padding-bottom:22px; margin-bottom:30px; }
.aula-topo > *{ min-width:0; }
.aula-curso{ font-size:16px; color:var(--tinta-suave); font-weight:300; margin:10px 0 6px; }
.aula-curso a{ border-bottom:1px solid var(--regra-media); }
.aula-topo h1{ font-size:34px; line-height:1.15; font-weight:400; letter-spacing:-.02em; }
.aula-progresso{ text-align:right; min-width:180px; }
.aula-progresso .pct{ font-size:28px; line-height:1; letter-spacing:-.02em; }
.aula-progresso .mono{ color:var(--tinta-suave); }

.aula-corpo{ display:grid; grid-template-columns:1fr 320px; column-gap:56px; align-items:start; }
.aula-corpo > *{ min-width:0; }

.aula-video{ position:relative; max-width:760px; }
.aula-video .video-fachada{ margin:0; }

/* Marca d'água por aluno. Não impede a cópia — inibe o repasse, que é a
   quase totalidade do problema real enquanto o vídeo estiver em YouTube
   não listado (§16.4). A posição muda por animação para não ser
   recortável de uma vez; `prefers-reduced-motion` desliga o movimento,
   e aí ela fica fixa num canto — continua identificando. */
.aula-marca{
  position:absolute; top:14px; left:16px; z-index:2; pointer-events:none;
  color:var(--creme); opacity:.42; font-size:10px; letter-spacing:.08em;
  text-transform:none; animation:conf-marca 240s steps(1) infinite;
}
@keyframes conf-marca{
  0%   { top:14px;  left:16px;  right:auto;  bottom:auto; }
  25%  { top:14px;  left:auto;  right:16px;  bottom:auto; }
  50%  { top:auto;  left:auto;  right:16px;  bottom:14px; }
  75%  { top:auto;  left:16px;  right:auto;  bottom:14px; }
  100% { top:14px;  left:16px;  right:auto;  bottom:auto; }
}
@media (prefers-reduced-motion:reduce){
  .aula-marca{ animation:none; }
}

.aula-texto{ margin-top:28px; }
.aula-material{ margin-top:30px; }
.aula-material-nota{ color:var(--tinta-suave); margin-top:10px; line-height:1.55; }
.aula-transcricao{ margin-top:26px; border-top:1px solid var(--regra); padding-top:14px; }
.aula-transcricao summary{ color:var(--terracota-txt); cursor:pointer; padding:8px 0; min-height:24px; }

.aula-marcar{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-top:34px; padding-top:22px; border-top:2px solid var(--tinta); }
.aula-marcar .mono{ color:var(--tinta-suave); }
.aula-marcada{ color:var(--bordo) !important; }

.aula-navegacao{ display:flex; justify-content:space-between; gap:24px; margin-top:26px; padding-top:16px; border-top:1px solid var(--regra); }
.aula-navegacao a{ max-width:20em; }

/* --- índice lateral da aula --- */
.aula-lado .bloco{ border-top:1px solid var(--regra); padding-top:14px; margin-bottom:26px; }
.aula-lado h4{ color:var(--terracota-txt); margin-bottom:12px; font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; font-weight:500; }
.aula-lado p{ font-size:14px; line-height:1.55; color:var(--tinta-suave); font-weight:300; }
.aula-mod{ color:var(--terracota-txt) !important; margin:14px 0 6px; }
.aula-indice{ list-style:none; margin:0 0 6px; padding:0; }
.aula-indice-item a{ display:grid; grid-template-columns:18px 1fr auto; column-gap:10px; align-items:baseline; padding:8px 0; border-bottom:1px solid var(--regra); }
.aula-indice-item .marca{ color:var(--regra-media); }
.aula-indice-item.feita .marca{ color:var(--bordo); }
.aula-indice-item .titulo{ font-size:15px; font-weight:300; line-height:1.35; }
.aula-indice-item .dur{ color:var(--tinta-suave); white-space:nowrap; }
.aula-indice-item.atual .titulo{ font-weight:500; color:var(--bordo); }

/* --- verificação de certificado --- */
.cert-tela{ max-width:640px; }
.cert-busca{ margin-bottom:30px; }
.cert-invalido h2{ font-size:22px; font-weight:400; margin-bottom:8px; }
.cert-ficha{ border-top:2px solid var(--tinta); padding-top:20px; }
.cert-selo{ color:var(--bordo); margin-bottom:18px; }
.cert-dados{ margin:0; }
.cert-dados dt{ color:var(--terracota-txt); font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; margin-top:16px; }
.cert-dados dt:first-child{ margin-top:0; }
.cert-dados dd{ margin:4px 0 0; font-size:17px; font-weight:300; }
.cert-dados dd a{ border-bottom:1px solid var(--regra-media); }
.cert-nome{ font-size:26px !important; font-weight:400 !important; letter-spacing:-.015em; }
.cert-codigo{ font-size:15px !important; color:var(--tinta) !important; letter-spacing:.12em; }
.cert-nota{ font-size:14px; line-height:1.6; color:var(--tinta-suave); font-weight:300; margin-top:24px; padding-top:14px; border-top:1px solid var(--regra); }

/* --- larguras --- */
@media (max-width:1024px){
  .aula-corpo{ grid-template-columns:1fr 280px; column-gap:38px; }
  .aluno-item{ grid-template-columns:110px 1fr 200px; column-gap:22px; }
  .aluno-item .cur-capa{ width:110px; }
}
@media (max-width:768px){
  .aula-corpo{ grid-template-columns:1fr; row-gap:34px; }
  .aula-topo{ flex-direction:column; align-items:flex-start; gap:18px; }
  .aula-progresso{ text-align:left; width:100%; }
  .aluno-item{ grid-template-columns:96px 1fr; row-gap:16px; }
  .aluno-item .cur-capa{ width:96px; }
  .aluno-acoes{ grid-column:2; }
}
@media (max-width:480px){
  .aluno-item{ grid-template-columns:1fr; }
  .aluno-item .cur-capa{ width:100%; max-width:180px; }
  .aluno-acoes{ grid-column:1; }
  .aula-topo h1{ font-size:27px; }
  .aula-marcar{ flex-direction:column; align-items:stretch; }
  .aula-marcar .btn-principal, .aula-marcar .btn-secundario{ width:100%; text-align:center; }
  .aula-navegacao{ flex-direction:column; gap:12px; }
}

/* Alvo de toque ≥24px (CLAUDE.md §8). */
.aula-indice-item a, .aula-curso a, .aula-navegacao a{ min-height:24px; }

/* ═════════════════════════════════════════════════════════════
   MÓDULO DE CURSOS · propostas, vendas e comissões
   Fase E — 18/08/2026. Acréscimo; nenhuma regra existente alterada.
   ═════════════════════════════════════════════════════════════ */

.kpis.tres{ grid-template-columns:repeat(3,1fr); }
.kpi .nota{ display:block; color:var(--tinta-suave); margin-top:6px; line-height:1.5; }

.vendas-kpis{ margin-top:26px; }
.vendas-filtro{ display:flex; align-items:flex-end; gap:14px; margin-top:24px; }
.vendas-filtro .rot{ display:block; color:var(--terracota-txt); margin-bottom:7px; }
.vendas-filtro select{ min-width:220px; }

/* Pedido de instrutor, no painel de quem ainda não dá curso. */
.pedido-instrutor{ border-top:2px solid var(--tinta); padding-top:22px; margin-top:30px; max-width:700px; }
.pedido-instrutor .campo{ margin-bottom:18px; }
.pedido-situacao{ display:inline-flex; align-items:center; gap:8px; margin-bottom:14px; }

/* Página de quem ensina de fora do diretório. */
.instrutor-cabeca{ display:flex; align-items:center; gap:22px; padding:40px 0 26px; border-bottom:2px solid var(--tinta); margin-bottom:32px; }
.instrutor-cabeca .cur-retrato{ width:120px; height:120px; flex:0 0 120px; }
.instrutor-cabeca .cur-retrato.cur-mono span{ font-size:46px; }
.instrutor-cabeca h1{ font-size:42px; line-height:1.05; font-weight:400; letter-spacing:-.024em; }
.instrutor-marca{ color:var(--terracota-txt); margin-top:10px; }
.instrutor-bio{ max-width:34em; }

@media (max-width:1024px){
  .kpis.tres{ grid-template-columns:1fr 1fr; }
}
@media (max-width:768px){
  .kpis.tres{ grid-template-columns:1fr; }
  .vendas-filtro{ flex-direction:column; align-items:stretch; }
  .vendas-filtro select{ min-width:0; width:100%; }
  .instrutor-cabeca{ flex-direction:column; align-items:flex-start; gap:16px; }
  .instrutor-cabeca .cur-retrato{ width:96px; height:96px; flex:0 0 96px; }
  .instrutor-cabeca h1{ font-size:31px; }
}

/* O onboarding ganhou a quarta escolha ("dar um curso") na Fase E. Em três
   colunas, a quarta caía sozinha numa linha e parecia sobra; em duas, as
   quatro ficam com o mesmo peso — que é o que a escolha exige. A regra é
   um modificador, não uma alteração da existente: `.opcoes` continua em
   três colunas onde houver três. */
.opcoes.quatro{ grid-template-columns:repeat(2,1fr); }
@media (max-width:860px){ .opcoes.quatro{ grid-template-columns:1fr; } }

/* `.tabela .num` nasceu para ser a ÚLTIMA coluna, e por isso zera o
   padding à direita. No extrato de vendas (Fase E) ela é seguida pela
   coluna de repasse, e os dois valores encostavam — "R$ 120,00A REPASSAR".
   A correção é condicional: onde `num` continuar sendo a última, nada
   muda; onde houver coluna depois, o respiro volta. */
.tabela .num:not(:last-child),
.tabela th.num:not(:last-child){ padding-right:16px; }

/* ═════════════════════════════════════════════════════════════
   MÓDULO DE CURSOS · encontros ao vivo (curso livre)
   Fase F — 18/08/2026. Acréscimo; nenhuma regra existente alterada.
   ═════════════════════════════════════════════════════════════ */

/* Selo de formato no catálogo. Não é etiqueta decorativa: separa duas
   coisas com portas diferentes — o curso se assiste quando se quer, o
   encontro tem hora marcada e vaga. */
.cur-selo-livre{ color:var(--bordo); margin-right:10px; }
.cur-selo-sep{ color:var(--regra-media); margin-right:10px; }
.cur-quando{ color:var(--bordo) !important; }
.curso-quando{ color:var(--bordo); }

.compra-lotado{ color:var(--bordo); margin-top:14px; }
.compra-parcelas input[type=text]{ width:100%; }

/* Painel de quem se inscreveu. */
.aluno-quando{ color:var(--bordo); margin-top:10px; }
.aluno-sala{ font-size:16px; color:var(--bordo); font-weight:400; margin-top:10px; }
.aluno-espera{ color:var(--tinta-suave); margin-top:10px; line-height:1.55; }
.aluno-presenca{ color:var(--terracota-txt); margin-top:8px; }

/* Faixa da agenda: "com inscrição aqui" × "outros encontros da rede". */
.agenda-faixa{
  color:var(--terracota-txt); border-top:2px solid var(--tinta);
  padding-top:12px; margin:26px 0 4px;
}
.agenda-encontros .ag-row:last-child{ border-bottom:1px solid var(--regra-media); }

@media (max-width:768px){
  .cur-selo-livre{ display:block; margin:0 0 4px; }
  .cur-selo-sep{ display:none; }
}

/* ═════════════════════════════════════════════════════════════
   PRESTAÇÃO DE CONTAS (interna) · CORREÇÕES DE 18/08/2026
   Acréscimo; nenhuma regra existente alterada.
   ═════════════════════════════════════════════════════════════ */

/* Estado do período. O fechado muda de cor porque a diferença entre
   "número congelado" e "número que ainda vai mudar" é a informação mais
   importante da tela — e ela não pode depender de ler a frase inteira. */
.contas-estado{
  color:var(--tinta-suave); margin-top:18px; line-height:1.6;
  border-left:2px solid var(--regra-media); padding-left:14px;
}
.contas-estado.fechado{ color:var(--terracota-txt); border-left-color:var(--tinta); }
.contas-comp{ display:block; color:var(--tinta-suave); margin-top:4px; }
.contas-nota{ color:var(--tinta-suave); margin-top:12px; max-width:640px; line-height:1.55; }

/* Cabeçalho de LINHA (th scope="row"). `.tabela th` foi escrito para o
   cabeçalho de coluna e traz fio de 2px embaixo — aplicado a cada linha,
   ele faz o corpo inteiro da tabela parecer uma pilha de cabeçalhos.
   Aqui o th de linha volta a ter o mesmo fio fino do td, mantendo o
   rótulo em versalete, que é o que o distingue do dado. */
/* Valor não quebra linha. Em telas estreitas a tabela passa a ser mais
   larga que a viewport e rola dentro de `.tabela-rolagem`, que é o
   comportamento desenhado — melhor do que "R$" numa linha e "3.180,00"
   na seguinte, que num extrato chega a mudar o que se lê. */
.tabela .num{ white-space:nowrap; }

.tabela tbody th[scope="row"]{
  border-bottom:1px solid var(--regra);
  padding:15px 16px 15px 0;
  white-space:normal;
  font-size:11px; line-height:1.5; color:var(--tinta);
}

/* Linha de total: fio em cima, peso maior. Sem fundo — a hierarquia do
   projeto vem de fio e peso, nunca de caixa colorida. */
.tabela .tabela-total th,
.tabela .tabela-total td{ border-top:2px solid var(--tinta); }

/* Métricas do painel de quem assina. */
.painel-metrica-nota{ color:var(--tinta-suave); margin-top:10px; line-height:1.55; }

/* Cursos na home. */
.cursos-home .cur-lista{ margin-top:0; }

/* `.leitura` estilizava p, h3, ul e blockquote — não h2. As páginas legais
   (termos, privacidade, contato) usam h2 para numerar as seções, e sem
   regra elas herdavam o h2 de página inteira, grande demais para um
   subtítulo dentro do texto. */
.leitura h2{
  font-size:29px; font-weight:400; letter-spacing:-.018em;
  margin:42px 0 14px; padding-top:16px; border-top:1px solid var(--regra);
}
.leitura h2:first-child{ margin-top:0; padding-top:0; border-top:none; }
.leitura h3{ color:var(--terracota-txt); }

/* Ajuda do campo de busca. */
.busca-ajuda{
  color:var(--tinta-suave); margin-top:14px; line-height:1.6; max-width:720px;
}
.busca-ajuda a{ color:var(--bordo); }

/* .sec-head--apos-filtro era modificador sem regra (auditoria de 17/08).
   Passa a existir: depois de um formulário de filtro, o título precisa de
   ar em cima, senão cola no campo. */
.sec-head--apos-filtro{ margin-top:30px; }

/* ═════════════════════════════════════════════════════════════
   COBERTURA DO DIRETÓRIO (/admin/) · 18/08/2026
   ═════════════════════════════════════════════════════════════ */

.cobertura-lista{ padding:22px 0 6px; }
.cobertura-lista > .rot{ margin-bottom:12px; }

/* As UFs em linha, quebrando naturalmente. Cada item é sigla em versalete
   mais a contagem — a mesma dupla do resto do projeto (rótulo mono, valor
   em serifa), e não uma tabela: tabela de 27 linhas para um número de
   dois dígitos cada é mais estrutura do que a informação pede. */
.cobertura-ufs{ display:flex; flex-wrap:wrap; gap:10px 22px; margin-bottom:12px; }
.cob-item{ font-size:16px; font-weight:300; color:var(--tinta); white-space:nowrap; }
.cob-item b{ color:var(--terracota-txt); font-weight:500; margin-right:5px; }
.cob-item.exterior b{ font-family:var(--serif); font-size:16px; letter-spacing:0; text-transform:none; }
.cobertura-nota{ font-size:13px; color:var(--tinta-suave); font-weight:300; line-height:1.5; max-width:56em; }
.cob-item.orfao b{ color:var(--tinta-suave); }
.cob-item.orfao{ color:var(--tinta-suave); font-style:italic; }

/* Para onde a mensagem vai — antes na caixa da lateral, agora ao lado do
   campo, que é onde a pergunta aparece. */
.contato-destino{ font-size:15px; color:var(--tinta-suave); font-weight:300; line-height:1.55; margin:-6px 0 20px; max-width:44em; }

/* ═══════════════════════════════════════════════════════════════
   MÓDULO DE INTERVISÃO

   Grupos de encontros recorrentes entre pares. O idioma é o mesmo do
   resto: fio, peso tipográfico e espaço. Nenhum border-radius,
   box-shadow ou linear-gradient novo — a única exceção herdada é o
   ponto do `.selo`, que já existia.

   O prefixo é `iv-` para não colidir com `.intervalo`, `.item` e
   companhia num arquivo deste tamanho.
   ═══════════════════════════════════════════════════════════════ */

/* --- o próximo encontro, em destaque no topo do painel --- */
.iv-proximo{
  display:flex; justify-content:space-between; align-items:center; gap:26px;
  border-top:2px solid var(--tinta); border-bottom:1px solid var(--regra);
  padding:22px 0; margin-top:26px;
}
.iv-proximo .rot{ font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--terracota-txt); }
.iv-proximo .quando{ font-size:clamp(21px,2.4vw,27px); font-weight:400; letter-spacing:-.015em; margin-top:6px; }
.iv-proximo .qual{ font-size:15px; color:var(--tinta-suave); font-weight:300; margin-top:3px; }

/* --- um grupo no painel --- */
.iv-grupo{ border-top:1px solid var(--regra-media); }
.iv-grupo:last-of-type{ border-bottom:1px solid var(--regra-media); }
.iv-grupo > summary{
  display:flex; align-items:center; gap:16px; flex-wrap:wrap;
  padding:19px 0; cursor:pointer; list-style:none;
}
.iv-grupo > summary::-webkit-details-marker{ display:none; }
.iv-grupo > summary:focus-visible{ outline:2px solid var(--bordo); outline-offset:3px; }
.iv-grupo .iv-nome{ font-size:21px; font-weight:400; letter-spacing:-.012em; flex:1 1 auto; min-width:0; }
.iv-grupo .sinal{ margin-left:auto; color:var(--tinta-suave); }
.iv-grupo[open] .sinal .mais,
.iv-grupo:not([open]) .sinal .menos{ display:none; }
.iv-grupo .iv-corpo{ padding:4px 0 34px; max-width:52em; }

/* O bloco de quem só participa não é sanfona — não há o que esconder. */
.iv-grupo.simples{ border-top:1px solid var(--regra-media); }
.iv-grupo.simples .iv-corpo{ padding:22px 0 30px; }
.iv-grupo.simples .iv-nome{ font-size:21px; margin-bottom:6px; }

.iv-regra{ font-size:12px; color:var(--tinta-suave); letter-spacing:.03em; margin:4px 0 18px; line-height:1.7; }
.iv-sub{
  font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase;
  color:var(--terracota-txt); margin:30px 0 12px; padding-top:14px;
  border-top:1px solid var(--regra);
}

/* --- pedidos para entrar --- */
.iv-pedido{ border-left:2px solid var(--laranja); padding:14px 0 14px 18px; margin-bottom:20px; }
.iv-pedido-quem{ display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; }
.iv-pedido-quem strong{ font-size:17px; font-weight:500; }
.iv-decidir{ margin-top:12px; }
.iv-decidir textarea{ margin-bottom:12px; }
.iv-botoes{ display:flex; gap:12px; flex-wrap:wrap; }

/* --- quem participa --- */
.iv-gente{ list-style:none; }
.iv-gente li{ padding:13px 0; border-top:1px solid var(--regra); }
.iv-gente li:first-child{ border-top:none; }
.iv-gente strong{ font-size:16px; font-weight:500; margin-right:12px; }
.iv-gente .rot{ font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--tinta-suave); }
.iv-retirar{ margin-top:6px; border-top:none; }
.iv-retirar > summary{ padding:6px 0; font-size:13px; }
.iv-retirar textarea{ margin-bottom:10px; }

/* --- encontros --- */
.iv-encontro{ padding:14px 0; border-top:1px solid var(--regra); }
.iv-encontro:first-of-type{ border-top:none; }
.iv-quando{ display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; }
.iv-quando .data{ font-size:17px; font-weight:400; }
.iv-encontro.cancelado .data{ color:var(--tinta-suave); text-decoration:line-through; }
.iv-form-encontro{ padding-top:10px; }
.iv-form-encontro .btn-secundario{ margin-top:6px; }

/* --- presença --- */
.iv-presenca > summary{ font-size:15px; }
.iv-lista-presenca{ border:none; padding:6px 0 16px; }
.iv-lista-presenca legend{ margin-bottom:10px; }
.iv-check{
  display:flex; align-items:baseline; gap:11px; flex-wrap:wrap;
  padding:11px 0; border-top:1px solid var(--regra); cursor:pointer;
  /* 24px de alvo em toda largura (CLAUDE.md §3.5), sem empurrar o texto. */
  min-height:24px;
}
.iv-lista-presenca .iv-check:first-of-type{ border-top:none; }
.iv-check input{ flex:0 0 auto; }
.iv-check span{ font-size:16px; font-weight:300; }
.iv-check .ajuda{ margin-top:0; font-size:12px; }

/* --- prévia das datas no editor --- */
.iv-previa{ border-left:2px solid var(--regra-media); padding:4px 0 4px 18px; margin:22px 0 6px; }
.iv-previa .rot{ font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--terracota-txt); }
.iv-previa ul{ list-style:none; margin:10px 0 8px; }
.iv-previa li{ font-size:13px; color:var(--tinta); padding:3px 0; letter-spacing:.02em; }

/* --- página pública do grupo --- */
.iv-pagina{ display:grid; grid-template-columns:1fr 330px; column-gap:56px; align-items:start; padding-top:34px; }
.iv-pagina > *{ min-width:0; }
.iv-ficha{ border-top:2px solid var(--tinta); }
.iv-linha{ display:grid; grid-template-columns:110px 1fr; column-gap:16px; padding:13px 0; border-bottom:1px solid var(--regra); align-items:start; }
.iv-linha .rot{ font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--terracota-txt); padding-top:3px; }
.iv-linha .val{ font-size:15px; font-weight:300; line-height:1.5; }
.iv-caixa{ margin-top:30px; padding:22px; background:var(--papel-2); }
.iv-caixa h3{ font-size:19px; font-weight:400; letter-spacing:-.012em; margin-bottom:12px; }
.iv-caixa .btn-largo{ margin-top:8px; }
.iv-quando-grande{ font-size:19px; font-weight:400; margin-bottom:14px; line-height:1.35; }
.iv-nota-lado{ margin-top:22px; font-size:12px; line-height:1.6; }

/* --- listagem --- */
.iv-grade{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--regra-media); border:1px solid var(--regra-media); }
.iv-cartao{ background:var(--papel); padding:26px 24px 24px; display:flex; flex-direction:column; min-width:0; }
.iv-cartao h2{ font-size:21px; font-weight:400; letter-spacing:-.014em; line-height:1.2; }
.iv-cartao h2 a{ color:var(--tinta); text-decoration:none; }
.iv-cartao h2 a:hover{ color:var(--bordo); }
.iv-cartao.fechado{ background:var(--papel-2); }
.iv-resumo{ font-size:15px; font-weight:300; line-height:1.55; color:var(--tinta-suave); margin:12px 0 18px; }
/* `margin-top:auto` no RODAPÉ, e não só no resumo: um cartão sem resumo
   (o campo é opcional) não tinha nada empurrando o rodapé para baixo, e
   ficava com a linha de vagas colada no meio enquanto os vizinhos a
   tinham no pé. Numa grade, o desalinhamento aparece de imediato. */
.iv-rodape{ display:flex; flex-direction:column; gap:4px; margin-top:auto; padding-top:14px; border-top:1px solid var(--regra); }
.iv-cartao > .iv-rodape{ margin-top:auto; }
.iv-rodape span{ font-size:11px; letter-spacing:.05em; color:var(--tinta-suave); }
.iv-coord{ font-size:11px; letter-spacing:.05em; color:var(--tinta-suave); margin-top:8px; }

@media (max-width:1024px){
  .iv-grade{ grid-template-columns:repeat(2,1fr); }
  .iv-pagina{ grid-template-columns:1fr 290px; column-gap:38px; }
}

@media (max-width:760px){
  /* Uma coluna. As placas explícitas do bloco de 1024px não cascateiam
     para cá porque nenhuma delas usa grid-column — a armadilha de
     18/08/2026, quando placements de ≤1024 inventaram uma segunda coluna
     na grade de uma coluna e estouraram 22px em 360px. */
  .iv-grade{ grid-template-columns:1fr; }
  .iv-pagina{ grid-template-columns:1fr; row-gap:34px; }
  .iv-proximo{ flex-direction:column; align-items:flex-start; gap:16px; }
  .iv-linha{ grid-template-columns:1fr; row-gap:3px; }
  .iv-linha .rot{ padding-top:0; }
  .iv-grupo > summary{ gap:10px; }
  .iv-grupo .iv-nome{ flex:1 1 100%; }
}

/* --- moderação de grupos, em /admin/intervisao/ --- */
.iv-moderar{ border-top:1px solid var(--regra-media); padding:24px 0 28px; max-width:800px; }
.iv-moderar h3{ font-size:22px; font-weight:400; letter-spacing:-.014em; margin-bottom:16px; }
.iv-form-moderar{ margin-top:20px; }
