/* ==========================================================================
   OPORTUNIDADES (/oportunidades/) - grade de categorias

   Este arquivo carrega DEPOIS do css.css global, entao so trata o que e
   exclusivo desta pagina. O cabecalho azul (.cv-pg-topo) e a chamada final
   (.cv-cta) vem prontos do global -- NAO redeclarar nada deles aqui, senao
   a pagina passa a divergir visualmente das outras internas.

   O card reaproveita o vocabulario visual dos Destaques da home (moldura com
   zoom contido, nome em Afterglow, link dourado com setinha), mas com grade
   propria: a home usa alturas fixas do fatiado, aqui a grade e fluida.
   ========================================================================== */

.cv-op {
    --op-azul: #062345;
    --op-azul-claro: #0b294d;
    --op-ouro: #e7ad14;
    --op-texto: #37475c;
    --op-linha: #e3ddc8;
    --op-raio: 18px;
    --op-sombra: 0 24px 60px rgba(6, 35, 69, .09);

    padding: 74px 0 90px;
    background: #fff;
}

/* 4 colunas no desktop: um ativo em cada (imoveis, veiculos, naval e
   aeronaves), fechando a linha exata. As media queries abaixo levam para
   2 e depois 1 coluna. */
.cv-op-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}

/* O CARD INTEIRO e o link. Por isso e flex column com a foto em cima e o
   texto embaixo: o alvo de clique cobre os dois. */
.cv-op-card {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--op-linha);
    border-radius: var(--op-raio);
    background: #fff;
    color: var(--op-texto);
    transition: transform .25s var(--cv-ease), box-shadow .25s var(--cv-ease),
                border-color .25s var(--cv-ease);
}

/* Cards sobem 4px no hover (padrao do site). */
.cv-op-card:hover,
.cv-op-card:focus-visible {
    transform: translateY(-4px);
    border-color: var(--op-ouro);
    box-shadow: var(--op-sombra);
}

/* MOLDURA DA FOTO: overflow:hidden aqui e o que segura o zoom da imagem
   dentro do card (mesmo mecanismo do .cv-destaque-img da home). */
.cv-op-foto {
    position: relative;
    display: block;
    overflow: hidden;
    height: 340px;
    background: var(--op-azul);
}

.cv-op-foto img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .5s var(--cv-ease);
}

.cv-op-card:hover .cv-op-foto img {
    transform: scale(1.03);
}

/* CATEGORIA SEM FOTO: enquanto nao ha imagem aprovada, a moldura vira um
   bloco azul institucional com o icone centralizado. Mesma caixa, mesma
   altura e mesmo hover dos cards com foto -- so o miolo muda. */
.cv-op-icone {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    background: radial-gradient(120% 120% at 50% 0%, #0b294d 0%, #062345 62%);
    transition: transform .5s var(--cv-ease);
}

.cv-op-card:hover .cv-op-icone {
    transform: scale(1.03);
}

/* ARMADILHA do Lucide: a base `svg.lucide { fill:none; stroke:currentColor }`
   tem especificidade tipo+classe. Uma classe sozinha (.cv-op-icone svg) ate
   vence por ser descendente, mas o seletor abaixo mantem o padrao explicito
   do projeto e deixa claro que a cor e intencional. */
.cv-op-icone svg.lucide {
    width: 92px;
    height: 92px;
    stroke: var(--op-ouro);
    stroke-width: 1.2;
}

.cv-op-info {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    padding: 26px 28px 28px;
}

.cv-op-nome {
    margin: 0 0 10px;
    font: 400 32px/36px 'Afterglow', Georgia, serif;
    color: var(--op-azul-claro);
}

.cv-op-txt {
    display: block;
    font-size: 16px;
    line-height: 25px;
}

/* margin-top:auto empurra o link para a base: com textos de tamanhos
   diferentes, os "Clique para ver Ofertas" ficam todos na mesma linha. */
.cv-op-link {
    display: flex;
    align-items: center;
    margin-top: auto;
    padding-top: 20px;
    font-size: 17px;
    line-height: 17px;
    color: var(--op-azul);
    transition: opacity .25s var(--cv-ease), transform .25s var(--cv-ease);
}

.cv-op-card:hover .cv-op-link {
    opacity: .65;
    transform: translateX(3px);
}

/* Aqui a setinha e centralizada na linha (ao contrario da home, onde ela
   imita a baseline de um <img> do fatiado): zera o deslocamento herdado. */
.cv-op-link .cv-seta {
    align-self: center;
    margin-top: 0;
    margin-right: 8px;
}

/* ==========================================================================
   RESPONSIVO - mesmas quebras do resto do site (1199 / 991 / 767 / 479)
   ========================================================================== */

@media (max-width: 1199px) {

    .cv-op {
        padding: 60px 0 72px;
    }

    .cv-op-foto {
        height: 300px;
    }

}

/* ==========================================================================
   CONEXOES E INVESTIMENTOS - faixa de chamada (CTA) abaixo dos 4 cards

   Nao e um quinto card: e uma FAIXA horizontal, azul institucional, com o
   icone a esquerda, o texto no meio e o botao a direita. O contraste de
   formato (horizontal x vertical) e de cor (azul x branco) e o que diz ao
   visitante que aqui a oferta e de outra natureza -- ver o comentario do
   $Conexoes no Oportunidades.php.
   ========================================================================== */

.cv-op-conexoes {
    position: relative;
    display: flex;
    align-items: center;
    gap: 28px;
    margin-top: 24px;
    padding: 34px 38px;
    overflow: hidden;
    border-radius: var(--op-raio);
    background-color: var(--op-azul);
    background-image:
        repeating-linear-gradient(135deg, rgba(255, 255, 255, .022) 0 1px, rgba(255, 255, 255, 0) 1px 6px),
        radial-gradient(80% 140% at 8% 100%, rgba(210, 170, 76, .22) 0%, rgba(210, 170, 76, .04) 42%, rgba(210, 170, 76, 0) 70%),
        linear-gradient(120deg, #051d3a 0%, #072a4f 52%, #0e3560 100%);
    color: #efe9d3;
    transition: transform .25s var(--cv-ease), box-shadow .25s var(--cv-ease);
}

/* Filete dourado no topo, assinatura das faixas escuras do site. */
.cv-op-conexoes::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: linear-gradient(90deg, rgba(210, 170, 76, 0) 0%, rgba(210, 170, 76, .55) 50%, rgba(210, 170, 76, 0) 100%);
}

.cv-op-conexoes:hover,
.cv-op-conexoes:focus-visible {
    transform: translateY(-4px);
    box-shadow: var(--op-sombra);
}

/* Circulo do icone. flex-shrink:0 impede que ele achate quando o texto
   cresce (o flex encolheria o item antes de quebrar a linha). */
.cv-op-conexoes-ico {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    width: 76px;
    height: 76px;
    border: 1px solid rgba(210, 170, 76, .38);
    border-radius: 50%;
    background: rgba(210, 170, 76, .10);
}

/* ARMADILHA do Lucide: a base `svg.lucide { fill:none; stroke:currentColor }`
   tem especificidade tipo+classe; o seletor descendente abaixo vence e deixa
   a cor explicita. */
.cv-op-conexoes-ico svg {
    width: 34px;
    height: 34px;
    stroke: var(--op-ouro);
}

.cv-op-conexoes-texto {
    flex: 1 1 auto;
    min-width: 0;      /* deixa o texto quebrar dentro do flex */
}

.cv-op-conexoes-nome {
    margin-bottom: 8px;
    font: 400 30px/34px 'Afterglow', Georgia, serif;
    color: #efe9d3;
}

.cv-op-conexoes-txt {
    display: block;
    font: 400 16px/26px 'Aeonik', Arial, Helvetica, sans-serif;
    color: rgba(239, 233, 211, .78);
}

/* Botao dourado a direita. E um <span>: o link ja e o bloco inteiro. */
.cv-op-conexoes-btn {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    gap: 10px;
    padding: 15px 26px;
    border-radius: 999px;
    background: linear-gradient(180deg, #e7ad14 0%, #c9930c 100%);
    font: 700 15px/1 'Aeonik', Arial, Helvetica, sans-serif;
    color: #062345;
    transition: transform .25s var(--cv-ease);
}

.cv-op-conexoes:hover .cv-op-conexoes-btn {
    transform: translateX(3px);
}

.cv-op-conexoes-btn .cv-seta svg {
    width: 13px;
    height: 13px;
    fill: #062345;
    stroke: #062345;
}

@media (max-width: 991px) {

    .cv-op-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 24px;
    }

    /* A faixa empilha: icone e texto em cima, botao embaixo ocupando a
       largura toda (alvo de toque confortavel). */
    .cv-op-conexoes {
        flex-wrap: wrap;
        gap: 20px;
        padding: 30px 28px;
    }

    .cv-op-conexoes-texto {
        flex: 1 1 260px;
    }

    .cv-op-conexoes-btn {
        flex: 1 0 100%;
        justify-content: center;
    }

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

}

@media (max-width: 767px) {

    .cv-op {
        padding: 48px 0 60px;
    }

    .cv-op-grid {
        grid-template-columns: 1fr;
    }

    /* No celular a faixa vira coluna centralizada. */
    .cv-op-conexoes {
        flex-direction: column;
        padding: 28px 22px 26px;
        text-align: center;
    }

    .cv-op-conexoes-nome {
        font-size: 26px;
        line-height: 30px;
    }

    /* Em uma coluna o card fica largo: uma foto de 300px de altura ocuparia
       quase a tela toda antes do texto. */
    .cv-op-foto {
        height: 240px;
    }

    .cv-op-info {
        padding: 22px 22px 24px;
    }

    .cv-op-icone svg.lucide {
        width: 72px;
        height: 72px;
    }

}

@media (max-width: 479px) {

    .cv-op-foto {
        height: 200px;
    }

    .cv-op-nome {
        font-size: 25px;
        line-height: 29px;
    }

    .cv-op-txt {
        font-size: 15px;
        line-height: 24px;
    }

}
