/* ==========================================================================
   index.css - CSS da home (replica fiel do layout fatiado Layout1/fatiado)

   Regras GERAIS (fontes, base, topo, rodape) estao no css.css. Aqui ficam
   so as secoes da home -- banner, Conheca, Especialidades, Destaques,
   Vitrine, Ventura Connect, Depoimentos e Newsletter -- e o responsivo delas.

   Layout de DESKTOP com medidas FIXAS em pixel, tiradas do render real do
   fatiado a 1920px de largura (getBoundingClientRect), nao dos atributos
   height= das tabelas -- que sao apenas alturas minimas.

   . Container de 1170px centralizado.
   . A secao "Conheca" e ancorada a ESQUERDA (818 + 80 + 646 = 1544px),
     exatamente como a tabela width=100% do fatiado.
   . Abaixo de 1920 e acima de 1920 valem as media queries do bloco
     RESPONSIVO, no fim deste arquivo. A 1920px exatos nenhuma delas se
     aplica: a base continua pixel-identica ao fatiado.

   Alturas de linha sao sempre explicitas: e o que garante que o texto caia
   no mesmo pixel do modelo, independente da fonte de fallback.
   ========================================================================== */

/* ==========================================================================
   BANNER
   ========================================================================== */

/* O banner virou <img> dentro de <picture> (era background-image ate
   10/09/2026). Com <img> o navegador acha a imagem durante o parse do HTML e
   ja a baixa, sem esperar o CSS -- e e ela o LCP da pagina.

   A altura fixa de 511px continua sendo a do layout; o <img> preenche a
   caixa com object-fit: cover, que reproduz o antigo
   background-size: cover + center center. */
.cv-banner {
    position: relative;
    height: 511px;
    overflow: hidden;
}

/* picture{display:contents} ja existe no css.css global, entao a <picture>
   nao cria caixa: quem ocupa a area e o proprio <img>. */
.cv-banner-img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
}

/* Link opcional do banner (campo Link do Painel): cobre a area inteira.
   Fica DEPOIS do h1.sr-only no HTML, entao nao rouba o primeiro foco do
   teclado do menu -- e o .sr-only continua sendo o rotulo do <section>. */
.cv-banner-link {
    position: absolute;
    inset: 0;
    display: block;
}

/* ==========================================================================
   CONHECA CIDA VENTURA (ancorada a esquerda, 1544px)
   ========================================================================== */

.cv-conheca {
    display: flex;
    align-items: flex-start;
    height: 834px;
    padding-top: 41px;
    /* linha-titulo-1-v2 (1593px) traz o emblema inteiro; a de 1545px o cortava.
       A 2a camada estende a faixa branca por toda a largura da tela, dos dois
       lados da imagem (as fotos cobrem a parte da esquerda). */
    background:
        url(/imagens/linha-titulo-1-v2.jpg) 0 80px no-repeat,
        linear-gradient(#fff, #fff) 0 80px / 100% 107px no-repeat;
}

/* fotos.png tem 766px de altura e a caixa 691px: a imagem fica centralizada
   e cortada ~37px em cima e embaixo, igual ao fatiado. */
.cv-conheca-fotos {
    flex: none;
    width: 818px;
    height: 691px;
    background: url(/imagens/fotos.png) right center no-repeat;
    background-image: image-set(url(/imagens_webp/fotos.webp) type("image/webp"), url(/imagens/fotos.png) type("image/png"));
}

.cv-conheca-texto {
    flex: none;
    width: 726px;
    padding-left: 80px;
}

.cv-conheca-titulo {
    display: flex;
    align-items: flex-end;
    height: 116px;
}

/* flow-root: contem as margens dos <p> (no fatiado a celula da tabela faz o
   mesmo papel). Sem isso a margem do 1o paragrafo vazaria para fora. */
.cv-conheca-corpo {
    display: flow-root;
    margin-top: 65px;
    font-size: 22px;
    line-height: 24px;
    color: #062345;
    text-align: justify;
}

/* As quebras manuais do layout impedem o justificado (linha que termina em
   <br> nao e esticada), entao saem em todas as larguras e o texto quebra
   pela largura da caixa. */
.cv-conheca-corpo br {
    display: none;
}

.cv-conheca-corpo p {
    margin: 22px 0;
}

.cv-conheca-acoes {
    display: flex;
    align-items: center;
    height: 60px;
}

.cv-creci {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 166px;
    height: 45px;
    background: url(/imagens/botao-creci-1.png) no-repeat;
    font-weight: 700;
    font-size: 20px;
    line-height: 20px;
    color: #062345;
}

/* margin-top 15,5px centraliza os icones no botao CRECI ao lado; gap da o
   respiro entre Facebook e Instagram. */
.cv-social {
    display: flex;
    gap: 10px;
    align-self: flex-start;
    margin-top: 15.5px;
    margin-left: 275px;
}

.cv-social a {
    display: block;
}

.cv-social-face { width: 29px; }
.cv-social-insta { width: 84px; }

/* Icones sociais em SVG inline (tracos do Lucide), 29px como os PNG. */
.cv-social svg {
    display: block;
    width: 29px;
    height: 29px;
    stroke: #062345;
    stroke-width: 2;
    transition: opacity .25s var(--cv-ease), transform .25s var(--cv-ease);
}

.cv-social a:hover svg {
    opacity: .7;
    transform: translateY(-2px);
}

/* ==========================================================================
   ESPECIALIDADES
   ========================================================================== */

.cv-espec-band {
    height: 167px;
    /* linha-titulo-2-v2 (1616px) traz o emblema inteiro; a de 1545px o cortava
       na borda esquerda. Os 71px a mais ficam todos do lado do emblema.
       A 2a camada estende a faixa branca por toda a largura da tela. */
    background:
        url(/imagens/linha-titulo-2-v2.jpg) right center no-repeat,
        linear-gradient(#fff, #fff) 0 0 / 100% 100% no-repeat;
}

.cv-espec-band .cv-container {
    display: flex;
    align-items: center;
    height: 167px;
    padding-left: 100px;
}

/* Tabela de 1209px com 5 celulas iguais (241,8px) e o circulo de 202px
   centralizado em cada uma: reproduz as posicoes fracionarias do fatiado
   (375,4 / 617,2 / 859,0 / 1100,8 / 1342,6), que mudam o antialiasing do
   texto centralizado. */
.cv-espec-lista {
    display: flex;
    width: 1209px;
    height: 401px;
    margin: 0 auto;
    padding-top: 99.5px;
    list-style: none;
}

.cv-espec-cel {
    display: flex;
    justify-content: center;
    flex: none;
    width: 241.8px;
}

/* Card = <a> para a pagina da especialidade. Hover: sobe, ganha sombra que
   acompanha o contorno arredondado do PNG (drop-shadow, nao box-shadow),
   icone cresce e o nome fica dourado. A sombra parte de um valor "zero"
   para a transicao interpolar (de none ela nao anima). */
.cv-espec-item {
    display: block;
    width: 202px;
    height: 202px;
    padding-top: 26.5px;
    background: url(/imagens/a0.png) no-repeat;
    filter: drop-shadow(0 0 0 rgba(6, 35, 69, 0));
    transition: transform .35s var(--cv-ease), filter .35s var(--cv-ease);
}

.cv-espec-item:hover {
    transform: translateY(-8px);
    filter: drop-shadow(0 16px 18px rgba(6, 35, 69, .22));
}

.cv-espec-ico img {
    transition: transform .35s var(--cv-ease);
}

.cv-espec-item:hover .cv-espec-ico img {
    transform: scale(1.1);
}

.cv-espec-ico {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    height: 94px;
}

.cv-espec-nome {
    font-weight: 700;
    font-size: 26px;
    line-height: 26px;
    text-align: center;
    color: #062345;
    transition: color .25s var(--cv-ease);
}

.cv-espec-item:hover .cv-espec-nome {
    color: #b8922f;
}

/* ==========================================================================
   NOSSOS DESTAQUES (fundo branco)
   ========================================================================== */

.cv-destaques {
    height: 1985px;
    background: #fff;
}

.cv-destaques-titulo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 860px;
    height: 204px;
    margin: 0 auto;
}

/* space-around reproduz as duas tabelas de 448px centralizadas em celulas
   de 478,5px: colunas em x=497 e x=975 (a 1920px). */
.cv-destaques-grid {
    display: flex;
    justify-content: space-around;
    width: 957px;
    margin: 0 auto;
}

.cv-destaques-col {
    width: 448px;
}

.cv-destaques-col--dir {
    padding-top: 121px;
}

/* overflow hidden: o zoom da foto no hover fica contido na moldura. */
.cv-destaque-img {
    display: block;
    overflow: hidden;
}

.cv-destaque-img img {
    transition: transform .5s var(--cv-ease);
}

.cv-destaque-img:hover img {
    transform: scale(1.03);
}

.cv-destaque-img--728 { height: 728px; }
.cv-destaque-img--726 { height: 726px; }
.cv-destaque-img--721 { height: 721px; }
.cv-destaque-img--711 { height: 711px; }

.cv-destaque-info--103 { height: 103px; }
.cv-destaque-info--102 { height: 102px; }

.cv-destaque-row {
    display: flex;
    align-items: center;
    height: 44px;
}

.cv-destaque-row--73 {
    height: 73px;
}

.cv-destaque-nome {
    width: 223px;
    font: 400 44px/44px 'Afterglow', Georgia, serif;
    color: #0b294d;
}

.cv-destaque-link {
    display: flex;
    align-items: center;
    width: 225px;
    height: 100%;
    font-size: 19px;
    line-height: 19px;
    color: #062345;
}

/* Nomes de destaque e descricoes da vitrine sao links de detalhe. */
.cv-destaque-nome a {
    transition: opacity .25s var(--cv-ease);
}

.cv-destaque-nome a:hover {
    opacity: .7;
}

/* Links com setinha: deslizam 3px e clareiam (padrao .link-dark do web4). */
.cv-destaque-link,
.cv-saiba,
.cv-connect-saiba {
    transition: opacity .25s var(--cv-ease), transform .25s var(--cv-ease);
}

.cv-destaque-link:hover,
.cv-saiba:hover,
.cv-connect-saiba:hover {
    opacity: .65;
    transform: translateX(3px);
}

/* A seta do fatiado e <img> inline apoiada na baseline: fica 13px abaixo do
   topo da linha de 44px (28px na de 73px), e nao centralizada. */
.cv-destaque-link .cv-seta {
    align-self: flex-start;
    margin-top: 13px;
}

.cv-destaque-row--73 .cv-destaque-link .cv-seta {
    margin-top: 27.5px;
}

/* line-height 18px numa linha de 18px: mesma posicao de glifo que os 15px
   centralizados do fatiado, sem precisar de meio pixel. */
.cv-saiba {
    display: flex;
    align-items: flex-start;
    height: 18px;
    font-size: 15px;
    line-height: 18px;
    color: #062345;
}

/* ==========================================================================
   CONHECA A VENTURA CONNECT
   ========================================================================== */

.cv-connect {
    display: flex;
    width: 1170px;
    height: 702px;
    margin: 0 auto;
}

.cv-connect-foto {
    flex: none;
    width: 324px;
    padding-top: 99px;
}

.cv-connect-texto {
    width: 780px;
    padding-top: 218px;
}

.cv-connect-titulo {
    height: 103px;
    font: 400 60px/60px 'Afterglow', Georgia, serif;
    color: #0b294d;
}

.cv-connect-titulo a {
    transition: opacity .25s var(--cv-ease);
}

.cv-connect-titulo a:hover {
    opacity: .7;
}

.cv-connect-desc {
    height: 136px;
    font-size: 24px;
    line-height: 29px;
    color: #0b294d;
}

.cv-connect-saiba {
    display: flex;
    align-items: flex-start;
    height: 27px;
    font-size: 19px;
    line-height: 19px;
    color: #062345;
}

.cv-connect-saiba .cv-seta {
    padding-top: .5px;
}

/* ==========================================================================
   DEPOIMENTOS
   ========================================================================== */

.cv-depo-titulo {
    width: 860px;
    height: 132px;
    margin: 0 auto;
    text-align: center;
}

/* CARD DE DEPOIMENTO.

   O fundo era o PNG /imagens/depo-1.png (356x174 FIXOS) e a altura do card
   estava travada nessa medida. Isso funcionava com o texto de exemplo do
   layout (4 linhas curtas), mas depoimento de verdade tem 5 a 12 linhas: o
   texto vazava do card e caia POR CIMA do nome e das estrelas.

   Agora o fundo e CSS (branco, cantos de 16px -- exatamente o que o PNG
   desenhava, conferido pixel a pixel no proprio arquivo), entao o card cresce
   com o conteudo. Beneficio de tabela: sai um download de imagem.

   align-items: stretch mantem os cards da mesma pagina do carrossel com a
   mesma altura; height: 100% no slide faz a linha inteira acompanhar o card
   mais alto. */
.cv-depo-card {
    display: flex;
    width: 356px;
    height: 100%;
    padding: 25.5px 16px 22px 11px;
    background: #fff;
    border-radius: 16px;
    transition: transform .3s var(--cv-ease);
}

.cv-depo-card:hover {
    transform: translateY(-4px);
}

.cv-depo-avatar-wrap {
    flex: none;
    width: 94px;
}

.cv-depo-avatar {
    width: 83px;
    height: 83px;
    padding: 2px 0 0 4px;
    background: url(/imagens/depo-2.png) no-repeat;
}

/* MONOGRAMA: reserva de quem nao tem foto cadastrada no Painel. Ocupa
   exatamente o vao da moldura (.cv-depo-avatar ja tem o padding da arte),
   para nao deslocar o card quando um depoimento tem foto e o vizinho nao. */
.cv-depo-iniciais {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 75px;
    height: 75px;
    border-radius: 50%;
    background: #062345;
    color: #e7ad14;
    font-family: "Aeonik", Arial, Helvetica, sans-serif;
    font-size: 26px;
    font-weight: 700;
    letter-spacing: 1px;
    line-height: 1;
}

/* A coluna do texto cresce ate o fim do card e empurra o rodape (nome +
   estrelas) para baixo, para o rodape ficar alinhado entre cards de alturas
   diferentes. */
.cv-depo-conteudo {
    display: flex;
    flex-direction: column;
    width: 240px;
    padding-top: 1px;
}

/* SEM altura fixa: era height 97px (a medida do texto de exemplo do layout).
   Com depoimento real o conteudo passava de 260px e vazava por cima do nome e
   das estrelas. O flex:1 faz o paragrafo ocupar a sobra do card. */
.cv-depo-texto {
    flex: 1 1 auto;
    font-size: 19px;
    line-height: 20px;
    color: #062345;
}

/* Nome a esquerda e estrelas a DIREITA, na mesma linha -- e a disposicao do
   layout de referencia. O nome ocupa a sobra (flex:1) e empurra as estrelas
   para a borda; nomes longos quebram em vez de espremer as estrelas. */
.cv-depo-rodape {
    display: flex;
    flex: none;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-top: 12px;
}

.cv-depo-nome {
    width: 145px;
    font-size: 15px;
    line-height: 18px;
    color: #062345;
}

.cv-depo-estrelas {
    display: flex;
}

/* padding-top 2,5px: estrela centrada nas maiusculas de "Nome do Cliente". */
.cv-depo-estrela {
    display: block;
    width: 19px;
    padding-top: 2.5px;
}

/* Estrela APAGADA: o Painel aceita nota de 1 a 5, entao uma nota 4 precisa
   ser legivel de relance. Fica cinza em vez de sumir -- 4 estrelas soltas
   nao se distinguem de 5 sem o contraste das que faltam.
   O seletor precisa do tipo (svg.) para vencer a base svg.lucide. */
.cv-depo-estrela--off svg.cv-estrela-ico {
    fill: #c9ccd1;
    stroke: #c9ccd1;
}

/* Lucide star preenchida em dourado, 15px como o PNG. O seletor com o tipo
   (svg.classe) e obrigatorio: a base "svg.lucide { fill: none }" do css.css
   tem especificidade tipo+classe e venceria uma classe sozinha. */
svg.cv-estrela-ico {
    display: block;
    width: 15px;
    height: 15px;
    fill: #e7ad14;
    stroke: #e7ad14;
    stroke-width: 1.2;
}

/* ==========================================================================
   NEWSLETTER
   ========================================================================== */

.cv-linha-ouro {
    width: 1170px;
    height: 1px;
    margin: 0 auto;
    background: #e7ad14;
}

.cv-news {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 1170px;
    height: 250px;
    margin: 0 auto;
}

.cv-news-titulo {
    width: 456px;
    font: 400 41px/41px 'Afterglow', Georgia, serif;
    color: #0b294d;
}

.cv-news-campo {
    display: flex;
    align-items: center;
    width: 440px;
    height: 250px;
    background: url(/imagens/news2.png) left center no-repeat;
}

.cv-news-linha {
    display: flex;
    align-items: flex-start;
    height: 25px;
}

.cv-news-ico {
    display: flex;
    justify-content: flex-end;
    width: 56px;
    cursor: pointer;
}

/* Lucide mail no lugar do envelope PNG de 23x21 (svg.classe: ver estrela). */
svg.cv-news-mail {
    display: block;
    width: 22px;
    height: 22px;
    margin-top: 2px;
    stroke: #8d8d8d;
    stroke-width: 1.6;
}

/* No fatiado o placeholder e um texto alinhado a direita numa celula de
   139px; aqui o campo e real e alinhado a ESQUERDA a partir do mesmo x
   (990px), para o que a pessoa digita correr normalmente ate o fim do
   desenho do campo. Na tela inicial o resultado e identico. */
.cv-news-input {
    width: 320px;
    height: 25px;
    margin-left: 27.25px;
    padding: 0 0 1px;
    border: 0;
    background: none;
    font: 400 15px/15px 'Aeonik', Arial, Helvetica, sans-serif;
    color: #062345;
    outline: 0;
}

.cv-news-input::placeholder {
    color: #a3a3a3;
    opacity: 1;
}

.cv-news-enviar {
    display: flex;
    align-items: center;
    width: 122px;
    height: 24px;
    font: 400 24px/24px 'Aeonik', Arial, Helvetica, sans-serif;
    color: #062345;
    cursor: pointer;
}

.cv-news-enviar {
    transition: transform .25s var(--cv-ease), opacity .25s var(--cv-ease);
}

.cv-news-enviar:hover {
    transform: translateY(-2px);
    opacity: .85;
}

.cv-news-enviar:disabled {
    opacity: .5;
    cursor: default;
}

/* ---- Estado de ENVIANDO ----------------------------------------------

   Enquanto o Ajax roda, a setinha da lugar a um spinner e o rotulo vira
   "ENVIANDO". Sem isso o unico retorno era o botao esmaecer (:disabled), o
   que num 3G lento parece que o clique nao funcionou -- e a pessoa clica de
   novo.

   O spinner ocupa a MESMA caixa da seta (14px) e so um dos dois aparece por
   vez, entao a largura do botao nao muda e o texto nao dansa. */
.cv-news-spinner {
    display: none;
    flex: none;
    width: 14px;
    height: 14px;
    margin-right: 8px;
    border: 2px solid rgba(6, 35, 69, .25);
    border-top-color: #062345;
    border-radius: 50%;
    animation: cv-news-girar .7s linear infinite;
}

.cv-news-enviar.esta-enviando .cv-seta-news {
    display: none;
}

.cv-news-enviar.esta-enviando .cv-news-spinner {
    display: block;
}

/* O botao fica opaco de proposito durante o envio: aqui o :disabled nao deve
   apagar o spinner, que e justamente o sinal de que algo esta acontecendo. */
.cv-news-enviar.esta-enviando:disabled {
    opacity: 1;
}

@keyframes cv-news-girar {
    to { transform: rotate(360deg); }
}

.cv-seta-news {
    flex: none;
    align-self: flex-start;
    width: 17px;
    padding-top: 1px;
}

/* Lucide play dourado no lugar da seta PNG de 11x18. */
.cv-seta-news svg {
    display: block;
    width: 14px;
    height: 18px;
    margin: 2.5px 0 0 -2px;
    fill: #e7ad14;
    stroke: #e7ad14;
    stroke-width: 1;
}

/* PONTOS DE PAGINACAO: escondidos por padrao; aparecem SO ate 991px.

   No computador a navegacao e pelas setas, e os pontos viravam um segundo
   controle para a mesma coisa, ocupando altura logo abaixo do carrossel.

   ATENCAO -- ESTA REGRA PRECISA FICAR ANTES DO BLOCO RESPONSIVO. Media query
   nao aumenta especificidade: entre duas regras de mesmo peso vence a ULTIMA.
   Com este `display:none` DEPOIS do @media de 991px, os pontos sumiam tambem
   no celular (ficaram visiveis so ate 767px, por causa de outra regra). */
.cv-slider-pontos {
    display: none;
    justify-content: center;
    gap: 8px;
    margin-top: 22px;
}

/* ==========================================================================
   RESPONSIVO

   A base acima e o desktop de 1920px, pixel-identico ao fatiado. Tudo daqui
   para baixo fica em media queries que NAO se aplicam a 1920px exatos.

   Faixas:
   . >= 1921       ultra-wide: conteudo no tamanho de 1920, centralizado;
                   faixas de titulo e secao "Conheca" ancoradas ao container.
   . 1200 a 1919   desktop menor: container 1170 mantido; colagem do
                   "Conheca" escala em vez de cortar; Vitrine rola.
   . <= 1199       tablet: container fluido, secoes empilham/reorganizam.
   . <= 991        celular e tablet vertical: hamburguer, banner quadrado.
   . <= 767        uma coluna.
   . <= 479        ajustes finais para 320-479px.

   As faixas brancas de titulo (linha-titulo-1/2) sao imagens de 1545px que
   precisam ficar presas ao container de 1170, nao a tela. CUIDADO: em
   background-position, percentual e PROPORCIONAL -- pos = (container -
   imagem) x P + L -- e nao distancia da borda ("left calc(50% - 585px)" NAO
   funciona). Com P = 50% e imagem de 1545px:
   . borda ESQUERDA da imagem na borda esquerda do container (W/2 - 585):
     L = -585 + 1545/2 = +187,5px  ->  calc(50% + 187.5px)
   . borda DIREITA da imagem na borda direita do container (W/2 + 585):
     L = -960 + 1545/2 = -187,5px  ->  calc(50% - 187.5px)
   A 1920 isso da os mesmos 375px / 0px do fatiado.
   ========================================================================== */
/* ---- >= 1921 e 1200-1919: faixas de titulo e "Conheca" presas ao container ---- */
@media (min-width: 1921px), (min-width: 1200px) and (max-width: 1919px) {

    .cv-conheca {
        /* Imagem de 1593px com a borda esquerda em W/2 - 960 (igual a de 1545):
           L = -960 + 1593/2 = -163,5px. */
        background-position: calc(50% - 163.5px) 80px, 0 80px;
    }

    .cv-conheca-fotos {
        flex: 1 1 auto;
        width: auto;
        min-width: 0;
    }

    .cv-conheca-texto {
        margin-right: calc(50% - 585px);
    }

    /* Imagem de 1616px com o emblema 71px antes do container (o trecho que
       ja aparecia fica no mesmo lugar): borda esquerda em W/2 - 656 ->
       L = -656 + 1616/2 = +152px. A borda direita cai em W/2 + 960; acima de
       1920 a 2a camada (branco de largura total) cobre o resto da tela. */
    .cv-espec-band {
        background:
            url(/imagens/linha-titulo-2-v2.jpg) calc(50% + 152px) center no-repeat,
            linear-gradient(#fff, #fff) 0 0 / 100% 100% no-repeat;
    }

}

/* ---- >= 1921 (ultra-wide) ---- */
@media (min-width: 1921px) {

    /* Banner nao estica alem do tamanho natural: fica centralizado e as
       laterais recebem o azul da borda da imagem (#0b294d solido a direita; a
       esquerda ha um brilho suave, entao a emenda pode aparecer de leve em
       telas muito largas).

       Com <img>, quem nao estica e a propria imagem: object-fit: contain a
       mantem em 1920 de largura e o fundo do <section> preenche o resto. */
    .cv-banner {
        background-color: #0b294d;
    }

    .cv-banner-img {
        width: auto;
        max-width: 100%;
        margin: 0 auto;
        object-fit: contain;
    }

}

/* ---- 1200 a 1919 ---- */
@media (min-width: 1200px) and (max-width: 1919px) {

    /* Area da colagem encolhe: escala (contain) em vez de cortar a foto. */
    .cv-conheca-fotos {
        background-size: contain;
    }

    .cv-espec-lista {
        max-width: 100%;
    }

    .cv-espec-cel {
        flex: 1 1 0;
        width: auto;
        min-width: 0;
    }

}

/* ---- <= 1199 (tablet) ---- */
@media (max-width: 1199px) {

    /* Banner desktop com cover: a 400px de altura a escala e 0,78 e o texto
       (x 890-1520 na imagem) continua inteiro ate 992px de largura. */
    .cv-banner {
        height: 400px;
    }

    /* Conheca empilhado: colagem centralizada sobre o texto. */
    .cv-conheca {
        display: block;
        height: auto;
        padding: 40px 0 50px;
        background-image: none;
    }

    .cv-conheca-fotos {
        width: calc(100% - 40px);
        max-width: 816px;
        height: auto;
        aspect-ratio: 816 / 766;
        margin: 0 auto;
        background-size: contain;
        background-position: center;
    }

    .cv-conheca-texto {
        width: auto;
        padding: 0 20px;
    }

    /* A faixa branca com o emblema vira fundo do proprio titulo, escalada
       para a altura dele (auto 100%) para o emblema nao ser cortado. */
    .cv-conheca-titulo {
        height: auto;
        margin: 20px -20px 0;
        padding: 24px 20px;
        background: #fff url(/imagens/linha-titulo-1-v2.jpg) right center / auto 100% no-repeat;
    }

    .cv-conheca-corpo {
        margin-top: 20px;
        font-size: 20px;
        line-height: 26px;
    }

    .cv-conheca-corpo br {
        display: none;
    }

    .cv-conheca-corpo p {
        margin: 16px 0;
    }

    /* Especialidades: 3 circulos por linha, depois 2 centralizados. */
    .cv-espec-band {
        background-position: left center;
    }

    .cv-espec-lista {
        flex-wrap: wrap;
        justify-content: center;
        width: auto;
        height: auto;
        margin: 0 20px;
        padding: 50px 0 20px;
    }

    .cv-espec-cel {
        flex: 0 0 33.333%;
        width: auto;
        margin-bottom: 30px;
    }

    /* Destaques: duas colunas percentuais; as fotos guardam 448:707. */
    .cv-destaques {
        height: auto;
        padding-bottom: 30px;
    }

    .cv-destaques-titulo {
        width: auto;
        height: 150px;
        padding: 0 20px;
    }

    .cv-destaques-grid {
        justify-content: space-between;
        width: auto;
        margin: 0 20px;
    }

    .cv-destaques-col {
        width: 48%;
    }

    .cv-destaques-col--dir {
        padding-top: 12.6%;
    }

    .cv-destaque-img--728,
    .cv-destaque-img--726,
    .cv-destaque-img--721,
    .cv-destaque-img--711 {
        height: auto;
        margin-bottom: 20px;
    }

    .cv-destaque-img img {
        width: 100%;
        height: auto;
    }

    .cv-destaque-info--103,
    .cv-destaque-info--102 {
        height: auto;
        padding-bottom: 30px;
    }

    .cv-destaque-row,
    .cv-destaque-row--73 {
        flex-wrap: wrap;
        height: auto;
    }

    .cv-destaque-nome {
        width: auto;
        margin-right: 20px;
        font-size: 36px;
        line-height: 40px;
    }

    .cv-destaque-link {
        width: auto;
        height: auto;
        padding: 6px 0;
    }

    .cv-destaque-link .cv-seta,
    .cv-destaque-row--73 .cv-destaque-link .cv-seta {
        align-self: center;
        margin-top: 0;
    }

    /* Ventura Connect: foto + texto fluido. */
    .cv-connect {
        width: auto;
        height: auto;
        margin: 0 20px;
        padding: 50px 0;
    }

    .cv-connect-foto {
        padding-top: 0;
    }

    .cv-connect-texto {
        flex: 1 1 auto;
        width: auto;
        min-width: 0;
        padding-top: 30px;
    }

    .cv-connect-titulo {
        height: auto;
        margin-bottom: 20px;
        font-size: 48px;
        line-height: 52px;
    }

    .cv-connect-desc {
        height: auto;
        margin-bottom: 20px;
        font-size: 22px;
        line-height: 28px;
    }

    .cv-connect-desc br {
        display: none;
    }

    /* Depoimentos: carrossel com 2 cards por pagina; setas encostadas nas
       bordas (36px) e a faixa recuada para nao ficar embaixo delas. */
    .cv-depo-titulo {
        width: auto;
        height: auto;
        padding: 40px 20px 30px;
    }

    /* Newsletter empilhada e centralizada. */
    .cv-linha-ouro {
        width: auto;
        margin: 0 20px;
    }

    .cv-news {
        flex-direction: column;
        width: auto;
        height: auto;
        padding: 40px 20px;
    }

    .cv-news-titulo {
        width: auto;
        margin-bottom: 24px;
        text-align: center;
    }

    .cv-news-campo {
        width: 413px;
        height: 56px;
        margin-bottom: 20px;
        background-position: left top;
    }

    .cv-news-linha {
        width: 100%;
    }

    .cv-news-input {
        flex: 1 1 auto;
        width: auto;
        min-width: 0;
        margin-right: 24px;
    }

    .cv-news-enviar {
        justify-content: center;
        width: auto;
    }

}

/* ---- <= 991 (celular e tablet vertical): hamburguer e banner quadrado ---- */
@media (max-width: 991px) {

    /* PONTOS visiveis a partir daqui: no toque a navegacao e por swipe, e os
       pontos sao o unico indicador de quantas paginas existem e em qual se
       esta. No computador ficam escondidos (regra base, mais acima).

       991px e o mesmo limite em que o menu vira hamburguer e o banner vira
       quadrado -- e a fronteira de "celular/tablet" no projeto inteiro. */
    .cv-slider-pontos {
        display: flex;
    }

    /* Celular: banner QUADRADO. A troca de arquivo agora e feita pelo
       <source media="(max-width: 991px)"> do <picture>, no index.php -- aqui
       fica so a forma da caixa. */
    .cv-banner {
        height: auto;
        aspect-ratio: 1 / 1;
    }

}

/* ---- <= 767: uma coluna ---- */
@media (max-width: 767px) {

    .cv-conheca {
        padding: 30px 0 40px;
    }

    .cv-conheca-titulo {
        padding: 20px;
    }

    .cv-conheca-corpo {
        font-size: 18px;
        line-height: 26px;
    }

    .cv-conheca-acoes {
        flex-wrap: wrap;
        height: auto;
    }

    .cv-social {
        align-self: center;
        margin: 0 0 0 30px;
    }

    /* Faixa de Especialidades escalada para 120px (emblema junto). */
    .cv-espec-band {
        height: 120px;
        background-size: auto 100%;
    }

    .cv-espec-band .cv-container {
        height: 120px;
        padding-left: 80px;
    }

    /* Circulos escalados: 2 por linha, ate 42vw cada (134px a 320). */
    .cv-espec-cel {
        flex: 0 0 50%;
        margin-bottom: 20px;
    }

    .cv-espec-item {
        width: min(202px, 42vw);
        height: min(202px, 42vw);
        padding-top: 13%;
        background-size: 100% 100%;
    }

    .cv-espec-ico {
        height: 46%;
    }

    .cv-espec-ico img {
        width: auto;
        height: auto;
        max-width: 55%;
        max-height: 85%;
    }

    .cv-espec-nome {
        font-size: 20px;
        line-height: 22px;
    }

    .cv-destaques-titulo {
        height: 120px;
    }

    .cv-destaques-grid {
        display: block;
    }

    .cv-destaques-col {
        width: 100%;
        max-width: 448px;
        margin: 0 auto;
    }

    .cv-destaques-col--dir {
        padding-top: 0;
    }

    .cv-destaque-nome {
        font-size: 32px;
        line-height: 36px;
    }

    .cv-connect {
        display: block;
        padding: 40px 0;
    }

    .cv-connect-foto {
        width: auto;
    }

    .cv-connect-foto img {
        margin: 0 auto;
    }

    .cv-connect-texto {
        padding-top: 24px;
    }

    .cv-connect-titulo {
        font-size: 36px;
        line-height: 40px;
    }

    .cv-connect-desc {
        font-size: 18px;
        line-height: 26px;
    }

    .cv-news-titulo {
        font-size: 30px;
        line-height: 34px;
    }

    .cv-news-campo {
        width: 100%;
        max-width: 413px;
    }

}

/* ---- <= 479 (320 a 479px) ---- */
@media (max-width: 479px) {

    .cv-connect-titulo {
        font-size: 30px;
        line-height: 34px;
    }

    .cv-destaque-nome {
        font-size: 28px;
        line-height: 32px;
    }

    .cv-espec-nome {
        font-size: 18px;
        line-height: 20px;
    }

    /* Card de depoimento: fundo esticado (100% 100%) para caber em 280px;
       avatar menor para sobrar largura de texto. */
    .cv-depo-card {
        width: 100%;
        height: auto;
        min-height: 174px;
        padding: 22px 12px 20px;
        background-size: 100% 100%;
    }

    .cv-depo-avatar-wrap {
        width: 78px;
    }

    .cv-depo-avatar {
        width: 66px;
        height: 66px;
        padding: 3px 0 0 3px;
        background-size: 100% 100%;
    }

    /* O monograma acompanha a moldura reduzida (66 - 3 de padding). */
    .cv-depo-iniciais {
        width: 60px;
        height: 60px;
        font-size: 21px;
    }

    .cv-depo-avatar img {
        width: 60px;
        height: 60px;
    }

    .cv-depo-conteudo {
        flex: 1 1 auto;
        width: auto;
        min-width: 0;
    }

    .cv-depo-texto {
        height: auto;
        font-size: 15px;
        line-height: 18px;
    }

    .cv-depo-texto br {
        display: none;
    }

    .cv-depo-rodape {
        flex-wrap: wrap;
        height: auto;
        margin-top: 10px;
    }

    .cv-depo-nome {
        width: auto;
        margin-right: 10px;
    }

    .cv-news-campo {
        background-size: 100% 100%;
    }

    .cv-news-ico {
        width: 40px;
    }

    .cv-news-input {
        margin-left: 10px;
        margin-right: 16px;
    }

}

/* ==========================================================================
   SLIDER (Vitrine de Oportunidades e Depoimentos) - motor unico, index.js

   Faixa com scroll-snap DENTRO do container de 1170 (alinhada ao topo/rodape);
   setas redondas 100px fora do container; pontos de paginacao abaixo.
   A folga de 8px em cima e nas laterais (padding + margem negativa, que nao
   muda a posicao dos slides) deixa o hover -- card sobe 4px, foto cresce 5%
   -- aparecer sem ser cortado pelo overflow da faixa.
   ========================================================================== */

.cv-slider-corpo {
    position: relative;
}

/* Folga so em cima e a ESQUERDA: a direita o slide ja tem padding interno,
   e uma folga ali deixaria aparecer uma lasca do proximo slide na borda. */
.cv-slider-faixa {
    display: flex;
    margin: -8px 0 0 -8px;
    padding: 8px 0 0 8px;
    overflow: hidden;
    scroll-snap-type: x mandatory;
    scroll-padding-left: 8px;
    scroll-behavior: smooth;
    scrollbar-width: none;
}

.cv-slider-faixa::-webkit-scrollbar {
    display: none;
}

.cv-slider-faixa:focus-visible {
    outline: 2px solid #d2aa4c;
    outline-offset: 2px;
}

.cv-slider-slide {
    flex: none;
    scroll-snap-align: start;
}

.cv-slider-seta {
    position: absolute;
    top: 50%;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    /* SETA DISCRETA: so o chevron, sem circulo branco nem borda.

       Antes era um botao de 44px com fundo branco e contorno azul, que
       competia com as fotos dos cards. Agora e o traco do chevron em cinza
       claro, que so ganha cor quando o mouse chega perto.

       A CAIXA continua com 44px: e a area de toque (o minimo acessivel e
       24px), e mante-la evita que o carrossel mude de largura. O que encolheu
       foi o desenho, nao o alvo do clique. */
    width: 44px;
    height: 44px;
    margin-top: -22px;
    border: 0;
    background: none;
    color: #9aa3ad;
    cursor: pointer;
    transition: color .25s var(--cv-ease), transform .25s var(--cv-ease);
}

.cv-slider-seta svg {
    width: 26px;
    height: 26px;
    /* Traco fino: o peso 1.5 e o que faz a seta parecer discreta. */
    stroke-width: 1.5;
}

.cv-slider-seta:hover,
.cv-slider-seta:focus-visible {
    color: #062345;
}

/* O deslocamento lateral (em vez de aumentar a seta) reforca a direcao. */
.cv-slider-seta--prev:hover,
.cv-slider-seta--prev:focus-visible {
    transform: translateX(-3px);
}

.cv-slider-seta--next:hover,
.cv-slider-seta--next:focus-visible {
    transform: translateX(3px);
}

.cv-slider-seta--prev {
    left: -100px;
}

.cv-slider-seta--next {
    right: -100px;
}

/* FAIXA DE 1200 A 1369px: a seta de 44px a 100px FORA do container de 1170
   chega a 585 + 100 + 44 = 729px do centro, ou seja, exige 1458px de janela.
   Entre 1200 e 1369 ela passava da borda direita e o documento inteiro
   ganhava rolagem horizontal -- medido: 85px de sobra a 1200px, 5px a 1360px.

   O recuo de 44px so existia a partir de 1199px para baixo, entao a faixa
   mais comum de notebook ficava descoberta.

   A folga real ao lado do container e (janela - 1170) / 2: a 1200px sao
   apenas 15px de cada lado, menos que a propria seta. Por isso aqui ela entra
   PARA DENTRO do container (right/left positivos), sobreposta a borda da
   faixa, como e usual em carrossel estreito. De 1370px em diante a folga ja
   comporta os 100px originais e nada muda no desktop largo. */
@media (min-width: 1200px) and (max-width: 1369px) {

    .cv-slider-seta--prev {
        left: 2px;
    }

    .cv-slider-seta--next {
        right: 2px;
    }

    /* TENTATIVA DESCARTADA (nao repetir): dar padding lateral na faixa para o
       slide nao passar por baixo da seta, cancelando o padding com margem
       negativa. A margem negativa devolve a faixa para FORA do container e a
       rolagem horizontal volta (medido: 30px de sobra a 1200px), que e
       exatamente o problema que este bloco existe para resolver.

       A seta sobreposta e aceitavel aqui: ela e redonda, opaca e fica na
       borda da foto circular do primeiro/ultimo item da pagina, nao sobre o
       texto do card. */

}

.cv-slider-ponto {
    width: 10px;
    height: 10px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(6, 35, 69, .22);
    cursor: pointer;
    transition: background-color .25s var(--cv-ease), transform .25s var(--cv-ease);
}

.cv-slider-ponto:hover {
    background: rgba(6, 35, 69, .45);
}

.cv-slider-ponto.is-ativo {
    background: #d2aa4c;
    transform: scale(1.25);
}

/* ---- Vitrine de Oportunidades: 4 slides iguais por pagina ---- */
.cv-vitrine {
    padding-bottom: 36px;
    background: #f9f9f9;
}

.cv-vitrine-titulo {
    display: flex;
    align-items: center;
    height: 96px;
    font: 400 28px/28px 'Afterglow', Georgia, serif;
    color: #0b294d;
}

.cv-vitrine-titulo a {
    transition: opacity .25s var(--cv-ease);
}

.cv-vitrine-titulo a:hover {
    opacity: .7;
}

.cv-vitrine-item {
    display: flex;
    align-items: center;
    gap: 14px;
    width: 25%;
    padding: 12px 14px 12px 0;
}

/* A moldura RECORTA a foto num circulo.

   As imagens do layout (b1.png...) ja vinham recortadas em circulo pelo
   proprio arquivo. As fotos que vem do cadastro sao retangulares, entao o
   recorte passou a ser feito aqui -- senao a vitrine mistura circulo com
   quadrado conforme a origem da imagem.

   O overflow tambem contem o zoom do hover (a foto cresce 5% dentro da
   moldura, em vez de invadir o texto ao lado). */
.cv-vitrine-foto {
    flex: none;
    display: block;
    width: 132px;
    height: 134px;
    overflow: hidden;
    border-radius: 50%;
}

/* object-fit: cover recorta pelo centro em vez de espremer a foto -- uma
   imagem deitada nao pode sair achatada dentro do circulo. */
.cv-vitrine-foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .4s var(--cv-ease);
}

.cv-vitrine-item:hover .cv-vitrine-foto img {
    transform: scale(1.05);
}

.cv-vitrine-info {
    flex: 1 1 auto;
    min-width: 0;
}

/* ALTURA FIXA de 4 linhas (4 x 17px de line-height).

   Os titulos vem do cadastro e variam de 2 a 5 linhas, entao o "Saiba Mais"
   de cada card parava numa altura diferente e a fileira ficava desalinhada.
   Com altura fixa o botao cai sempre no mesmo lugar.

   O -webkit-line-clamp corta o que passar de 4 linhas com reticencias (e
   suportado em todos os navegadores atuais, apesar do prefixo). O `height`
   junto do clamp e proposital: o clamp sozinho encurta o card quando o texto
   e CURTO, e e justamente o caso curto que desalinhava. */
.cv-vitrine-desc {
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
    height: 68px;
    margin-bottom: 8px;
    font-weight: 400;
    font-size: 14px;
    line-height: 17px;
    color: #000;
}

.cv-vitrine-desc a {
    transition: opacity .25s var(--cv-ease);
}

.cv-vitrine-desc a:hover {
    opacity: .7;
}

/* ---- Depoimentos: 3 cards por pagina (colunas de 390 = 1170/3) ---- */
.cv-depo-slider {
    padding-bottom: 66px;
}

.cv-depo-col {
    display: flex;
    justify-content: center;
    width: 33.333%;
}

/* ---- Responsivo dos sliders ---- */
@media (max-width: 1199px) {

    /* setas dentro do container, na faixa de 44px reservada por padding */
    .cv-slider {
        padding: 0 44px;
    }

    .cv-slider-seta {
        width: 40px;
        height: 40px;
        margin-top: -20px;
    }

    .cv-slider-seta--prev {
        left: -44px;
    }

    .cv-slider-seta--next {
        right: -44px;
    }

    .cv-vitrine {
        padding-bottom: 30px;
    }

    .cv-vitrine-item {
        width: 50%;
    }

    .cv-depo-slider {
        padding-bottom: 40px;
    }

    .cv-depo-col {
        width: 50%;
    }

}

@media (max-width: 991px) {

    /* swipe nativo no touch (a barra de rolagem continua escondida) */
    .cv-slider-faixa {
        overflow-x: auto;
        overflow-y: hidden;
    }

    .cv-depo-col {
        width: 100%;
    }

}

@media (max-width: 767px) {

    .cv-vitrine-item {
        flex-direction: column;
        width: 100%;
        padding: 12px 0;
        text-align: center;
    }

    .cv-vitrine-item .cv-saiba {
        justify-content: center;
    }

}

@media (max-width: 479px) {

    /* sem setas: pontos + swipe bastam e o card ganha a largura toda */
    .cv-slider {
        padding: 0;
    }

    .cv-slider-seta {
        display: none;
    }

}

/* ==========================================================================
   MOBILE - ajustes pedidos em 09/09/2026 (so ate 767px; desktop intacto)
   1. titulos com altura relativa ao texto  2. redes a direita do CRECI
   3. circulo de especialidade centralizado  4. link do destaque menor, abaixo
   do nome  5. depoimentos 2 por pagina empilhados, so pontos  6. setas da
   vitrine menores (e visiveis ate 320px)
   ========================================================================== */
@media (max-width: 767px) {

    /* 1 */
    .cv-conheca-titulo {
        padding: 16px 20px;
    }

    .cv-espec-band {
        height: auto;
    }

    .cv-espec-band .cv-container {
        height: auto;
        padding: 18px 0 18px 80px;
    }

    .cv-destaques-titulo {
        height: auto;
        padding: 28px 20px 20px;
    }

    .cv-vitrine-titulo {
        height: auto;
        padding: 22px 0 14px;
    }

    .cv-depo-titulo {
        padding: 28px 20px 18px;
    }

    /* 2. redes logo a direita do CRECI, na MESMA linha (sem quebra): a 320px
       CRECI 166 + 16 + icones 26+8+26 = 242 cabem nos 280 uteis. */
    .cv-conheca-acoes {
        flex-wrap: nowrap;
        justify-content: flex-start;
    }

    .cv-creci {
        flex: none;
    }

    .cv-social {
        flex: none;
        gap: 8px;
        margin-left: 16px;
    }

    /* celulas de 29/84px do desktop viram o tamanho do icone */
    .cv-social-face,
    .cv-social-insta {
        width: auto;
    }

    .cv-social svg {
        width: 26px;
        height: 26px;
    }

    /* 3 */
    .cv-espec-item {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        padding-top: 0;
    }

    .cv-espec-ico {
        height: auto;
        margin-bottom: 10px;
    }

    .cv-espec-ico img {
        max-height: 44px;
    }

    /* 4 */
    .cv-destaque-row,
    .cv-destaque-row--73 {
        flex-direction: column;
        align-items: flex-start;
    }

    .cv-destaque-nome {
        margin-right: 0;
    }

    .cv-destaque-link {
        padding: 6px 0 0;
        font-size: 16px;
        line-height: 16px;
    }

    .cv-destaque-link .cv-seta svg {
        width: 13px;
        height: 15px;
    }

    /* O padding de baixo mantem os pontos afastados da linha dourada. */
    .cv-depo-slider {
        padding: 0 0 36px;
    }

    /* Depoimentos: so pontos (as setas somem, o swipe assume). */
    #sliderDepo .cv-slider-seta {
        display: none;
    }

    .cv-depo-lista {
        display: grid;
        grid-auto-flow: column;
        grid-template-rows: auto auto;
        grid-auto-columns: 100%;
        row-gap: 14px;
    }

    .cv-depo-col {
        width: 100%;
    }

    /* 6 */
    .cv-slider {
        padding: 0 36px;
    }

    .cv-slider-seta {
        width: 32px;
        height: 32px;
        margin-top: -16px;
    }

    .cv-slider-seta svg {
        width: 16px;
        height: 16px;
    }

    .cv-slider-seta--prev {
        left: -36px;
    }

    .cv-slider-seta--next {
        right: -36px;
    }

}

@media (max-width: 479px) {

    /* setas da Vitrine continuam (pequenas); as dos Depoimentos ficam ocultas */
    .cv-slider {
        padding: 0 36px;
    }

    .cv-depo-slider {
        padding: 0 0 36px;
    }

    #sliderVitrine .cv-slider-seta {
        display: flex;
    }

}

@media (max-width: 767px) {

    /* caixa do icone ocupa a largura do circulo: o max-width % do svg/png
       volta a ser relativo ao circulo, nao a propria imagem (ficava 25px) */
    .cv-espec-ico {
        width: 100%;
    }

    .cv-espec-ico img {
        width: auto;
        height: auto;
        max-width: 60%;
        max-height: 48px;
    }

}
