/* =========================================================
   CAOMER — COMPONENTES DO SITE PÚBLICO
   ---------------------------------------------------------
   Equivalente ao painel-ui.css, mas para as páginas que o
   visitante vê. Começa pelo card de pet, que aparece na
   vitrine "Nossos Animais" e deve ser reaproveitado nas
   demais listagens (apadrinhe, home, resultados de busca).

   Paleta herdada do site:
     rosa da marca   #e3156f      rosa claro    #ffcfe0
     verde apoio     #7ac142      texto forte   #34343c
     texto médio     #67696f      texto fraco   #9a9ca3
   ========================================================= */

/* ---------------------------------------------------------
   ESTRUTURA DA PÁGINA
   Duas correções que andam juntas:

   1) Rodapé sempre embaixo. Sem isto, numa página curta (poucos
      eventos, poucos posts) o rodapé parava onde o conteúdo
      acabava e sobrava uma faixa clara até o fim da tela.

   2) Espaço da barra de rolagem sempre reservado. Quando a
      altura da página fica quase igual à da janela, a barra
      aparece e some em ciclo: some -> a página alarga -> o texto
      reflui -> fica mais alta -> a barra volta -> e recomeça.
      É isso que fazia a tela "tremer" ao chegar no rodapé.
   --------------------------------------------------------- */
html {
    /* Barra de rolagem SEMPRE presente. O scrollbar-gutter sozinho não
       resolvia em tela alta (2K), onde a página do blog fica quase do
       mesmo tamanho da janela: a barra entrava e saía, mudando a largura
       útil e refluindo o texto num ciclo sem fim. Com overflow-y: scroll
       a largura nunca muda — e isto funciona em qualquer navegador,
       inclusive nos que ainda não suportam scrollbar-gutter. */
    overflow-y: scroll;
    scrollbar-gutter: stable;
}

body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}
body > main { flex: 1 0 auto; }
body > footer { flex-shrink: 0; }

/* ---------------------------------------------------------
   ESPAÇAMENTO — degraus que faltavam
   O CSS antigo do tema só tinha alguns valores (30, 50, 60, 80…).
   Sem estes, ajustar uma seção obrigava a pular de 30 para 50.
   --------------------------------------------------------- */
.pt-10 { padding-top: 10px; }
.pt-20 { padding-top: 20px; }
.pt-30 { padding-top: 30px; }
.pt-70 { padding-top: 70px; }
.pb-10 { padding-bottom: 10px; }
.pb-20 { padding-bottom: 20px; }
.pb-40 { padding-bottom: 40px; }
.pb-70 { padding-bottom: 70px; }

:root {
    --st-rosa: #e3156f;
    --st-rosa-claro: #ffcfe0;
    --st-verde: #7ac142;
    --st-verde-escuro: #68a838;
    --st-texto: #34343c;
    --st-texto-medio: #67696f;
    --st-texto-fraco: #9a9ca3;
    --st-linha: #efedf0;
}

/* ---------------------------------------------------------
   CARD DE PET
   <article class="cp-card">
     <div class="cp-foto"> img + cp-selo + cp-identidade </div>
     <div class="cp-corpo"> cp-descricao + cp-link </div>
     <div class="cp-rodape"> cp-espera + cp-acoes </div>
   </article>
   --------------------------------------------------------- */
.cp-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #fff;
    border-radius: 18px;
    overflow: hidden;
    /* Sombra em duas camadas: uma bem próxima que desenha a borda do
       card, e outra difusa que dá o descolamento do fundo. Só a difusa
       (como era antes) some quando o fundo é claro. */
    box-shadow: 0 1px 2px rgba(23, 18, 21, .06),
                0 8px 24px rgba(23, 18, 21, .08);
    transition: transform .3s ease, box-shadow .3s ease;
}
.cp-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 1px 2px rgba(227, 21, 111, .10),
                0 18px 44px rgba(227, 21, 111, .18);
}

/* --- Foto e o que fica sobre ela --- */
.cp-foto {
    position: relative;
    height: 250px;
    overflow: hidden;
    flex-shrink: 0;
}
.cp-foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .5s ease;
}
.cp-card:hover .cp-foto img { transform: scale(1.05); }

/* Escurece só a parte de baixo, para o nome ficar legível
   sobre qualquer foto — inclusive as claras. */
.cp-foto::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 62%;
    background: linear-gradient(transparent, rgba(0, 0, 0, .68));
    pointer-events: none;
}

/* Selo no canto superior esquerdo (ex.: Adoção especial) */
.cp-selo {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: #fff;
    color: var(--st-texto);
    font-size: .74rem;
    font-weight: 700;
    padding: 5px 11px;
    border-radius: 30px;
    box-shadow: 0 3px 12px rgba(0, 0, 0, .16);
}
.cp-selo i { color: #f0a500; font-size: .78rem; }

/* Nome + pills, ancorados na base da foto */
.cp-identidade {
    position: absolute;
    left: 14px;
    right: 14px;
    bottom: 12px;
    z-index: 2;
}
.cp-nome {
    margin: 0 0 7px;
    color: #fff;
    font-size: 1.45rem;
    font-weight: 800;
    line-height: 1.1;
    text-shadow: 0 1px 8px rgba(0, 0, 0, .45);
}
.cp-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}
.cp-pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: #fff;
    color: var(--st-texto);
    font-size: .74rem;
    font-weight: 600;
    line-height: 1;
    padding: 5px 10px;
    border-radius: 30px;
    white-space: nowrap;
}
.cp-pill i { font-size: .72rem; }
.cp-pill[data-sexo="Fêmea"] i { color: var(--st-rosa); }
.cp-pill[data-sexo="Macho"] i { color: #2f80ed; }

/* --- Corpo --- */
.cp-corpo {
    flex: 1 1 auto;
    padding: 14px 16px 0;
}
.cp-descricao {
    margin: 0 0 8px;
    color: var(--st-texto-medio);
    font-size: .88rem;
    line-height: 1.45;
    /* Duas linhas e reticências, independente do tamanho do texto */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.cp-descricao-vazia { font-style: italic; color: var(--st-texto-fraco); }

/* Chamada para a ficha. Sem sublinhado: quem indica que é clicável é a
   cor da marca mais a seta, que anda um pouco no hover. */
.cp-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--st-rosa);
    font-size: .85rem;
    font-weight: 700;
    text-decoration: none;
    transition: gap .2s ease;
}
.cp-link:hover { color: var(--st-rosa); text-decoration: none; gap: 10px; }
.cp-link i { font-size: .74rem; }

/* Versão que aparece só na grade de 2 colunas do celular, no lugar do
   "Estou no abrigo há…". Some por padrão. */
.cp-ver { display: none; }

/* Selo do tempo de abrigo sobre a foto — idem, só na grade do celular,
   porque no desktop essa informação já está no rodapé do card. */
.cp-pill-tempo { display: none; }

/* --- Rodapé --- */
.cp-rodape {
    padding: 12px 16px 16px;
    margin-top: 12px;
    border-top: 1px solid var(--st-linha);
}
.cp-espera {
    display: block;
    text-align: center;
    color: var(--st-texto-medio);
    font-size: .84rem;
    margin-bottom: 11px;
}
.cp-espera strong { color: var(--st-texto); font-weight: 700; }

.cp-acoes {
    display: flex;
    gap: 8px;
}
.cp-btn {
    flex: 1 1 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: 40px;
    padding: 9px 12px;
    border: none;
    border-radius: 30px;
    font-size: .92rem;
    font-weight: 700;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: filter .18s ease, transform .18s ease;
}
.cp-btn:hover {
    filter: brightness(1.06);
    transform: translateY(-1px);
    text-decoration: none;
}
.cp-btn-adotar     { background: var(--st-rosa); color: #fff; }
.cp-btn-adotar:hover { color: #fff; }
.cp-btn-apadrinhar { background: var(--st-verde); color: #fff; }
.cp-btn-apadrinhar:hover { color: #fff; }

/* ---------------------------------------------------------
   VITRINE EM 2 COLUNAS NO CELULAR (.cp-grade)
   Duas colunas num celular deixam cada card com ~165px. O card
   cheio não cabe ali, então nesta grade o conteúdo enxuga: some
   a descrição e o link (o card inteiro já leva para a ficha) e
   sobra espaço para a foto e para os dois botões.
   Escopado na .cp-grade de propósito — home e /apadrinhe seguem
   com uma coluna e o card completo.
   --------------------------------------------------------- */
@media (max-width: 767px) {
    .cp-grade .cp-descricao,
    .cp-grade .cp-link { display: none; }

    .cp-grade .cp-foto { height: 190px; }
    .cp-grade .cp-nome { font-size: 1.16rem; margin-bottom: 5px; }
    .cp-grade .cp-identidade { left: 10px; right: 10px; bottom: 10px; }

    /* Em ~137px úteis não cabem sexo por extenso + idade + porte numa
       linha. Em vez de abreviar o sexo, o porte sai daqui: é o dado
       menos decisivo na vitrine e continua na ficha do animal.
       Sobram duas pills em cima e o tempo de abrigo embaixo. */
    .cp-grade .cp-pills { flex-wrap: wrap; gap: 4px; }
    .cp-grade .cp-pill {
        font-size: .66rem;
        padding: 3px 8px;
        white-space: nowrap;
    }
    .cp-grade .cp-pill i { font-size: .64rem; }
    .cp-grade .cp-pill-porte { display: none; }

    /* Tempo de abrigo, sempre na própria linha */
    .cp-grade .cp-pill-tempo {
        display: inline-flex;
        margin-top: 4px;
        background: rgba(255, 255, 255, .92);
        color: var(--st-texto-medio);
        font-weight: 700;
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .cp-grade .cp-pill-tempo i { color: var(--st-rosa); }

    /* Sem descrição, o corpo vira só um respiro entre foto e rodapé */
    .cp-grade .cp-corpo { padding: 0; }
    .cp-grade .cp-rodape {
        margin-top: 0;
        border-top: none;
        padding: 12px 12px 14px;
    }
    /* No lugar do tempo de abrigo, uma chamada para a ficha */
    .cp-grade .cp-espera { display: none; }
    .cp-grade .cp-ver {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 5px;
        width: 100%;
        margin-bottom: 10px;
        color: var(--st-rosa);
        font-size: .8rem;
        font-weight: 700;
        text-decoration: none;
    }
    .cp-grade .cp-ver i { font-size: .68rem; }

    .cp-grade .cp-acoes { flex-direction: column; gap: 6px; }
    .cp-grade .cp-btn { min-height: 36px; padding: 7px 10px; font-size: .86rem; }
}

/* Telas muito estreitas (abaixo de ~360px): duas colunas
   apertariam demais, volta para uma. */
@media (max-width: 359px) {
    .cp-grade > [class*="col-"] { flex: 0 0 100%; max-width: 100%; }
    .cp-grade .cp-foto { height: 240px; }
}

/* Etiqueta de valor, canto superior direito (página /apadrinhe) */
.cp-preco {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 2;
    background: #fff;
    color: var(--st-rosa);
    font-size: .9rem;
    font-weight: 800;
    padding: 5px 13px;
    border-radius: 30px;
    box-shadow: 0 3px 12px rgba(0, 0, 0, .14);
}
.cp-preco small {
    font-size: .68rem;
    font-weight: 600;
    color: var(--st-texto-fraco);
}

/* --- Progresso de padrinhos (usado na página /apadrinhe) ---
   Fica logo abaixo da foto, antes da descrição. */
.cp-padrinhos {
    padding: 13px 16px 0;
    text-align: center;
}
.cp-padrinhos-texto {
    display: block;
    color: var(--st-texto);
    font-size: 1.02rem;
    margin-bottom: 7px;
}
.cp-padrinhos-texto strong { font-weight: 800; }

/* ---------------------------------------------------------
   BARRA DE PROGRESSO
   Compartilhada por campanhas (valor) e apadrinhamento (cotas).
   A cor vem do data-tom, nunca de estilo inline.
   --------------------------------------------------------- */
.st-barra {
    height: 9px;
    border-radius: 5px;
    background: #ebe9ec;
    overflow: hidden;
}
.st-barra-preenchida {
    height: 100%;
    border-radius: 5px;
    background: var(--st-verde);
    transition: width .5s ease;
}
.st-barra[data-tom="meio"]    .st-barra-preenchida { background: #ff9800; }
.st-barra[data-tom="cheio"]   .st-barra-preenchida { background: #28a745; }
.st-barra[data-tom="inicio"]  .st-barra-preenchida { background: var(--st-verde); }

/* ---------------------------------------------------------
   CARD DE CAMPANHA
   <article class="cc-card">
     <div class="cc-foto"> img + cc-titulo </div>
     <div class="cc-corpo"> cc-rotulo + barra + cc-valores + cc-descricao </div>
     <div class="cc-rodape"> cc-valor + botão </div>
   </article>
   --------------------------------------------------------- */
.cc-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #fff;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0, 0, 0, .06);
    transition: transform .3s ease, box-shadow .3s ease;
}
.cc-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 18px 44px rgba(227, 21, 111, .12);
}

.cc-foto {
    position: relative;
    height: 210px;
    overflow: hidden;
    background: #fdf2f7;
    flex-shrink: 0;
}
.cc-foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
}
.cc-foto::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 60%;
    background: linear-gradient(transparent, rgba(0, 0, 0, .68));
    pointer-events: none;
}
/* Quando a campanha não tem foto */
.cc-foto-vazia {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}
.cc-foto-vazia i { font-size: 3.4rem; color: var(--st-rosa); opacity: .28; }

.cc-selo {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: var(--st-rosa);
    color: #fff;
    font-size: .74rem;
    font-weight: 700;
    padding: 5px 13px;
    border-radius: 30px;
}
.cc-pet {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: #fff;
    color: var(--st-rosa);
    font-size: .74rem;
    font-weight: 700;
    padding: 5px 12px;
    border-radius: 30px;
    box-shadow: 0 3px 12px rgba(0, 0, 0, .14);
}

.cc-titulo {
    position: absolute;
    left: 16px;
    right: 16px;
    bottom: 12px;
    z-index: 2;
    margin: 0;
    color: #fff;
    font-size: 1.35rem;
    font-weight: 800;
    line-height: 1.2;
    text-shadow: 0 1px 8px rgba(0, 0, 0, .45);
}

.cc-corpo {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    padding: 14px 18px 16px;
}
.cc-rotulo {
    display: block;
    color: var(--st-texto);
    font-size: .92rem;
    margin-bottom: 8px;
}
.cc-valores {
    display: flex;
    align-items: baseline;
    gap: 7px;
    margin: 9px 0 10px;
    font-size: 1.16rem;
    font-weight: 800;
}
.cc-valor-atual { color: var(--st-rosa); }
.cc-valor-sep,
.cc-valor-meta { color: var(--st-texto-fraco); font-weight: 700; }

.cc-meta-extra {
    display: flex;
    justify-content: space-between;
    font-size: .8rem;
    color: var(--st-texto-fraco);
    margin: -4px 0 10px;
}

/* Sempre 3 linhas: corta o texto longo e reserva o espaço do curto.
   Sem o min-height, uma campanha de uma linha encolheria o card e o
   "Ler a história completa" subiria em relação aos vizinhos. */
.cc-descricao {
    margin: 0;
    color: var(--st-texto-medio);
    font-size: .87rem;
    line-height: 1.5;
    min-height: calc(.87rem * 1.5 * 3);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.cc-rodape { padding: 14px 18px 18px; }

/* Campo de valor: o "R$" fica dentro da caixa, à esquerda */
.cc-valor-campo {
    position: relative;
    margin-bottom: 10px;
}
.cc-valor-campo .cc-rs {
    position: absolute;
    left: 15px;
    top: 50%;
    transform: translateY(-50%);
    font-weight: 700;
    color: var(--st-texto-fraco);
    pointer-events: none;
}
.cc-valor-campo input {
    width: 100%;
    height: 46px;
    padding: 0 16px 0 42px;
    border: 2px solid #ebe9ec;
    border-radius: 12px;
    font-size: 1rem;
    color: var(--st-texto);
    transition: border-color .2s ease, box-shadow .2s ease;
}
.cc-valor-campo input:focus {
    outline: none;
    border-color: var(--st-rosa);
    box-shadow: 0 0 0 3px rgba(227, 21, 111, .12);
}

.cc-btn {
    display: block;
    width: 100%;
    padding: 13px;
    border: none;
    border-radius: 30px;
    background: var(--st-rosa);
    color: #fff;
    font-size: 1.02rem;
    font-weight: 800;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: filter .18s ease, transform .18s ease;
}
.cc-btn:hover {
    filter: brightness(1.06);
    transform: translateY(-1px);
    color: #fff;
    text-decoration: none;
}
.cc-btn:disabled {
    background: #ccc;
    cursor: not-allowed;
    filter: none;
    transform: none;
}

.cc-erro {
    display: none;
    margin: 8px 0 0;
    color: #dc3545;
    font-size: .86rem;
}
.cc-seguro {
    margin: 10px 0 0;
    text-align: center;
    font-size: .8rem;
    color: var(--st-texto-fraco);
}
.cc-seguro i { color: #28a745; }

/* A área clicável vai só até a descrição: o rodapé tem campo de
   valor e botão, que precisam do clique para eles mesmos.

   Este link virou o filho direto do .cc-card, ocupando o lugar que
   antes era do .cc-corpo. Sem o flex:1 abaixo ele não estica, e o
   rodapé de cada card para onde o texto acabou — foi assim que os
   botões "Apoiar" saíram de linha entre cards vizinhos. */
.cc-abrir {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}
.cc-abrir:hover { color: inherit; text-decoration: none; }
.cc-abrir:hover .cc-titulo { text-decoration: underline; }
.cc-abrir:focus-visible {
    outline: 2px solid var(--st-rosa);
    outline-offset: -2px;
}
.cc-mais {
    display: inline-flex;
    align-items: center;
    /* Como item de um flex column, sem isto ele esticaria na largura
       toda e o sublinhado do hover atravessaria o card. */
    align-self: flex-start;
    gap: 5px;
    margin-top: auto;   /* encosta na base do corpo, alinhado entre cards */
    padding-top: 8px;
    color: var(--st-rosa);
    font-size: .84rem;
    font-weight: 700;
}
.cc-abrir:hover .cc-mais { text-decoration: underline; }

/* ---------------------------------------------------------
   JANELA DA CAMPANHA (aberta ao clicar no card)
   Segue o mesmo padrão do modal de doação desta página: HTML
   próprio e JS puro, sem depender da versão do Bootstrap.
   --------------------------------------------------------- */
.cc-janela {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 9998;
    background: rgba(0, 0, 0, .55);
    align-items: center;
    justify-content: center;
    padding: 20px;
}
.cc-janela.aberta { display: flex; }

.cc-janela-caixa {
    position: relative;
    background: #fff;
    border-radius: 20px;
    overflow: hidden;
    width: 100%;
    max-width: 620px;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .3);
}
.cc-janela-foto {
    position: relative;
    height: 220px;
    flex-shrink: 0;
    background: #fdf2f7;
}
.cc-janela-foto img { width: 100%; height: 100%; object-fit: cover; }
.cc-janela-foto::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 60%;
    background: linear-gradient(transparent, rgba(0, 0, 0, .68));
}
.cc-janela-titulo {
    position: absolute;
    left: 22px;
    right: 22px;
    bottom: 14px;
    z-index: 2;
    margin: 0;
    color: #fff;
    font-size: 1.42rem;
    font-weight: 800;
    line-height: 1.2;
    text-shadow: 0 1px 8px rgba(0, 0, 0, .45);
}
.cc-janela-fechar {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 3;
    width: 34px;
    height: 34px;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, .92);
    color: var(--st-texto);
    font-size: .95rem;
    cursor: pointer;
}
.cc-janela-fechar:hover { background: #fff; }

.cc-janela-corpo {
    padding: 20px 24px;
    overflow-y: auto;
}
/* Texto completo — sem corte, ao contrário do card */
.cc-janela-texto {
    margin: 14px 0 0;
    color: var(--st-texto-medio);
    font-size: .95rem;
    line-height: 1.65;
    white-space: pre-line;
}
.cc-janela-rodape {
    flex-shrink: 0;
    padding: 14px 24px 20px;
    border-top: 1px solid var(--st-linha);
}

@media (max-width: 575px) {
    .cc-janela-foto { height: 170px; }
    .cc-janela-titulo { font-size: 1.18rem; }
    .cc-janela-corpo { padding: 16px 18px; }
}

/* --- Variante em destaque -----------------------------------
   Mesmo card vertical das demais, só que maior e centralizado.
   A versão deitada (foto à esquerda) foi abandonada: a coluna de
   texto nunca enchia a altura da foto e sobrava um vão grande.
   ------------------------------------------------------------- */
.cc-card-destaque {
    max-width: 680px;
    margin: 0 auto 40px;
}
.cc-card-destaque .cc-foto { height: 300px; }
.cc-card-destaque .cc-titulo { font-size: 1.72rem; }
.cc-card-destaque .cc-corpo { padding: 18px 24px 0; }
.cc-card-destaque .cc-rodape { padding: 16px 24px 22px; }
.cc-card-destaque .cc-rotulo { font-size: 1rem; }
.cc-card-destaque .cc-valores { font-size: 1.32rem; }
/* No destaque a descrição pode respirar mais que nos cards menores */
.cc-card-destaque .cc-descricao {
    font-size: .92rem;
    -webkit-line-clamp: 5;
}

/* Valor e botão lado a lado — evita duas faixas soltas empilhadas */
@media (min-width: 576px) {
    .cc-card-destaque .cc-acao-linha {
        display: flex;
        align-items: center;
        gap: 10px;
    }
    .cc-card-destaque .cc-acao-linha .cc-valor-campo {
        width: 160px;
        flex-shrink: 0;
        margin-bottom: 0;
    }
    .cc-card-destaque .cc-acao-linha .cc-btn { flex: 1 1 auto; }
}

/* ---------------------------------------------------------
   CARTÃO DE FORMA DE DOAÇÃO
   Usado na página "Faça uma doação". Todos os cartões nascem
   iguais; o .cd-card-destaque é o único que puxa atenção —
   por isso deve haver no máximo um por tela.
   --------------------------------------------------------- */
.cd-card {
    position: relative;
    /* Coluna flex para que o CTA (que tem margin-top:auto) desça até o
       rodapé. Lado a lado, o cartão mais curto acompanha a altura do
       outro em vez de deixar um vão embaixo do botão. */
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 2px solid transparent;
    border-radius: 20px;
    padding: 28px 30px;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .06);
    height: 100%;
}
.cd-card-destaque {
    border-color: var(--st-rosa);
    box-shadow: 0 14px 44px rgba(227, 21, 111, .14);
    padding-top: 34px;
}

/* Selo que cavalga a borda de cima */
.cd-selo {
    position: absolute;
    top: -13px;
    left: 30px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--st-rosa);
    color: #fff;
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .3px;
    padding: 5px 15px;
    border-radius: 30px;
}

/* Valores sugeridos: três colunas iguais, sem depender de quantos
   caracteres tem cada rótulo ("R$ 25" x "R$ 100/mês"). */
.cd-valores-grade {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin-bottom: 16px;
}
.cd-valores-grade .valor-rapido {
    width: 100%;
    text-align: center;
    padding-left: 4px;
    padding-right: 4px;
}

.cd-cabecalho {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 18px;
}
.cd-icone {
    width: 50px;
    height: 50px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fdf2f7;
    color: var(--st-rosa);
    font-size: 1.3rem;
}
.cd-icone[data-tom="verde"] { background: #e6fff0; color: #28a745; }
.cd-icone[data-tom="cinza"] { background: #f2f1f3; color: var(--st-texto-medio); }

.cd-titulo {
    margin: 0;
    color: var(--st-texto);
    font-size: 1.22rem;
    font-weight: 800;
}
.cd-card-destaque .cd-titulo { font-size: 1.4rem; }
.cd-subtitulo {
    margin: 2px 0 0;
    color: var(--st-texto-fraco);
    font-size: .9rem;
    line-height: 1.45;
}

/* Frase curta que justifica o destaque */
.cd-argumento {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    background: #fdf2f7;
    border-radius: 12px;
    padding: 11px 14px;
    margin-bottom: 16px;
    color: #8a3560;
    font-size: .88rem;
    line-height: 1.5;
}
.cd-argumento i { margin-top: 3px; color: var(--st-rosa); }

/* Nos cartões sem destaque o argumento não deve competir com o
   principal — mesma forma, tom neutro. */
.cd-argumento[data-tom="neutro"] {
    background: #f4f3f5;
    color: var(--st-texto-medio);
}
.cd-argumento[data-tom="neutro"] i { color: var(--st-texto-fraco); }

@media (max-width: 575px) {
    .cd-card { padding: 22px 20px; }
    .cd-selo { left: 20px; }
}

/* ---------------------------------------------------------
   MURAL DE APADRINHADOS
   Reaproveita o cp-card (foto + nome sobreposto) e acrescenta
   a lista de padrinhos daquele animal. A lista fica DENTRO do
   card de propósito: é ela que mostra o vínculo entre quem
   apadrinhou e quem foi apadrinhado.
   --------------------------------------------------------- */
.cp-selo-ok {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: #e6f9ed;
    color: #1c7a3d;
    font-size: .73rem;
    font-weight: 700;
    padding: 5px 12px;
    border-radius: 30px;
}

.cp-padrinhos-lista {
    flex: 1 1 auto;   /* cards lado a lado com listas de tamanhos diferentes */
    padding: 12px 16px 16px;
}
.cp-padrinhos-titulo {
    display: block;
    color: var(--st-rosa);
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
}

/* Uma linha por padrinho — compacta o bastante para caber
   duas ou três sem o card virar um vão branco. */
.cp-padrinho {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 7px 0;
}
.cp-padrinho + .cp-padrinho { border-top: 1px solid var(--st-linha); }

.cp-padrinho-foto {
    width: 38px;
    height: 38px;
    flex-shrink: 0;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #fce4ee;
}
.cp-padrinho-vazio {
    width: 38px;
    height: 38px;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fce4ee;
    color: var(--st-rosa);
    font-size: .82rem;
}
.cp-padrinho-nome {
    display: block;
    color: var(--st-texto);
    font-size: .9rem;
    font-weight: 700;
    line-height: 1.25;
}
.cp-padrinho-nome[data-anonimo] { color: var(--st-texto-fraco); font-style: italic; }
.cp-padrinho-desde {
    display: block;
    color: var(--st-texto-fraco);
    font-size: .76rem;
}

/* ---------------------------------------------------------
   GALERIA DA FICHA DO ANIMAL
   Foto grande + tira de miniaturas. Substitui o carrossel com
   bolinhas. A identidade dos cards (nome + pills + selo) vem
   para cima da foto principal.
   --------------------------------------------------------- */
/* Coluna flex de altura cheia: a foto acompanha a altura da
   coluna de texto ao lado (row align-items-stretch), em vez de
   ter uma altura fixa que cortava mal as fotos verticais. */
.ad-galeria {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
}

.ad-principal {
    position: relative;
    flex: 1 1 auto;
    min-height: 380px;
    border-radius: 16px;
    overflow: hidden;
    background: #fdf2f7;
    box-shadow: 0 12px 34px rgba(0, 0, 0, .1);
}
/* O link do lightbox precisa preencher o quadro para a imagem ter
   contra o que medir 100% de altura. Sem isto a foto renderizava
   no tamanho natural e a vertical estourava a div. */
.ad-principal > a {
    display: block;
    width: 100%;
    height: 100%;
    cursor: zoom-in;
}
.ad-principal img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 25%;
    display: block;
}
/* Degradê só na base, para o nome ficar legível sobre a foto */
.ad-principal::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 45%;
    background: linear-gradient(transparent, rgba(0, 0, 0, .62));
    pointer-events: none;
}

.ad-selo {
    position: absolute;
    top: 14px;
    left: 14px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #fff;
    color: var(--st-texto);
    font-size: .78rem;
    font-weight: 700;
    padding: 6px 13px;
    border-radius: 30px;
    box-shadow: 0 3px 12px rgba(0, 0, 0, .16);
}
.ad-selo i { color: #f0a500; }

.ad-identidade {
    position: absolute;
    left: 18px;
    right: 18px;
    bottom: 16px;
    z-index: 2;
}
.ad-nome {
    margin: 0 0 8px;
    color: #fff;
    font-size: 2rem;
    font-weight: 800;
    line-height: 1.1;
    text-shadow: 0 1px 8px rgba(0, 0, 0, .45);
}
.ad-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.ad-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: #fff;
    color: var(--st-texto);
    font-size: .82rem;
    font-weight: 600;
    line-height: 1;
    padding: 6px 12px;
    border-radius: 30px;
}
.ad-pill i { font-size: .78rem; }
.ad-pill[data-sexo="Fêmea"] i { color: var(--st-rosa); }
.ad-pill[data-sexo="Macho"] i { color: #2f80ed; }

/* Tira de miniaturas */
.ad-miniaturas {
    display: flex;
    gap: 8px;
    margin-top: 10px;
}
.ad-miniatura {
    flex: 1 1 0;
    min-width: 0;
    height: 72px;
    border-radius: 10px;
    overflow: hidden;
    cursor: pointer;
    border: 2.5px solid transparent;
    padding: 0;
    background: #fdf2f7;
    transition: border-color .18s ease;
}
.ad-miniatura img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ad-miniatura.ativa { border-color: var(--st-rosa); }
.ad-miniatura:hover { border-color: #f4b6d1; }

@media (max-width: 991px) {
    /* Empilhado no tablet/celular, a coluna não tem par para
       acompanhar — volta a uma altura própria. */
    .ad-galeria { height: auto; }
    .ad-principal { min-height: 0; height: 380px; }
}
@media (max-width: 575px) {
    .ad-principal { height: 320px; }
    .ad-nome { font-size: 1.6rem; }
    .ad-miniatura { height: 58px; }
}

/* ---------------------------------------------------------
   BOTÕES DA FICHA DO ANIMAL
   Verde = adotar (WhatsApp) · rosa = apadrinhar · contorno = voltar.
   O verde do WhatsApp é mantido por convenção do canal.
   --------------------------------------------------------- */
.ad-acoes {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 26px;
}
.ad-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px 26px;
    /* border/font zerados porque "Quero adotar" agora é um <button>
       (abre o pop-up), e precisa ficar idêntico aos <a> ao lado. */
    border: 0;
    border-radius: 30px;
    font-family: inherit;
    font-size: 1.02rem;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    transition: filter .18s ease, transform .18s ease;
}
.ad-btn:hover { filter: brightness(1.05); transform: translateY(-1px); text-decoration: none; }
.ad-btn i { font-size: 1.15rem; }
.ad-btn-adotar     { background: #15803d; color: #fff; }
.ad-btn-adotar:hover { color: #fff; }
.ad-btn-apadrinhar { background: var(--st-rosa); color: #fff; }
.ad-btn-apadrinhar:hover { color: #fff; }
.ad-btn-voltar {
    background: transparent;
    border: 2px solid var(--st-rosa);
    color: var(--st-rosa);
    padding: 10px 24px;
}
.ad-btn-voltar:hover { background: #fdeaf2; color: var(--st-rosa); }

/* ---------------------------------------------------------
   SELO / TAG SEMÂNTICA (resultado de exame, status)
   Equivalente ao .selo do painel, mas para o site público.
   A cor vem do data-tom.
   --------------------------------------------------------- */
.st-tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: .82rem;
    font-weight: 700;
    padding: 5px 13px;
    border-radius: 30px;
    background: #f1f0f2;
    color: var(--st-texto-medio);
    white-space: nowrap;
}
.st-tag i { font-size: .78rem; }
.st-tag[data-tom="verde"]   { background: #e6f9ed; color: #1c7a3d; }
.st-tag[data-tom="laranja"] { background: #fff3e0; color: #b45613; }
.st-tag[data-tom="rosa"]    { background: #fdeaf2; color: #b31560; }
.st-tag[data-tom="azul"]    { background: #e6f1fb; color: #185fa5; }

/* ---------------------------------------------------------
   FILTROS EM PÍLULA (blog e afins)
   Substituem a lista de categorias que ficava na barra lateral.
   --------------------------------------------------------- */
.st-filtros {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-bottom: 30px;
}
.st-pilula {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #fff;
    border: 1.5px solid #eceaee;
    color: var(--st-texto-medio);
    font-size: .86rem;
    font-weight: 700;
    padding: 8px 17px;
    border-radius: 30px;
    text-decoration: none;
    transition: all .18s ease;
}
.st-pilula:hover {
    border-color: var(--st-rosa);
    color: var(--st-rosa);
    text-decoration: none;
}
.st-pilula.ativa {
    background: var(--st-rosa);
    border-color: var(--st-rosa);
    color: #fff;
}
.st-pilula i { font-size: .8rem; }

/* Busca do blog: botão + painel que abre no fluxo, exatamente como
   o menu do cabeçalho. A versão anterior usava <details> com o painel
   em position:absolute — um elemento posicionado dentro de um <details>
   fechado é medido de forma inconsistente pelo navegador, e era isso
   que fazia a página oscilar de altura em telas grandes. Aqui não há
   nada absoluto nem escondido pelo navegador: o painel é um bloco
   normal que só muda de altura. */
.st-busca-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    background: #fff;
    border: 1.5px solid #eceaee;
    border-radius: 50%;
    color: var(--st-texto-medio);
    cursor: pointer;
    transition: all .18s ease;
}
.st-busca-btn:hover { border-color: var(--st-rosa); color: var(--st-rosa); }
.st-busca-btn[aria-expanded="true"] {
    background: var(--st-rosa);
    border-color: var(--st-rosa);
    color: #fff;
}

.st-busca-painel {
    overflow: hidden;
    max-height: 0;
    transition: max-height .28s ease;
}
.st-busca-painel > div {
    display: flex;
    justify-content: center;
    gap: 8px;
    padding: 4px 0 22px;
}
.st-busca-painel input {
    width: 100%;
    max-width: 320px;
    height: 42px;
    padding: 0 16px;
    border: 1.5px solid #eceaee;
    border-radius: 12px;
    font-size: .92rem;
    color: var(--st-texto);
    background: #fff;
}
.st-busca-painel input:focus { outline: none; border-color: var(--st-rosa); }
.st-busca-painel button {
    width: 42px;
    height: 42px;
    flex-shrink: 0;
    border: none;
    border-radius: 12px;
    background: var(--st-rosa);
    color: #fff;
    cursor: pointer;
}

/* ---------------------------------------------------------
   CARD DE POST DO BLOG
   <a class="cb-card">
     <div class="cb-foto"> img + cb-categoria </div>
     <div class="cb-corpo"> cb-titulo + cb-resumo + cb-meta </div>
   </a>
   O card inteiro é o link — não há segunda ação dentro dele,
   ao contrário do card de campanha.
   --------------------------------------------------------- */
.cb-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #fff;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0, 0, 0, .06);
    text-decoration: none;
    transition: transform .3s ease, box-shadow .3s ease;
}
.cb-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 18px 44px rgba(227, 21, 111, .12);
    text-decoration: none;
}

.cb-foto {
    position: relative;
    height: 200px;
    flex-shrink: 0;
    overflow: hidden;
    background: #fdf2f7;
}
.cb-foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .5s ease;
}
.cb-card:hover .cb-foto img { transform: scale(1.05); }

.cb-categoria {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 2;
    background: var(--st-rosa);
    color: #fff;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .3px;
    padding: 5px 13px;
    border-radius: 30px;
}

.cb-corpo {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    padding: 16px 18px 18px;
}
.cb-titulo {
    margin: 0 0 8px;
    color: var(--st-texto);
    font-size: 1.12rem;
    font-weight: 800;
    line-height: 1.32;
    /* Duas linhas fixas: títulos de tamanhos diferentes não
       desalinham o resumo dos cards vizinhos. */
    min-height: calc(1.12rem * 1.32 * 2);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.cb-card:hover .cb-titulo { color: var(--st-rosa); }

.cb-resumo {
    margin: 0;
    color: var(--st-texto-medio);
    font-size: .88rem;
    line-height: 1.55;
    min-height: calc(.88rem * 1.55 * 3);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.cb-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px;
    margin-top: auto;
    padding-top: 14px;
    color: var(--st-texto-fraco);
    font-size: .78rem;
}
.cb-meta span { display: inline-flex; align-items: center; gap: 5px; }
.cb-meta i { color: var(--st-rosa); font-size: .76rem; }

/* ---------------------------------------------------------
   EVENTOS
   A arte vem em formato story (9:16), que é o que a ONG já
   produz. Alta demais para ocupar a largura do card, então
   ela fica numa coluna estreita ao lado das informações —
   assim aparece inteira, sem corte, e o card não vira um
   paredão de imagem.
   --------------------------------------------------------- */
.ce-card {
    display: flex;
    background: #fff;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0, 0, 0, .06);
    text-decoration: none;
    transition: transform .3s ease, box-shadow .3s ease;
}
.ce-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 16px 40px rgba(227, 21, 111, .12);
    text-decoration: none;
}

.ce-arte {
    position: relative;
    width: 42%;
    max-width: 190px;
    flex-shrink: 0;
    align-self: stretch;
    background: #fdf2f7;
    overflow: hidden;
}
.ce-arte img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
}
/* Sem arte cadastrada */
.ce-arte-vazia {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    min-height: 240px;
}
.ce-arte-vazia i { font-size: 2.4rem; color: var(--st-rosa); opacity: .28; }

/* Bloco de data, sobreposto ao topo da arte */
.ce-data {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 2;
    background: #fff;
    border-radius: 12px;
    padding: 6px 10px;
    text-align: center;
    line-height: 1.1;
    box-shadow: 0 3px 12px rgba(0, 0, 0, .18);
}
.ce-data .dia {
    display: block;
    color: var(--st-rosa);
    font-size: 1.25rem;
    font-weight: 800;
}
.ce-data .mes {
    display: block;
    color: var(--st-texto-fraco);
    font-size: .66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
}

.ce-corpo {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-width: 0;
    padding: 16px 18px;
}
.ce-tipo {
    display: inline-flex;
    align-self: flex-start;
    align-items: center;
    gap: 5px;
    background: #fdf2f7;
    color: var(--st-rosa);
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .4px;
    padding: 4px 11px;
    border-radius: 30px;
    margin-bottom: 9px;
}
.ce-nome {
    margin: 0 0 9px;
    color: var(--st-texto);
    font-size: 1.1rem;
    font-weight: 800;
    line-height: 1.3;
}
.ce-card:hover .ce-nome { color: var(--st-rosa); }

.ce-info {
    display: block;
    color: var(--st-texto-medio);
    font-size: .84rem;
    line-height: 1.5;
    margin-bottom: 4px;
}
.ce-info i {
    color: var(--st-rosa);
    width: 15px;
    margin-right: 5px;
    font-size: .78rem;
}
.ce-chamada {
    margin: 9px 0 0;
    color: var(--st-texto-medio);
    font-size: .84rem;
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.ce-contagem {
    margin-top: auto;
    padding-top: 12px;
    color: var(--st-rosa);
    font-size: .82rem;
    font-weight: 700;
}

/* --- Linha compacta, para os eventos seguintes --- */
.ce-linha {
    display: flex;
    align-items: center;
    gap: 13px;
    background: #fff;
    border-radius: 14px;
    padding: 12px 15px;
    margin-top: 12px;
    box-shadow: 0 3px 14px rgba(0, 0, 0, .05);
    text-decoration: none;
    transition: transform .2s ease, box-shadow .2s ease;
}
.ce-linha:hover {
    transform: translateX(3px);
    box-shadow: 0 8px 24px rgba(227, 21, 111, .1);
    text-decoration: none;
}
.ce-linha-data {
    flex-shrink: 0;
    width: 46px;
    text-align: center;
    background: #fdf2f7;
    border-radius: 10px;
    padding: 6px 0;
    line-height: 1.1;
}
.ce-linha-data .dia { display: block; color: var(--st-rosa); font-size: 1.05rem; font-weight: 800; }
.ce-linha-data .mes { display: block; color: var(--st-texto-fraco); font-size: .6rem; font-weight: 700; text-transform: uppercase; }
.ce-linha-texto { min-width: 0; }
.ce-linha-nome {
    display: block;
    color: var(--st-texto);
    font-size: .92rem;
    font-weight: 700;
    line-height: 1.3;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.ce-linha:hover .ce-linha-nome { color: var(--st-rosa); }
.ce-linha-local {
    display: block;
    color: var(--st-texto-fraco);
    font-size: .78rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* --- Selo "realizado", para os eventos passados --- */
.ce-realizado .ce-arte { filter: saturate(.85); }
.ce-selo-feito {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: rgba(40, 122, 61, .95);
    color: #fff;
    font-size: .68rem;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 30px;
}

/* --- Janela flutuante do evento (aberta ao clicar no card) ---
   A arte story aparece inteira sobre um fundo escuro, ao lado das
   informações. Segue o mesmo esqueleto do modal de campanha. */
.ev-janela {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 9998;
    background: rgba(0, 0, 0, .58);
    align-items: center;
    justify-content: center;
    padding: 20px;
}
.ev-janela.aberta { display: flex; }
.ev-janela-caixa {
    position: relative;
    display: flex;
    background: #fff;
    border-radius: 20px;
    overflow: hidden;
    width: 100%;
    max-width: 720px;
    max-height: 90vh;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .3);
}
.ev-janela-arte {
    width: 44%;
    flex-shrink: 0;
    background: #201a1d;
    display: flex;
    align-items: center;
    justify-content: center;
}
.ev-janela-arte img { width: 100%; height: 100%; object-fit: contain; }
.ev-janela-corpo {
    flex: 1 1 auto;
    min-width: 0;
    padding: 24px 26px;
    overflow-y: auto;
}
.ev-janela-fechar {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 3;
    width: 34px;
    height: 34px;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, .92);
    color: var(--st-texto);
    font-size: .95rem;
    cursor: pointer;
}
.ev-janela-fechar:hover { background: #fff; }
.ev-janela-nome {
    margin: 10px 0 14px;
    color: var(--st-texto);
    font-size: 1.4rem;
    font-weight: 800;
    line-height: 1.25;
}
.ev-janela-linha {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    margin-bottom: 9px;
    color: var(--st-texto-medio);
    font-size: .92rem;
    line-height: 1.5;
}
.ev-janela-linha i { color: var(--st-rosa); margin-top: 3px; width: 16px; text-align: center; }
.ev-janela-texto {
    margin: 14px 0 0;
    padding-top: 14px;
    border-top: 1px solid var(--st-linha);
    color: var(--st-texto-medio);
    font-size: .92rem;
    line-height: 1.65;
    white-space: pre-line;
}
@media (max-width: 575px) {
    .ev-janela-caixa { flex-direction: column; max-height: 92vh; overflow-y: auto; }
    .ev-janela-arte { width: 100%; max-height: 45vh; }
}

/* --- Nenhum evento marcado --- */
.ce-aviso {
    background: #fff;
    border-radius: 18px;
    padding: 26px 24px;
    text-align: center;
    box-shadow: 0 4px 20px rgba(0, 0, 0, .06);
}
.ce-aviso i { font-size: 2rem; color: var(--st-rosa); opacity: .35; }
.ce-aviso h4 {
    margin: 12px 0 5px;
    color: var(--st-texto);
    font-size: 1.05rem;
    font-weight: 800;
}
.ce-aviso p { margin: 0; color: var(--st-texto-fraco); font-size: .88rem; }

.ce-passado {
    display: block;
    color: var(--st-texto-fraco);
    font-size: .74rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .6px;
    margin: 22px 0 10px;
}

@media (max-width: 400px) {
    /* Numa tela muito estreita a arte ao lado espreme o texto */
    .ce-card { flex-direction: column; }
    .ce-arte { width: 100%; max-width: none; height: 260px; }
}

/* ---------------------------------------------------------
   CARD DE PARCEIRO
   Empresas que repassam parte da compra para a ONG. O cupom é
   o coração do card — por isso vem destacado e copiável.
   --------------------------------------------------------- */
.cpa-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #fff;
    border-radius: 18px;
    padding: 24px 22px;
    text-align: center;
    box-shadow: 0 4px 20px rgba(0, 0, 0, .06);
    transition: transform .3s ease, box-shadow .3s ease;
}
.cpa-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 16px 40px rgba(227, 21, 111, .12);
}
.cpa-logo {
    height: 64px;
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.cpa-logo img { max-height: 64px; max-width: 100%; object-fit: contain; border-radius: 10px; }
.cpa-nome {
    margin: 0 0 8px;
    color: var(--st-texto);
    font-size: 1.12rem;
    font-weight: 800;
}
.cpa-texto {
    margin: 0 0 16px;
    color: var(--st-texto-medio);
    font-size: .88rem;
    line-height: 1.55;
    flex: 1 1 auto;
}

/* Cupom: tracejado como um vale-desconto de verdade */
.cpa-cupom {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    background: #fdf2f7;
    border: 2px dashed var(--st-rosa);
    border-radius: 12px;
    padding: 11px 14px;
    margin-bottom: 12px;
}
.cpa-cupom code {
    color: var(--st-rosa);
    font-size: 1.02rem;
    font-weight: 800;
    letter-spacing: 1px;
    background: none;
    padding: 0;
}
.cpa-copiar {
    border: none;
    background: none;
    color: var(--st-texto-fraco);
    cursor: pointer;
    padding: 2px 4px;
    transition: color .18s ease;
}
.cpa-copiar:hover { color: var(--st-rosa); }
.cpa-copiado {
    display: block;
    margin: -6px 0 10px;
    color: #1c7a3d;
    font-size: .8rem;
    font-weight: 700;
}

/* Tarja para parceiros SEM cupom (o valor já é revertido na compra).
   Ocupa o mesmo espaço da caixa de cupom, mantendo os cards alinhados. */
.cpa-selo {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    background: #fdf2f7;
    border: 1px solid #f6d5e6;
    border-radius: 12px;
    padding: 11px 14px;
    margin-bottom: 12px;
    color: var(--st-texto-medio);
    font-size: .82rem;
    line-height: 1.4;
    text-align: left;
}
.cpa-selo i { color: var(--st-rosa); flex-shrink: 0; }

/* ---------------------------------------------------------
   MODO "EM BREVE" (pagamentos desligados)
   Enquanto a Stripe não está configurada, os botões de doação
   e apadrinhamento viram este selo desabilitado, e as sections
   que dependem de pagamento dão lugar a um aviso amigável.
   --------------------------------------------------------- */

/* Botão desabilitado: reaproveita o tamanho/forma da classe original
   do botão (cp-btn, ad-btn, hero-btn...) e só troca a aparência. */
.btn-embreve,
.btn-embreve:hover {
    background: #ecebee !important;
    background-image: none !important;
    color: #8a8790 !important;
    border-color: #e2e0e4 !important;
    box-shadow: none !important;
    cursor: not-allowed !important;
    pointer-events: none;
    transform: none !important;
    text-decoration: none !important;
}
.btn-embreve i { margin-right: 5px; opacity: .85; }

/* Aviso grande — substitui as sections de doação na página "Faça uma Doação". */
.embreve-aviso {
    max-width: 620px;
    margin: 0 auto;
    text-align: center;
    background: #fff;
    border: 1px solid #f3d9e7;
    border-radius: 18px;
    padding: 36px 28px;
    box-shadow: 0 8px 30px rgba(227, 21, 111, .07);
}
.embreve-aviso .embreve-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 62px;
    height: 62px;
    border-radius: 50%;
    background: #fdf2f7;
    color: var(--st-rosa);
    font-size: 1.5rem;
    margin-bottom: 16px;
}
.embreve-aviso h2 {
    font-weight: 800;
    color: #333;
    font-size: 1.6rem;
    margin: 0 0 10px;
}
.embreve-aviso p {
    color: var(--st-texto-medio);
    font-size: .98rem;
    line-height: 1.6;
    margin: 0;
}

/* Faixa compacta — aviso no topo da listagem de apadrinhamento. */
.embreve-faixa {
    display: flex;
    align-items: center;
    gap: 12px;
    max-width: 760px;
    margin: 0 auto 26px;
    background: #fdf2f7;
    border: 1px solid #f6d5e6;
    border-radius: 14px;
    padding: 14px 18px;
    color: var(--st-texto-medio);
    font-size: .92rem;
    line-height: 1.5;
}
.embreve-faixa i { color: var(--st-rosa); font-size: 1.15rem; flex-shrink: 0; }

.cpa-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 10px 20px;
    border: 2px solid #eceaee;
    border-radius: 30px;
    color: var(--st-texto-medio);
    font-size: .88rem;
    font-weight: 700;
    text-decoration: none;
    transition: all .18s ease;
}
.cpa-link:hover {
    border-color: var(--st-rosa);
    color: var(--st-rosa);
    text-decoration: none;
}

/* ---------------------------------------------------------
   FAIXA ROLANTE DE PARCEIROS
   Os cards passam de lado devagar, como um letreiro de
   propaganda. Pausa no hover (e no foco pelo teclado) para dar
   tempo de copiar o cupom. A duplicação dos cards e a duração
   (velocidade) são calculadas no JS, conforme a quantidade de
   parceiros e a largura da tela.
   --------------------------------------------------------- */
.cpa-marquee {
    --cpa-gap: 24px;
    position: relative;
    overflow: hidden;
    padding: 24px 0;
    /* esmaece as bordas para o card "entrar" e "sair" com suavidade */
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
            mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}
.cpa-track {
    display: flex;
    width: max-content;
    animation: cpa-rolar var(--cpa-dur, 40s) linear infinite;
    will-change: transform;
}
.cpa-marquee:hover .cpa-track,
.cpa-marquee:focus-within .cpa-track {
    animation-play-state: paused;
}
.cpa-grupo {
    display: flex;
    gap: var(--cpa-gap);
    /* espaço após o último card, para o intervalo entre um grupo e o
       próximo ser igual ao intervalo entre os cards — rolagem sem "pulo" */
    padding-right: var(--cpa-gap);
    align-items: stretch;
}
.cpa-marquee .cpa-card {
    flex: 0 0 300px;
    width: 300px;
}
@keyframes cpa-rolar {
    from { transform: translateX(0); }
    to   { transform: translateX(calc(-1 * var(--cpa-desloc, 0px))); }
}
@media (max-width: 767px) {
    .cpa-marquee .cpa-card { flex-basis: 80vw; width: 80vw; max-width: 320px; }
}
/* Quem prefere menos movimento vê a faixa parada e rolável na mão */
@media (prefers-reduced-motion: reduce) {
    .cpa-marquee { overflow-x: auto; }
    .cpa-track { animation: none; width: auto; }
}

/* ---------------------------------------------------------
   FORMULÁRIO EXTERNO EMBUTIDO (Google Forms)
   O iframe é de outro domínio, então não dá para ele se
   ajustar sozinho à altura do conteúdo — a altura é fixa e a
   rolagem acontece dentro dele. Como o nosso questionário é
   paginado, cada etapa é curta e isso quase não aparece.
   --------------------------------------------------------- */
.st-form-embed {
    background: #fff;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .07);
}
.st-form-embed iframe {
    display: block;
    width: 100%;
    height: 900px;
    border: 0;
}
.st-form-escape {
    display: block;
    margin-top: 14px;
    text-align: center;
    color: var(--st-texto-fraco);
    font-size: .9rem;
}
.st-form-escape a { color: var(--st-rosa); font-weight: 700; text-decoration: none; }
.st-form-escape a:hover { text-decoration: underline; }

@media (max-width: 767px) {
    /* No celular a altura acompanha a tela: sobra menos moldura
       em volta e a rolagem interna fica mais curta. */
    .st-form-embed iframe { height: 78vh; min-height: 560px; }
}

/* ---------------------------------------------------------
   PAGINAÇÃO DO SITE
   --------------------------------------------------------- */
.st-paginacao {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px;
    margin-top: 40px;
}
.st-paginacao a,
.st-paginacao span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: 0 12px;
    background: #fff;
    border: 1.5px solid #eceaee;
    border-radius: 10px;
    color: var(--st-texto-medio);
    font-size: .9rem;
    font-weight: 700;
    text-decoration: none;
    transition: all .18s ease;
}
.st-paginacao a:hover {
    border-color: var(--st-rosa);
    color: var(--st-rosa);
    text-decoration: none;
}
.st-paginacao .atual {
    background: var(--st-rosa);
    border-color: var(--st-rosa);
    color: #fff;
}

/* ---------------------------------------------------------
   ESTADO VAZIO
   --------------------------------------------------------- */
.st-vazio {
    background: #fff;
    border-radius: 18px;
    padding: 48px 30px;
    text-align: center;
    box-shadow: 0 4px 20px rgba(0, 0, 0, .06);
}
.st-vazio i { font-size: 2.6rem; color: #dcd8dd; margin-bottom: 14px; }
.st-vazio h3 { color: var(--st-texto); font-size: 1.2rem; font-weight: 800; margin: 0 0 6px; }
.st-vazio p { color: var(--st-texto-fraco); margin: 0 0 18px; }

/* ---------------------------------------------------------
   RESPONSIVO
   --------------------------------------------------------- */
@media (max-width: 1199px) {
    .cp-foto { height: 230px; }
    .cp-nome { font-size: 1.32rem; }
}
@media (max-width: 575px) {
    .cp-foto { height: 260px; }
    /* No celular o card ocupa a largura toda: os dois CTAs
       empilhados ficam mais fáceis de acertar com o polegar. */
    .cp-acoes { flex-direction: column; }
    .cc-foto { height: 190px; }
    .cc-titulo { font-size: 1.2rem; }
    .cb-foto { height: 190px; }
}

/* ---------------------------------------------------------
   POP-UP DE ADOÇÃO  (.pa-*)

   Aparece ao clicar em "Quero adotar" na ficha do animal. O
   objetivo é ordenar o fluxo: hoje a pessoa cai no WhatsApp
   sem saber que existe um questionário, e alguém precisa
   gastar mensagens explicando o processo.

   Feito em JS puro, de propósito. O site carrega o
   bootstrap.min.js com `defer` e não tinha nenhum modal até
   agora — depender da ordem de carga do Bootstrap + jQuery
   para o botão mais importante do site seria trocar um
   problema conhecido por um intermitente.

   z-index acima do header (900), como os modais do painel.
   --------------------------------------------------------- */
.pa-overlay {
    position: fixed;
    inset: 0;
    z-index: 9998;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(23, 18, 21, .55);
    /* Sem backdrop-filter: em celular antigo ele custa caro e
       o modal entra engasgando. */
}

.pa-overlay[data-aberto="1"] {
    display: flex;
    animation: pa-fade .18s ease;
}

@keyframes pa-fade {
    from { opacity: 0; }
    to   { opacity: 1; }
}

.pa-caixa {
    position: relative;
    width: 100%;
    max-width: 440px;
    max-height: calc(100vh - 40px);
    overflow-y: auto;
    background: #fff;
    border-radius: 18px;
    padding: 30px 28px 26px;
    box-shadow: 0 20px 60px rgba(23, 18, 21, .3);
    animation: pa-sobe .22s ease;
}

@keyframes pa-sobe {
    from { transform: translateY(14px); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
}

.pa-fechar {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--st-texto-fraco);
    font-size: 1.1rem;
    cursor: pointer;
    transition: background .15s ease, color .15s ease;
}

.pa-fechar:hover { background: #f2f0f3; color: var(--st-texto); }

.pa-titulo {
    margin: 0 0 10px;
    padding-right: 30px;   /* não passa por baixo do X */
    font-size: 1.42rem;
    font-weight: 800;
    color: var(--st-texto);
    line-height: 1.25;
}

.pa-texto {
    margin: 0 0 22px;
    font-size: .95rem;
    line-height: 1.6;
    color: var(--st-texto-medio);
}

.pa-opcoes {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.pa-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 50px;
    padding: 13px 18px;
    border-radius: 50px;
    font-size: 1rem;
    font-weight: 700;
    text-align: center;
    text-decoration: none;
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}

.pa-btn:hover,
.pa-btn:focus {
    text-decoration: none;
    transform: translateY(-2px);
}

/* Caminho principal: ainda não preencheu */
.pa-btn-form {
    background: var(--st-rosa);
    color: #fff;
    box-shadow: 0 6px 18px rgba(227, 21, 111, .28);
}

.pa-btn-form:hover,
.pa-btn-form:focus {
    color: #fff;
    box-shadow: 0 10px 24px rgba(227, 21, 111, .36);
}

/* Atalho: já preencheu e quer falar agora */
.pa-btn-zap {
    background: #15803d;
    color: #fff;
    box-shadow: 0 6px 18px rgba(21, 128, 61, .24);
}

.pa-btn-zap:hover,
.pa-btn-zap:focus {
    color: #fff;
    box-shadow: 0 10px 24px rgba(21, 128, 61, .32);
}

/* O rodapé é o que faz os dois caminhos conviverem: diz qual é
   a promessa padrão (a gente entra em contato) e deixa o zap
   como atalho, não como obrigação. */
.pa-rodape {
    margin: 18px 0 0;
    font-size: .82rem;
    line-height: 1.55;
    color: var(--st-texto-fraco);
    text-align: center;
}

/* Trava a rolagem do fundo enquanto o pop-up está aberto */
body.pa-travado { overflow: hidden; }

@media (max-width: 480px) {
    .pa-caixa { padding: 26px 20px 22px; border-radius: 16px; }
    .pa-titulo { font-size: 1.28rem; }
    .pa-texto { font-size: .9rem; margin-bottom: 18px; }
    .pa-btn { font-size: .95rem; min-height: 48px; }
}


/* ---------------------------------------------------------
   TARJA "VOCÊ VEIO PELO ANIMAL X"  (.pa-tarja)

   Aparece no /sobre quando a pessoa chega com ?animal=ID.
   É instrução para humano, não vínculo de dado: o questionário
   ainda é o do Google e não tem como receber o animal. Quando o
   formulário passar a ser interno, esta tarja sai e o vínculo
   vira automático.
   --------------------------------------------------------- */
.pa-tarja {
    display: flex;
    align-items: center;
    gap: 14px;
    max-width: 700px;
    margin: 0 auto 22px;
    padding: 14px 18px;
    border: 1px solid #ffd7e6;
    border-left: 4px solid var(--st-rosa);
    border-radius: 12px;
    background: #fff5f9;
}

.pa-tarja-foto {
    width: 46px;
    height: 46px;
    flex-shrink: 0;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #fff;
    box-shadow: 0 2px 8px rgba(23, 18, 21, .12);
}

.pa-tarja-txt {
    margin: 0;
    font-size: .9rem;
    line-height: 1.5;
    color: var(--st-texto-medio);
    text-align: left;
}

.pa-tarja-txt strong { color: var(--st-rosa); }

@media (max-width: 480px) {
    .pa-tarja { padding: 12px 14px; gap: 11px; }
    .pa-tarja-foto { width: 40px; height: 40px; }
    .pa-tarja-txt { font-size: .84rem; }
}

/* ---------------------------------------------------------
   BOTÃO "VER TODOS OS ANIMAIS"  (.btn-ver-animais)

   Fica na mesma linha do título da seção de adoção, à direita.
   Cor rosa-bebê #fdf2f7, a mesma do header quando fixa no topo,
   para manter a família visual. No hover fica um tom mais forte.
   --------------------------------------------------------- */
.btn-ver-animais {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    padding: 12px 24px;
    border-radius: 50px;
    background: #fdf2f7;
    color: var(--st-rosa);
    font-weight: 700;
    font-size: .96rem;
    text-decoration: none;
    border: 1px solid #fbe0ec;
    box-shadow: 0 1px 4px rgba(227, 21, 111, .06);
    transition: background .2s ease, box-shadow .2s ease, transform .2s ease;
}

.btn-ver-animais:hover,
.btn-ver-animais:focus {
    background: #fce1ee;
    color: var(--st-rosa);
    text-decoration: none;
    box-shadow: 0 6px 16px rgba(227, 21, 111, .14);
    transform: translateY(-2px);
}

.btn-ver-animais i { transition: transform .2s ease; }
.btn-ver-animais:hover i { transform: translateX(3px); }

/* No celular a seção empilha: o botão vira largura cheia e centrado,
   abaixo do título, em vez de disputar a linha. */
@media (max-width: 991px) {
    .btn-ver-animais {
        width: 100%;
        justify-content: center;
    }
}

/* ---------------------------------------------------------
   FAIXA CURTA DE DOAÇÃO  (.cta-doar)

   Bloco compacto antes do rodapé. Fundo rosa da marca com um
   degradê suave; conteúdo numa "caixa" para não encostar nas
   bordas em telas largas. Texto à esquerda, botão à direita.
   --------------------------------------------------------- */
.cta-doar {
    padding: 34px 0;
}

.cta-doar-caixa {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 20px;
    padding: 30px 36px;
    border-radius: 20px;
    background: linear-gradient(120deg, #e3156f 0%, #c91060 100%);
    box-shadow: 0 14px 34px rgba(227, 21, 111, .22);
}

.cta-doar-texto { flex: 1 1 320px; }

.cta-doar-selo {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 8px;
    padding: 4px 12px;
    border-radius: 50px;
    background: rgba(255, 255, 255, .18);
    color: #fff;
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
}

.cta-doar-titulo {
    margin: 0 0 6px;
    color: #fff;
    font-size: 1.6rem;
    font-weight: 800;
    line-height: 1.25;
}

.cta-doar-sub {
    margin: 0;
    color: rgba(255, 255, 255, .9);
    font-size: 1rem;
    line-height: 1.5;
}

.cta-doar-btn {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    padding: 14px 30px;
    border-radius: 50px;
    background: #fff;
    color: var(--st-rosa);
    font-weight: 800;
    font-size: 1.02rem;
    text-decoration: none;
    box-shadow: 0 6px 16px rgba(23, 18, 21, .16);
    transition: transform .2s ease, box-shadow .2s ease;
}

.cta-doar-btn:hover,
.cta-doar-btn:focus {
    color: var(--st-rosa);
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(23, 18, 21, .22);
}

@media (max-width: 767px) {
    .cta-doar { padding: 26px 0; }
    .cta-doar-caixa {
        padding: 26px 22px;
        text-align: center;
        justify-content: center;
    }
    .cta-doar-texto { flex-basis: 100%; }
    .cta-doar-selo { margin-left: auto; margin-right: auto; }
    .cta-doar-titulo { font-size: 1.34rem; }
    .cta-doar-btn { width: 100%; justify-content: center; }
}

/* ---------------------------------------------------------
   SOBRE NÓS — GRADE 2x2  (.sobre-*)

   Os 4 parágrafos institucionais dispostos em duas colunas no
   desktop e uma no celular. Substitui o layout antigo de texto
   à esquerda + foto à direita: a foto saiu (no mobile já não
   aparecia bem) e o texto ganhou respiro.
   --------------------------------------------------------- */
.sobre-titulo { margin-bottom: 26px; }

.sobre-paw {
    color: var(--st-rosa);
    font-size: 20px;
    display: block;
    margin: 6px 0 18px;
}

.sobre-grade {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px 44px;
}

.sobre-paragrafo {
    margin: 0;
    /* Herda tipografia/cor do tema; só garante uma boa medida
       de leitura e ritmo entre linhas. */
    line-height: 1.8;
}

/* Botão "Ler mais": só existe no recolhimento mobile. Escondido
   por padrão (inclusive no desktop, onde os 4 parágrafos ficam
   sempre à mostra). */
.sobre-ver-mais { display: none; }

@media (max-width: 767px) {
    .sobre-grade {
        grid-template-columns: 1fr;
        gap: 16px;
    }

    /* Recolhimento: a partir do 3º parágrafo some, até a pessoa
       expandir. Só vale quando o JS marcou data-colapsavel — sem
       JS, nada é escondido. */
    .sobre-grade[data-colapsavel="1"] .sobre-paragrafo:nth-child(n+3) {
        display: none;
    }
    .sobre-grade[data-colapsavel="1"][data-expandido="1"] .sobre-paragrafo:nth-child(n+3) {
        display: block;
    }

    /* O botão aparece só quando há o que recolher (grade colapsável) */
    .sobre-grade[data-colapsavel="1"] ~ .sobre-ver-mais {
        display: flex;
        align-items: center;
        gap: 8px;
        margin: 16px auto 0;
        padding: 10px 20px;
        border: 1px solid #fbe0ec;
        border-radius: 50px;
        background: #fdf2f7;
        color: var(--st-rosa);
        font-family: inherit;
        font-size: .9rem;
        font-weight: 700;
        cursor: pointer;
    }

    .sobre-ver-mais i { transition: transform .25s ease; }
    .sobre-ver-mais[aria-expanded="true"] i { transform: rotate(180deg); }
}


/* ---------------------------------------------------------
   KPIs DA HOME — FAIXA ROSA  (.counter-area / .kpi-home)

   Substitui os estilos inline que estavam repetidos em cada
   número. As classes .counter-area e .counter-numero são
   mantidas porque o JS de animação depende delas.

   Layout em flex com quebra centralizada: no desktop os 5
   ficam lado a lado; no celular caem para 3 + 2 centralizados
   (em vez de 5 linhas altas), o que resolve a "quebra" feia.
   --------------------------------------------------------- */
.counter-area {
    background-color: var(--st-rosa);
    color: #fff;
    padding-top: 38px;
    padding-bottom: 32px;
}

.kpi-home {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: flex-start;
    gap: 26px 16px;
}

.kpi-home-item {
    flex: 1 1 150px;
    max-width: 210px;
    text-align: center;
}

.kpi-home-icone {
    font-size: 2rem;
    opacity: .82;
    margin-bottom: 8px;
}

.kpi-home-num {
    font-size: 2.6rem;
    font-weight: 800;
    line-height: 1.1;
    color: #fff;
}

.kpi-home-num small {
    font-size: 1.5rem;
    font-weight: 800;
}

/* Branco explícito: o tema tem um `p { color: #67696f }` global que,
   por ser regra direta no elemento, vencia o branco herdado da seção. */
.kpi-home-label {
    margin: 6px 0 0;
    font-size: .9rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #fff;
}

/* Tablet: os 5 ainda cabem, mas encolhem um pouco */
@media (max-width: 991px) {
    .kpi-home-num { font-size: 2.3rem; }
    .kpi-home-icone { font-size: 1.8rem; }
}

/* Celular: 3 em cima, 2 embaixo (centralizados). Tudo menor
   e mais junto, para a faixa não virar uma coluna comprida. */
@media (max-width: 767px) {
    .kpi-home { gap: 20px 10px; }
    .kpi-home-item { flex: 0 0 28%; max-width: none; }
    .kpi-home-icone { font-size: 1.4rem; margin-bottom: 5px; }
    .kpi-home-num { font-size: 1.8rem; }
    .kpi-home-num small { font-size: 1.05rem; }
    .kpi-home-label { font-size: .68rem; letter-spacing: .4px; margin-top: 4px; }
}

/* Telas bem estreitas: 2 por linha, para o texto do rótulo
   não espremer demais. */
@media (max-width: 400px) {
    .kpi-home-item { flex: 0 0 42%; }
    .kpi-home-num { font-size: 1.7rem; }
}

/* ---------------------------------------------------------
   VITRINE DA HOME — CARROSSEL NO MOBILE  (.cp-vitrine-mobile)

   No desktop é a linha (row) normal com os cards lado a lado.
   No celular vira um trilho horizontal de deslizar, com encaixe
   (scroll-snap): um card grande por vez e uma espiada no próximo,
   que sinaliza "tem mais, arraste". CSS puro, sem biblioteca.
   --------------------------------------------------------- */
@media (max-width: 767px) {
    .cp-vitrine-mobile {
        display: flex;
        flex-wrap: nowrap;
        justify-content: flex-start !important; /* vence o .justify-content-center do Bootstrap */
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        gap: 14px;
        /* Sangra até as bordas da tela para o card espiar no limite */
        margin-left: -15px;
        margin-right: -15px;
        padding: 4px 15px 14px;
        /* Esconde a barra de rolagem (o gesto é o protagonista) */
        scrollbar-width: none;
    }
    .cp-vitrine-mobile::-webkit-scrollbar { display: none; }

    /* Cada card do trilho: largura fixa em % da tela, encaixe no
       início e sem a margem inferior que empilhava no layout antigo. */
    .cp-vitrine-mobile > [class*="col-"] {
        flex: 0 0 80%;
        max-width: 80%;
        scroll-snap-align: start;
        margin-bottom: 0 !important;
    }

    /* O aviso de "todos adotados" não deve virar um card estreito:
       ocupa o trilho inteiro se aparecer. */
    .cp-vitrine-mobile > .col-12 {
        flex-basis: 100%;
        max-width: 100%;
        scroll-snap-align: none;
    }
}

/* ---------------------------------------------------------
   PASSOS DA ADOÇÃO  (.passo-*)   — página /sobre

   Cartões numerados de "como adotar". Substituem os antigos
   step-card com estilo inline. Layout fica no Bootstrap (colunas);
   o visual (cartão branco, topo rosa, círculo do ícone) vem daqui.
   O 1º cartão tem botão para a vitrine; o margin-top: auto no botão
   mantém o rodapé dos três cartões alinhado mesmo com textos de
   alturas diferentes.
   --------------------------------------------------------- */
.passo-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    height: 100%;
    padding: 32px 24px;
    text-align: center;
    background: #fff;
    border-radius: 14px;
    border-top: 4px solid var(--st-rosa);
    box-shadow: 0 4px 16px rgba(23, 18, 21, .07);
}

.passo-icone {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 70px;
    height: 70px;
    margin-bottom: 16px;
    border-radius: 50%;
    background: #ffe6f0;
    color: var(--st-rosa);
    font-size: 26px;
}

.passo-titulo {
    margin: 0 0 10px;
    font-size: 1.35rem;
    font-weight: 800;
    color: var(--st-texto);
}

.passo-texto {
    margin: 0;
    color: var(--st-texto-medio);
    line-height: 1.65;
}

/* Botão preenchido do 1º passo. margin-top: auto empurra para o
   rodapé, alinhando o fim dos três cartões mesmo sem botão nos outros. */
.passo-btn {
    display: inline-flex;
    align-items: center;
    align-self: center;
    margin-top: auto;
    padding: 11px 24px;
    border-radius: 50px;
    background: var(--st-rosa);
    color: #fff;
    font-weight: 700;
    font-size: .95rem;
    text-decoration: none;
    box-shadow: 0 6px 16px rgba(227, 21, 111, .22);
    transition: transform .2s ease, box-shadow .2s ease;
}

.passo-btn:hover,
.passo-btn:focus {
    color: #fff;
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(227, 21, 111, .3);
}

/* ---------------------------------------------------------
   BOTÕES DO HERO / CARROSSEL DA HOME  (.hero-btn)

   Três variações padronizadas, um pouco menores que os antigos
   (padding e fonte reduzidos), sem ícones:
     • rosa   → fundo rosa, texto branco        (Quero adotar)
     • branco → fundo branco, texto rosa        (Ver animais)
     • mix    → fundo rosa + borda branca       (Quero ajudar)

   Uso o rosa da marca (#e3156f), não o rosa-claro do sistema
   (#ffcfe0): com texto branco por cima, o claro não teria
   contraste suficiente para leitura.
   --------------------------------------------------------- */
.hero-btn {
    display: inline-block;
    padding: 11px 30px;
    border: 2px solid transparent;
    border-radius: 50px;
    font-size: 1rem;
    font-weight: 700;
    text-decoration: none;
    transition: transform .2s ease, box-shadow .2s ease, background .2s ease, color .2s ease;
}
.hero-btn:hover,
.hero-btn:focus {
    transform: translateY(-2px);
    text-decoration: none;
}

.hero-btn-rosa {
    background: var(--st-rosa);
    color: #fff;
    border-color: var(--st-rosa);
    box-shadow: 0 5px 15px rgba(227, 21, 111, .3);
}
.hero-btn-rosa:hover,
.hero-btn-rosa:focus {
    color: #fff;
    box-shadow: 0 9px 22px rgba(227, 21, 111, .4);
}

.hero-btn-branco {
    background: #fff;
    color: var(--st-rosa);
    border-color: #fff;
    box-shadow: 0 5px 15px rgba(0, 0, 0, .18);
}
.hero-btn-branco:hover,
.hero-btn-branco:focus {
    color: var(--st-rosa);
    box-shadow: 0 9px 22px rgba(0, 0, 0, .25);
}

/* Mix: preenchimento rosa do primeiro + borda branca do segundo */
.hero-btn-mix {
    background: var(--st-rosa);
    color: #fff;
    border-color: #fff;
    box-shadow: 0 5px 15px rgba(227, 21, 111, .3);
}
.hero-btn-mix:hover,
.hero-btn-mix:focus {
    color: #fff;
    box-shadow: 0 9px 22px rgba(227, 21, 111, .4);
}

@media (max-width: 767px) {
    .hero-btn { padding: 10px 26px; font-size: .94rem; }
}

/* ---------------------------------------------------------
   PÁGINA DO POST (blog-detalhe)  (.blog-*)

   Refatoração para coluna única: sem sidebar, capa em banner
   horizontal, navegação de volta clara e uma faixa levando o
   leitor para a vitrine de animais.
   --------------------------------------------------------- */

/* Capa em faixa panorâmica fina. Usa aspect-ratio (não altura fixa):
   a imagem acompanha a largura da coluna, nunca estoura e — o mais
   importante — reserva o espaço ANTES de carregar, matando o pulo de
   layout (CLS) que o PageSpeed penaliza. object-fit centraliza o
   enquadramento para qualquer proporção enviada no painel. */
.blog-capa-banner {
    width: 100%;
    aspect-ratio: 2.4 / 1;
    overflow: hidden;
    background: #f2f0f3; /* placeholder enquanto a imagem chega */
}
.blog-capa-banner picture,
.blog-capa-banner img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* No celular a coluna é estreita; um pouco mais alta que 2.4:1 evita
   uma tarja fina demais, sem voltar a ser um bloção. */
@media (max-width: 767px) {
    .blog-capa-banner { aspect-ratio: 16 / 9; }
}

/* Faixa "conheça os animais" ao fim do post. Compacta de propósito.
   Fluxo em duas linhas: pergunta + botão principal em cima; abaixo,
   separado por um filete, quem não pode adotar agora com mini-botões. */
.blog-cta {
    margin-top: 26px;
    padding: 20px 24px;
    border-radius: 16px;
    background: linear-gradient(120deg, #e3156f 0%, #c91060 100%);
    box-shadow: 0 10px 26px rgba(227, 21, 111, .2);
}

/* Linha de cima: pergunta à esquerda, botão principal à direita */
.blog-cta-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px 20px;
}

.blog-cta-topo h3 {
    flex: 1 1 260px;
    margin: 0;
    color: #fff;
    font-size: 1.16rem;
    font-weight: 800;
    line-height: 1.25;
}

.blog-cta-btn {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    padding: 11px 24px;
    border-radius: 50px;
    background: #fff;
    color: var(--st-rosa);
    font-weight: 800;
    font-size: .94rem;
    text-decoration: none;
    box-shadow: 0 6px 16px rgba(23, 18, 21, .16);
    transition: transform .2s ease, box-shadow .2s ease;
}
.blog-cta-btn:hover,
.blog-cta-btn:focus {
    color: var(--st-rosa);
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(23, 18, 21, .22);
}

/* Linha de baixo: texto + mini-botões, com filete separando de cima */
.blog-cta-secundario {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 14px;
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid rgba(255, 255, 255, .25);
}

.blog-cta-secundario > span {
    color: rgba(255, 255, 255, .92);
    font-size: .9rem;
    font-weight: 600;
}

.blog-cta-minis { display: flex; flex-wrap: wrap; gap: 8px; }

/* Mini-botões: pílulas de contorno branco. Ficam claramente
   clicáveis, mas secundários ao botão branco preenchido de cima. */
.blog-cta-mini {
    display: inline-flex;
    align-items: center;
    padding: 6px 16px;
    border: 1.5px solid rgba(255, 255, 255, .8);
    border-radius: 50px;
    background: rgba(255, 255, 255, .1);
    color: #fff;
    font-size: .84rem;
    font-weight: 700;
    text-decoration: none;
    transition: background .2s ease, color .2s ease, transform .2s ease;
}
.blog-cta-mini:hover,
.blog-cta-mini:focus {
    background: #fff;
    color: var(--st-rosa);
    text-decoration: none;
    transform: translateY(-1px);
}

@media (max-width: 767px) {
    .blog-cta { padding: 18px 18px; }
    .blog-cta-topo { justify-content: center; text-align: center; }
    .blog-cta-topo h3 { flex-basis: 100%; font-size: 1.08rem; }
    .blog-cta-btn { width: 100%; justify-content: center; }
    .blog-cta-secundario { justify-content: center; text-align: center; }
    .blog-cta-secundario > span { flex-basis: 100%; }
    .blog-cta-minis { width: 100%; justify-content: center; }
}

/* ---------------------------------------------------------
   FICHA DO ANIMAL — SELO "VACINADOS E VERMIFUGADOS"
   Aparece nas páginas de animais (ficha, vitrine, apadrinhe).
   O texto fica dentro de um <span> para o gap do flex não
   inserir espaço extra entre as palavras e o <strong>.
   --------------------------------------------------------- */
/* Selo "vacinados e vermifugados" como última linha DENTRO do quadro
   de dados, logo abaixo dos exames, separado por um filete claro. */
.pet-garantia {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid #eee;
    color: #2f7d46;
    font-size: .9rem;
    line-height: 1.4;
}
.pet-garantia i { color: #34a853; font-size: 1.02rem; flex-shrink: 0; }
.pet-garantia strong { color: #226b38; }

/* Título de seção da ficha em formato de tag (estilo botão): texto
   escuro sobre rosa clarinho. Usado no "Minha história". */
.ad-titulo-tag {
    display: inline-block;
    margin-bottom: 15px;
    padding: 7px 20px;
    border-radius: 50px;
    background: #ffe6f0;
    color: #2b2b2b;
    font-size: 1.05rem;
    font-weight: 700;
}

/* ---------------------------------------------------------
   COMPARTILHAR NA FICHA DO ANIMAL  (.ad-compartilhar / .ad-share)

   Fica abaixo dos botões de ação. WhatsApp é link direto (wa.me);
   o botão Instagram dispara a bandeja nativa (Web Share) no
   celular — que inclui Instagram/Stories/Direct — e copia o link
   no desktop.
   --------------------------------------------------------- */
.ad-compartilhar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 18px;
}

.ad-compartilhar-label {
    color: var(--st-texto-medio);
    font-weight: 700;
    font-size: .95rem;
}
.ad-compartilhar-label i { color: var(--st-rosa); margin-right: 4px; }

.ad-share {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: none;
    border-radius: 50%;
    color: #fff;
    font-size: 1.2rem;
    cursor: pointer;
    text-decoration: none;
    transition: transform .2s ease, box-shadow .2s ease;
}
.ad-share:hover,
.ad-share:focus {
    color: #fff;
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(23, 18, 21, .18);
}

.ad-share-wa { background: #25D366; }
.ad-share-ig { background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fd5949 45%, #d6249f 60%, #285AEB 90%); }

.ad-share-aviso {
    font-size: .85rem;
    font-weight: 700;
    color: #15803d;
    opacity: 0;
    transition: opacity .2s ease;
}
.ad-share-aviso.show { opacity: 1; }
