/* =========================================================================
   Tema do Classificados Joinville sobre o Bootstrap 5.3
   Mantém a identidade atual (verde #7DBA21 e laranja #F58936) com um visual
   mais limpo: fundo claro, cartões arredondados e tipografia Source Sans 3.
   Visual atual: "proposta 3" (topo verde da marca, conteúdo com bastante respiro).
   ========================================================================= */

:root {
  --cj-verde: #7dba21;
  --cj-verde-escuro: #5f9416;
  --cj-verde-claro: #eef7e2;
  --cj-laranja: #f58936;
  --cj-laranja-escuro: #dc6f1b;
  --cj-texto: #232323;
  --cj-texto-suave: #5c6670;
  --cj-fundo: #f4f6f8;
  --cj-borda: #e3e7eb;
  --cj-raio: .875rem;        /* painéis e cartões */
  --cj-raio-grande: 1.25rem; /* blocos de destaque (barra de categorias, chamadas) */
  --cj-raio-controle: .5rem;
  --cj-sombra: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .1);
  --cj-sombra-elevada: 0 10px 24px -6px rgba(16, 24, 40, .16);

  --bs-primary: var(--cj-verde);
  --bs-primary-rgb: 125, 186, 33;
  --bs-link-color: var(--cj-verde-escuro);
  --bs-link-color-rgb: 95, 148, 22;
  --bs-link-hover-color: #4a7410;
  --bs-link-hover-color-rgb: 74, 116, 16;
  --bs-body-font-family: "Source Sans 3", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --bs-body-color: var(--cj-texto);
  --bs-body-bg: var(--cj-fundo);
  --bs-border-color: var(--cj-borda);
  --bs-border-radius: .5rem;
  --bs-border-radius-lg: var(--cj-raio-controle);
}

body { font-size: 1rem; }
h1, h2, h3, h4, h5, h6 { font-weight: 700; color: var(--cj-texto); }
a { text-decoration: none; }
/* Links sem sublinhado também ao passar o mouse; a mudança de cor já indica que é clicável */
a:hover, a:focus, .btn-link, .btn-link:hover, .btn-link:focus { text-decoration: none; }
img { max-width: 100%; }

/* ---- Botões --------------------------------------------------------------- */
.btn { font-weight: 600; border-radius: .5rem; }
.btn-primary, .btn-theme {
  --bs-btn-color: #fff; --bs-btn-bg: var(--cj-verde); --bs-btn-border-color: var(--cj-verde);
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--cj-verde-escuro); --bs-btn-hover-border-color: var(--cj-verde-escuro);
  --bs-btn-active-bg: var(--cj-verde-escuro); --bs-btn-active-border-color: var(--cj-verde-escuro);
  --bs-btn-disabled-bg: var(--cj-verde); --bs-btn-disabled-border-color: var(--cj-verde);
}
.btn-warning, .btn-anunciar, .btn-theme-laranja, .btn-warning-destaque {
  --bs-btn-color: #fff; --bs-btn-bg: var(--cj-laranja); --bs-btn-border-color: var(--cj-laranja);
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--cj-laranja-escuro); --bs-btn-hover-border-color: var(--cj-laranja-escuro);
  --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--cj-laranja-escuro); --bs-btn-active-border-color: var(--cj-laranja-escuro);
}
.btn-anunciar { white-space: nowrap; padding: .5rem 1.1rem; box-shadow: 0 4px 12px -4px rgba(245, 137, 54, .6); }
.btn-dark { --bs-btn-bg: #3b434b; --bs-btn-border-color: #3b434b; }
.btn:hover { text-decoration: none; }


/* ---- Cabeçalho -------------------------------------------------------------- */

.topo { background: #fff; border-bottom: 1px solid var(--cj-borda); transition: box-shadow .2s ease; }
.topo--rolado { box-shadow: var(--cj-sombra-elevada); }
.topo .navbar { padding-top: .6rem; padding-bottom: .6rem; }
.topo .menu-categorias .nav-link { white-space: nowrap; font-weight: 600; color: var(--cj-texto); padding: .5rem .85rem; border-radius: .5rem; }
.topo .menu-categorias .nav-link:hover { background: var(--cj-verde-claro); color: var(--cj-verde-escuro); text-decoration: none; }
.topo .menu-categorias .nav-link.active { color: var(--cj-verde-escuro); background: var(--cj-verde-claro); }
.topo .dropdown-menu { border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); padding: .4rem; }
.topo .dropdown-item { border-radius: .4rem; padding: .45rem .7rem; }
.topo .dropdown-item:active { background: var(--cj-verde); }
.menu-area-usuario { min-width: 17rem; max-height: 75vh; overflow-y: auto; }
.menu-lateral-categorias .list-group-item.active { background: var(--cj-verde-claro); color: var(--cj-verde-escuro); border-color: transparent; font-weight: 600; }

/* ---- Estrutura das páginas --------------------------------------------------- */
#preloader, .uc-mobile-menu, .header-top { display: none !important; }
.painel-filtro, .section-padding, .gray, .pattern-bgs, .error-page, .main-content-area { background: transparent !important; }
.section-padding { padding: 1.5rem 0 3rem; }
.barra-navegacao {
  font-size: 1.6rem; font-weight: 700; margin: 1.5rem 0 1rem; padding: 0;
  color: var(--cj-texto); background: none; border: 0;
}

/* Painel de filtros das listagens */
.grid-filtro {
  background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio);
  box-shadow: var(--cj-sombra); padding: 1rem !important; margin-bottom: 1.5rem;
}
.grid-filtro form.search-form { display: flex; flex-wrap: wrap; gap: .5rem; }
.grid-filtro form.search-form > [class*="col-"] { float: none; padding: 0; flex: 1 1 9rem; max-width: none; width: auto; }
.grid-filtro .btn-primary { border-radius: .5rem !important; min-height: 2.75rem; padding: .5rem 1rem !important; }
.busca-avancada, .limpar-filtro { font-size: .9rem; font-weight: 600; cursor: pointer; margin-right: 1rem; }
.busca-avancada { color: var(--cj-laranja-escuro); }
.limpar-filtro { color: var(--cj-texto-suave); }

/* Cartões genéricos */
.painel-padrao, .grid-card-item, .sidebar-widget, .widget, .user-info-card, .ad-listing-meta {
  background: #fff; border: 1px solid var(--cj-borda) !important; border-radius: var(--cj-raio);
  box-shadow: var(--cj-sombra);
}
.painel-padrao { padding: 1.25rem; margin-bottom: 1rem; }
.painel-padrao h2 { font-size: 1.35rem; margin-bottom: .35rem; }

/* Destaques da página inicial */
.grid-card-item { padding: 1rem; margin-bottom: 1.5rem; height: auto !important; min-height: 0 !important; transition: transform .15s ease, box-shadow .15s ease; }
.grid-card-item:hover { transform: translateY(-3px); box-shadow: var(--cj-sombra-elevada); }
.grid-card-banner { margin: 1rem 0; text-align: center; }

/* Lista de anúncios (listagens) */
.ads-list-archive {
  background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio);
  box-shadow: var(--cj-sombra); margin-bottom: 1rem; overflow: hidden;
}
.ad-archive-img img { border-radius: 0; object-fit: cover; }
.ad-price, .ad-listing-price { color: var(--cj-verde-escuro) !important; font-weight: 700; }

/* Painel "Destaques" da barra lateral (listagens e páginas de detalhe).
   Lista compacta: miniatura de tamanho fixo à esquerda, título em até 2 linhas, cidade e preço.
   Os !important sobrepõem as regras do tema antigo (assets/css/legado.css). */
.card:has(> .card-header + div > .recent-ads) > .card-header .card-title::before,
.widget:has(.recent-ads) .widget-heading h4::before {
  content: "\f005"; font-family: "Font Awesome 6 Free"; font-weight: 900; color: var(--cj-laranja); margin-right: .5rem;
}
.card-body.recent-ads, .widget .recent-ads { padding: .25rem 0 !important; }
.recent-ads .recent-ads-list {
  margin: 0 !important; padding: .75rem 1rem !important; border: 0 !important;
  border-bottom: 1px solid var(--cj-borda) !important; background: transparent; transition: background-color .15s ease;
}
/* Sem linha embaixo do último anúncio: a separação para a próxima seção é a borda superior dela. */
.recent-ads .recent-ads-list:not(:has(~ .recent-ads-list)) { border-bottom: 0 !important; }
.recent-ads .recent-ads-list:hover { background: var(--cj-verde-claro); }

/* Quadro com fundo branco (como as dicas de segurança) e cantos arredondados que recortam o conteúdo. */
.card:has(> .card-header + div > .recent-ads), .widget:has(> .recent-ads) { background: #fff; overflow: hidden; }
.recent-ads { background: #fff; }

/* Publicidade dentro do quadro: o espaço só aparece depois que o Google preenche o anúncio.
   A altura fica zerada (e não display:none) para o AdSense conseguir medir a largura disponível. */
.recent-ads > div:has(ins.adsbygoogle) { margin: 0 !important; border-top: 1px solid var(--cj-borda); text-align: center; }
.recent-ads > div:has(ins.adsbygoogle) > p { margin: .75rem 0 !important; }
.recent-ads > div:has(ins.adsbygoogle):not(:has(ins[data-ad-status="filled"])) { height: 0; overflow: hidden; border-top: 0; }
.recent-ads .recent-ads-container { display: flex; align-items: flex-start; gap: .75rem; }
.recent-ads .recent-ads-list-image { display: block !important; flex: 0 0 88px; width: 88px !important; }
.recent-ads .recent-ads-list-image-inner { display: block !important; width: 88px !important; height: 66px !important; margin: 0 !important;
  border-radius: 0; overflow: hidden; background: var(--cj-fundo) !important; }
.recent-ads .recent-ads-list-image-inner img { width: 100% !important; height: 100% !important; max-height: none !important; object-fit: cover; border-radius: 0; }
.recent-ads .recent-ads-list-content { display: block !important; flex: 1 1 auto; min-width: 0; }
.recent-ads .recent-ads-list-title { margin: 0 0 .2rem !important; font-size: .92rem !important; line-height: 1.3; }
.recent-ads .recent-ads-list-title a { font-size: inherit !important; font-weight: 600 !important; color: var(--cj-texto) !important;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.recent-ads .recent-ads-list:hover .recent-ads-list-title a { color: var(--cj-verde-escuro) !important; }
.recent-ads .recent-ads-list-location { margin: 0 !important; line-height: 1.2; }
.recent-ads .recent-ads-list-location li a { font-size: .7rem !important; letter-spacing: .02em; color: var(--cj-texto-suave) !important; }
.recent-ads .recent-ads-list-price { display: block !important; margin-top: .2rem; font-size: .95rem !important; font-weight: 700 !important;
  color: var(--cj-verde-escuro) !important; white-space: nowrap; }
.ribbon { border-radius: .35rem; }

/* Barra lateral */
.sidebar .widget, .sidebar-widget { margin-bottom: 1rem; overflow: hidden; }
.widget-heading { padding: .9rem 1rem; border-bottom: 1px solid var(--cj-borda); }
.widget-heading .panel-title, .widget-heading h4 { font-size: 1.05rem; margin: 0; }
.widget-content { padding: 1rem; }

/* Favoritar */
.btn-salvar, .btn-salvo { background: transparent; border: 0; color: var(--cj-laranja); }
.favoritado { color: #e0245e; }

/* Contato do anunciante */
.btn-contact {
  display: block; width: 100%; margin-bottom: .5rem; padding: .7rem 1rem; font-weight: 600; line-height: 1.25 !important;
  background: #fff; color: var(--cj-texto); border: 1px solid var(--cj-borda); border-radius: .6rem; box-shadow: var(--cj-sombra);
}
.btn-contact:hover { border-color: var(--cj-verde); }
.btn-contact.contactEmail { background: var(--cj-laranja); border-color: var(--cj-laranja); color: #fff; }
.btn-contact.contactEmail:hover { background: var(--cj-laranja-escuro); }
.btn-contact.contactPhone { font-size: 1.3rem; }
.ad-price { border-radius: var(--cj-raio); }

/* Galeria de fotos (páginas de detalhe) */
.galeria-anuncio { background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); overflow: hidden; margin-bottom: 1rem; }
.galeria-anuncio .carousel-item { aspect-ratio: 4 / 3; background: #111; }
.galeria-anuncio .carousel-item img { width: 100%; height: 100%; object-fit: contain; cursor: zoom-in; }
.galeria-anuncio .contador-fotos { position: absolute; right: .75rem; bottom: .75rem; z-index: 2; background: rgba(0, 0, 0, .6); color: #fff; font-size: .85rem; padding: .15rem .6rem; border-radius: 1rem; }
.galeria-miniaturas { display: flex; gap: .5rem; overflow-x: auto; padding: .75rem; scrollbar-width: thin; }
.galeria-miniaturas button { flex: 0 0 auto; width: 84px; height: 64px; padding: 0; border: 2px solid transparent; border-radius: 0; overflow: hidden; background: none; opacity: .65; }
.galeria-miniaturas button.active, .galeria-miniaturas button:hover { border-color: var(--cj-verde); opacity: 1; }
.galeria-miniaturas img { width: 100%; height: 100%; object-fit: cover; }
.galeria-sem-foto { aspect-ratio: 4 / 3; }
.galeria-sem-foto .imagem-indisponivel { height: 100% !important; }
.modal-galeria .modal-content { background: #111; border: 0; }
.modal-galeria .carousel-item img { max-height: 85vh; width: 100%; object-fit: contain; }

/* Ações do anúncio (imprimir / denunciar) */
.ad-share { display: flex; gap: .75rem; margin-bottom: 1rem; }
.ad-share .painel-padrao { flex: 1; margin: 0; padding: .75rem; cursor: pointer; font-weight: 600; text-align: center; }
.ad-share .painel-padrao:hover { border-color: var(--cj-verde) !important; color: var(--cj-verde-escuro); }

/* Paginação */
.pagination { --bs-pagination-color: var(--cj-texto); --bs-pagination-active-bg: var(--cj-verde); --bs-pagination-active-border-color: var(--cj-verde); --bs-pagination-border-radius: .5rem; flex-wrap: wrap; gap: .25rem; }
.pagination .page-link { border-radius: .5rem !important; }

/* Modais */

/* ---- Página inicial ---------------------------------------------------------- */
.secao-titulo { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.secao-titulo h2 { font-size: 1.5rem; margin: 0; }
.secao-titulo p { margin: 0; color: var(--cj-texto-suave); }

.cartao-anuncio { display: flex; flex-direction: column; height: 100%; background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); overflow: hidden; color: var(--cj-texto); }
.cartao-anuncio:hover { text-decoration: none; color: var(--cj-texto); }
.cartao-anuncio-imagem { aspect-ratio: 4 / 3; background: #eef1f4; overflow: hidden; }
.cartao-anuncio-imagem img { width: 100%; height: 100%; object-fit: cover; }
.cartao-anuncio-corpo { display: flex; flex-direction: column; gap: .35rem; padding: .9rem 1rem 1rem; flex: 1; }
.cartao-anuncio-titulo { font-size: 1.02rem; font-weight: 700; line-height: 1.3; margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cartao-anuncio-local { font-size: .85rem; color: var(--cj-texto-suave); }
.cartao-anuncio-descricao { font-size: .92rem; color: var(--cj-texto-suave); display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.cartao-anuncio-preco { margin-top: auto; padding-top: .5rem; font-size: 1.15rem; font-weight: 700; color: var(--cj-verde-escuro); }
.cartao-anuncio-vaga { border-top: 4px solid var(--cj-verde); }
.cartao-publicidade { display: flex; align-items: center; justify-content: center; min-height: 250px; }

/* ---- Rodapé ------------------------------------------------------------------ */
.rodape { background: #1e2a17; color: #c9d2c1; padding: 3rem 0 1.5rem; margin-top: 3rem; }
.rodape-logo { filter: brightness(0) invert(1); opacity: .95; }
.rodape-titulo { color: #fff; font-size: 1rem; text-transform: uppercase; letter-spacing: .06em; margin-bottom: .9rem; }
.rodape-texto { font-size: .95rem; line-height: 1.6; }
.rodape a { color: #e7f3d6; }
.rodape a:hover { color: #fff; }
.rodape-links li { margin-bottom: .45rem; }
.redes-sociais-rodape a { display: inline-flex; align-items: center; justify-content: center; width: 2.4rem; height: 2.4rem; border-radius: 50%; background: rgba(255, 255, 255, .1); }
.redes-sociais-rodape a:hover { background: var(--cj-verde); text-decoration: none; }
.rodape-direitos { border-top: 1px solid rgba(255, 255, 255, .12); margin-top: 2rem; padding-top: 1.25rem; font-size: .875rem; text-align: center; }

@media (max-width: 575.98px) {
}
@media (max-width: 991.98px) {
  .offcanvas-lg .offcanvas-body { padding-top: 0; }
  .barra-navegacao { font-size: 1.35rem; margin-top: 1rem; }
}
@media print {
  .topo, .rodape { display: none !important; }

  /* Impressão (ex.: botão "Imprimir" do anúncio) sempre em fundo branco, para gastar menos tinta.
     Fotos e logotipos (<img>) continuam saindo normalmente. */
  :root { --bs-body-bg: #fff; --cj-fundo: #fff; }
  html, body { background: #fff !important; color: #000 !important; }
  *, *::before, *::after {
    background-color: transparent !important; background-image: none !important;
    box-shadow: none !important; text-shadow: none !important;
    print-color-adjust: economy; -webkit-print-color-adjust: economy;
  }
  body * { color: #000 !important; }
  a { text-decoration: none !important; }
  img { max-width: 100% !important; page-break-inside: avoid; break-inside: avoid; }
  img.imagem-indisponivel { display: none !important; } /* o aviso "Imagem indisponível" só gastaria tinta */
  h1, h2, h3 { page-break-after: avoid; break-after: avoid; }
}

/* ---- Compatibilidade com o layout antigo -------------------------------------
   No Bootstrap 3 as colunas flutuavam (float) mesmo fora de uma .row; várias
   páginas antigas dependem disso. Estas regras reproduzem esse comportamento
   apenas para colunas que não estão dentro de uma .row do Bootstrap 5. */
:not(.row):not(.d-flex):not(.input-group) > .col-auto,
:not(.row):not(.d-flex):not(.input-group) > .col-1,
:not(.row):not(.d-flex):not(.input-group) > .col-2,
:not(.row):not(.d-flex):not(.input-group) > .col-3,
:not(.row):not(.d-flex):not(.input-group) > .col-4,
:not(.row):not(.d-flex):not(.input-group) > .col-5,
:not(.row):not(.d-flex):not(.input-group) > .col-6,
:not(.row):not(.d-flex):not(.input-group) > .col-7,
:not(.row):not(.d-flex):not(.input-group) > .col-8,
:not(.row):not(.d-flex):not(.input-group) > .col-9,
:not(.row):not(.d-flex):not(.input-group) > .col-10,
:not(.row):not(.d-flex):not(.input-group) > .col-11,
:not(.row):not(.d-flex):not(.input-group) > .col-12,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-auto,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-1,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-2,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-3,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-4,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-5,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-6,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-7,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-8,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-9,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-10,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-11,
:not(.row):not(.d-flex):not(.input-group) > .col-sm-12,
:not(.row):not(.d-flex):not(.input-group) > .col-md-auto,
:not(.row):not(.d-flex):not(.input-group) > .col-md-1,
:not(.row):not(.d-flex):not(.input-group) > .col-md-2,
:not(.row):not(.d-flex):not(.input-group) > .col-md-3,
:not(.row):not(.d-flex):not(.input-group) > .col-md-4,
:not(.row):not(.d-flex):not(.input-group) > .col-md-5,
:not(.row):not(.d-flex):not(.input-group) > .col-md-6,
:not(.row):not(.d-flex):not(.input-group) > .col-md-7,
:not(.row):not(.d-flex):not(.input-group) > .col-md-8,
:not(.row):not(.d-flex):not(.input-group) > .col-md-9,
:not(.row):not(.d-flex):not(.input-group) > .col-md-10,
:not(.row):not(.d-flex):not(.input-group) > .col-md-11,
:not(.row):not(.d-flex):not(.input-group) > .col-md-12,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-auto,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-1,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-2,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-3,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-4,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-5,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-6,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-7,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-8,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-9,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-10,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-11,
:not(.row):not(.d-flex):not(.input-group) > .col-lg-12,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-auto,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-1,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-2,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-3,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-4,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-5,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-6,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-7,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-8,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-9,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-10,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-11,
:not(.row):not(.d-flex):not(.input-group) > .col-xl-12,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-auto,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-1,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-2,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-3,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-4,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-5,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-6,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-7,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-8,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-9,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-10,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-11,
:not(.row):not(.d-flex):not(.input-group) > .col-xxl-12 { float: left; }
:not(.row):has(> .col-auto)::after,
:not(.row):has(> .col-1)::after,
:not(.row):has(> .col-2)::after,
:not(.row):has(> .col-3)::after,
:not(.row):has(> .col-4)::after,
:not(.row):has(> .col-5)::after,
:not(.row):has(> .col-6)::after,
:not(.row):has(> .col-7)::after,
:not(.row):has(> .col-8)::after,
:not(.row):has(> .col-9)::after,
:not(.row):has(> .col-10)::after,
:not(.row):has(> .col-11)::after,
:not(.row):has(> .col-12)::after,
:not(.row):has(> .col-sm-auto)::after,
:not(.row):has(> .col-sm-1)::after,
:not(.row):has(> .col-sm-2)::after,
:not(.row):has(> .col-sm-3)::after,
:not(.row):has(> .col-sm-4)::after,
:not(.row):has(> .col-sm-5)::after,
:not(.row):has(> .col-sm-6)::after,
:not(.row):has(> .col-sm-7)::after,
:not(.row):has(> .col-sm-8)::after,
:not(.row):has(> .col-sm-9)::after,
:not(.row):has(> .col-sm-10)::after,
:not(.row):has(> .col-sm-11)::after,
:not(.row):has(> .col-sm-12)::after,
:not(.row):has(> .col-md-auto)::after,
:not(.row):has(> .col-md-1)::after,
:not(.row):has(> .col-md-2)::after,
:not(.row):has(> .col-md-3)::after,
:not(.row):has(> .col-md-4)::after,
:not(.row):has(> .col-md-5)::after,
:not(.row):has(> .col-md-6)::after,
:not(.row):has(> .col-md-7)::after,
:not(.row):has(> .col-md-8)::after,
:not(.row):has(> .col-md-9)::after,
:not(.row):has(> .col-md-10)::after,
:not(.row):has(> .col-md-11)::after,
:not(.row):has(> .col-md-12)::after,
:not(.row):has(> .col-lg-auto)::after,
:not(.row):has(> .col-lg-1)::after,
:not(.row):has(> .col-lg-2)::after,
:not(.row):has(> .col-lg-3)::after,
:not(.row):has(> .col-lg-4)::after,
:not(.row):has(> .col-lg-5)::after,
:not(.row):has(> .col-lg-6)::after,
:not(.row):has(> .col-lg-7)::after,
:not(.row):has(> .col-lg-8)::after,
:not(.row):has(> .col-lg-9)::after,
:not(.row):has(> .col-lg-10)::after,
:not(.row):has(> .col-lg-11)::after,
:not(.row):has(> .col-lg-12)::after,
:not(.row):has(> .col-xl-auto)::after,
:not(.row):has(> .col-xl-1)::after,
:not(.row):has(> .col-xl-2)::after,
:not(.row):has(> .col-xl-3)::after,
:not(.row):has(> .col-xl-4)::after,
:not(.row):has(> .col-xl-5)::after,
:not(.row):has(> .col-xl-6)::after,
:not(.row):has(> .col-xl-7)::after,
:not(.row):has(> .col-xl-8)::after,
:not(.row):has(> .col-xl-9)::after,
:not(.row):has(> .col-xl-10)::after,
:not(.row):has(> .col-xl-11)::after,
:not(.row):has(> .col-xl-12)::after,
:not(.row):has(> .col-xxl-auto)::after,
:not(.row):has(> .col-xxl-1)::after,
:not(.row):has(> .col-xxl-2)::after,
:not(.row):has(> .col-xxl-3)::after,
:not(.row):has(> .col-xxl-4)::after,
:not(.row):has(> .col-xxl-5)::after,
:not(.row):has(> .col-xxl-6)::after,
:not(.row):has(> .col-xxl-7)::after,
:not(.row):has(> .col-xxl-8)::after,
:not(.row):has(> .col-xxl-9)::after,
:not(.row):has(> .col-xxl-10)::after,
:not(.row):has(> .col-xxl-11)::after,
:not(.row):has(> .col-xxl-12)::after { content: ""; display: table; clear: both; }
.clearfix::after { content: ""; display: table; clear: both; }

/* ---------- Compartilhar anúncio ---------- */
.compartilhar-anuncio { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 1.25rem 0 .5rem; }
.compartilhar-rotulo { font-weight: 600; color: var(--bs-secondary-color); margin-right: .25rem; }
.btn-compartilhar { display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; border-radius: 50%; border: 0; color: #fff; font-size: 1.1rem; text-decoration: none; transition: transform .15s ease, opacity .15s ease; }
.btn-compartilhar:hover, .btn-compartilhar:focus-visible { color: #fff; transform: translateY(-2px); opacity: .9; }
.compartilhar-whatsapp { background: #25d366; }
.compartilhar-facebook { background: #1877f2; }
.compartilhar-x { background: #111; }
.compartilhar-copiar { background: var(--cj-verde); }
/* O CSS legado força verde (!important) nos ícones de .painel-padrao; nos botões o ícone fica branco. */
.compartilhar-anuncio .btn-compartilhar i { color: #fff !important; font-size: 1.1rem; display: inline-block; margin: 0; padding: 0; line-height: 1; vertical-align: 0; } /* o legado (.painel-padrao i) dava 5px de recuo à direita e tirava o ícone do centro */

/* ---- Área do usuário (fase 3) ------------------------------------------------ */
.area-usuario { padding-top: 1.5rem; padding-bottom: 2.5rem; }
.min-w-0 { min-width: 0; }

.cartao-perfil { border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); }
.cartao-perfil-foto { width: 3.5rem; height: 3.5rem; flex: 0 0 3.5rem; border-radius: 50%; object-fit: cover; }
.cartao-perfil-sem-foto { display: inline-flex; align-items: center; justify-content: center; background: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-size: 1.4rem; }
.menu-area-usuario-lateral .list-group { border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); }
.menu-area-usuario-lateral .list-group-item { border-color: var(--cj-borda); padding: .7rem 1rem; }
.menu-area-usuario-lateral .list-group-item.active { background: var(--cj-verde); border-color: var(--cj-verde); }
.menu-area-usuario-lateral .list-group-item.active .badge { color: var(--cj-verde-escuro) !important; }

.cartao-categoria { display: flex; flex-direction: column; align-items: center; gap: .35rem; height: 100%; padding: 1.25rem .75rem;
  background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra);
  text-align: center; text-decoration: none; color: var(--cj-texto); transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease; }
.cartao-categoria:hover, .cartao-categoria:focus-visible { transform: translateY(-2px); box-shadow: var(--cj-sombra-elevada); border-color: var(--cj-verde); color: var(--cj-texto); }
.cartao-categoria-icone { display: inline-flex; align-items: center; justify-content: center; width: 3.25rem; height: 3.25rem; border-radius: 50%;
  background: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-size: 1.35rem; margin-bottom: .25rem; }
.cartao-categoria-nome { font-weight: 600; line-height: 1.25; }
.cartao-categoria-quantidade { font-size: .85rem; color: var(--cj-texto-suave); }

/* ---- Formulários ----------------------------------------------------------------
   Campos de texto, listas (select), áreas de texto, caixas de marcação, botões de opção,
   chaves (switch), envio de arquivo e grupos (input-group) com o mesmo visual em todo o site:
   cantos suaves, borda clara que escurece ao passar o mouse e anel verde ao focar. */
:root {
  --cj-campo-borda: #dde2e7;
  --cj-campo-borda-hover: #c3cbd3;
  --cj-campo-fundo-desativado: #f4f6f8;
  --cj-campo-raio: .7rem;
  --cj-campo-anel: 0 0 0 .25rem rgba(125, 186, 33, .18);
  --cj-campo-anel-erro: 0 0 0 .25rem rgba(220, 53, 69, .15);
  --bs-form-invalid-border-color: #d9485a;
  --bs-form-valid-border-color: var(--cj-verde);
}
* { accent-color: var(--cj-verde); } /* controles nativos (barra de rolagem, range, etc.) */

.form-label, .col-form-label { margin-bottom: .35rem; color: var(--cj-texto); font-size: .92rem; font-weight: 600; }
.form-text { margin-top: .35rem; color: var(--cj-texto-suave); font-size: .85rem; }

.form-control, .form-select {
  min-height: 2.75rem;
  padding: .6rem .95rem;
  border: 1px solid var(--cj-campo-borda);
  border-radius: var(--cj-campo-raio);
  background-color: #fff;
  color: var(--cj-texto);
  font-size: 1rem;
  line-height: 1.45;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .04);
  transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.form-control::placeholder { color: #9aa3ad; opacity: 1; }
.form-control:hover:not(:disabled):not([readonly]):not(:focus),
.form-select:hover:not(:disabled):not(:focus) { border-color: var(--cj-campo-borda-hover); }
.form-control:focus, .form-select:focus { border-color: var(--cj-verde); background-color: #fff; box-shadow: var(--cj-campo-anel); outline: 0; }
.form-control:disabled, .form-control[readonly], .form-select:disabled {
  background-color: var(--cj-campo-fundo-desativado);
  color: var(--cj-texto-suave);
  box-shadow: none;
  cursor: not-allowed;
}
.form-control-sm, .form-select-sm { min-height: 2.25rem; padding: .35rem .7rem; font-size: .9rem; border-radius: .55rem; }
.form-control-lg, .form-select-lg { min-height: 3.25rem; padding: .75rem 1.1rem; font-size: 1.1rem; }

/* Lista: seta mais fina, em cinza, com espaço para o texto não encostar */
.form-select {
  padding-right: 2.6rem;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%235c6670' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.8' d='m4 6 4 4 4-4'/%3e%3c/svg%3e");
  background-position: right .9rem center;
  background-size: 14px 14px;
  cursor: pointer;
}
.form-select[multiple], .form-select[size]:not([size="1"]) { padding-right: .95rem; background-image: none; }

/* Área de texto */
textarea.form-control { min-height: 8rem; line-height: 1.6; resize: vertical; }

/* Envio de arquivo: botão "Escolher arquivo" no padrão do site */
.form-control[type="file"] { padding: .4rem; cursor: pointer; }
.form-control::file-selector-button {
  margin: 0 .85rem 0 0;
  padding: .45rem .95rem;
  border: 0;
  border-radius: .5rem;
  background: var(--cj-verde-claro);
  color: var(--cj-verde-escuro);
  font-weight: 600;
  transition: background-color .15s ease;
}
.form-control:hover:not(:disabled)::file-selector-button { background: #e1f0cc; }

/* Caixas de marcação, botões de opção e chaves */
input[type="checkbox"], input[type="radio"] { width: 1.15em; height: 1.15em; margin-right: .45rem; vertical-align: -.2em; cursor: pointer; }
.form-check { min-height: 1.6rem; }
.form-check-label { cursor: pointer; }
.form-check-input { margin-top: .2em; border: 1.5px solid var(--cj-campo-borda-hover); background-color: #fff; transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease; }
.form-check-input[type="checkbox"] { border-radius: .35em; }
.form-check-input:hover:not(:disabled) { border-color: var(--cj-verde); }
.form-check-input:focus { border-color: var(--cj-verde); box-shadow: var(--cj-campo-anel); }
.form-check-input:checked, .form-check-input:indeterminate { background-color: var(--cj-verde); border-color: var(--cj-verde); }
.form-switch .form-check-input { width: 2.4em; height: 1.3em; margin-right: .5rem; border-radius: 2em; }
.form-switch .form-check-input:focus:not(:checked) { --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%237dba21'/%3e%3c/svg%3e"); }

/* Grupos (campo + ícone/botão), como o "mostrar senha" */
.input-group > .form-control, .input-group > .form-select { box-shadow: none; }
.input-group:focus-within > .form-control, .input-group:focus-within > .input-group-text, .input-group:focus-within > .botao-mostrar-senha { border-color: var(--cj-verde); }
.input-group:focus-within { border-radius: var(--cj-campo-raio); box-shadow: var(--cj-campo-anel); }
.input-group > .form-control:focus { box-shadow: none; }
.input-group-text { border: 1px solid var(--cj-campo-borda); border-radius: var(--cj-campo-raio); background: var(--cj-campo-fundo-desativado); color: var(--cj-texto-suave); }
.botao-mostrar-senha { border: 1px solid var(--cj-campo-borda); border-left: 0; border-radius: 0 var(--cj-campo-raio) var(--cj-campo-raio) 0; background: #fff; color: var(--cj-texto-suave); }
.botao-mostrar-senha:hover, .botao-mostrar-senha:focus-visible { background: var(--cj-verde-claro); color: var(--cj-verde-escuro); border-color: var(--cj-campo-borda); }

/* Validação */
.form-control.is-invalid, .form-select.is-invalid, .was-validated .form-control:invalid { border-color: var(--bs-form-invalid-border-color); }
.form-control.is-invalid:focus, .form-select.is-invalid:focus { box-shadow: var(--cj-campo-anel-erro); }
.input-group:has(.is-invalid):focus-within { box-shadow: var(--cj-campo-anel-erro); }
.input-group:has(.is-invalid) .botao-mostrar-senha { border-color: var(--bs-form-invalid-border-color); }
.invalid-feedback { font-size: .85rem; font-weight: 500; }
.invalid-feedback.validacao { font-size: .85rem; }

/* Seletor de foto com pré-visualização (layout/funcoes_formulario.php + assets/js/seletor-fotos.js) */
.seletor-foto { position: relative; display: flex; align-items: center; justify-content: center; width: 100%; aspect-ratio: 4 / 3;
  margin: 0; border: 2px dashed var(--cj-borda); border-radius: var(--cj-raio-controle); background: var(--cj-fundo);
  color: var(--cj-texto-suave); cursor: pointer; overflow: hidden; transition: border-color .15s ease, background .15s ease; }
.seletor-foto:hover, .seletor-foto:focus-within { border-color: var(--cj-verde); background: var(--cj-verde-claro); color: var(--cj-verde-escuro); }
.seletor-foto.com-foto { border-style: solid; }
.seletor-foto-vazio { display: flex; flex-direction: column; align-items: center; gap: .35rem; font-size: .9rem; text-align: center; }
.seletor-foto-vazio i { font-size: 1.5rem; }
.seletor-foto-previa { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.seletor-foto-remover { position: absolute; top: .4rem; right: .4rem; width: 2rem; height: 2rem; border: 0; border-radius: 50%;
  background: rgba(0, 0, 0, .6); color: #fff; display: inline-flex; align-items: center; justify-content: center; }
.seletor-foto-remover:hover { background: #dc3545; }
.seletor-foto [hidden] { display: none !important; }
.seletor-foto:has(input:focus-visible) { outline: 3px solid rgba(125, 186, 33, .45); outline-offset: 2px; }

/* Listas em sanfona (central de ajuda, mensagens e currículos) */
.lista-sanfona .card { border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); margin-bottom: .5rem; overflow: hidden; box-shadow: none; }
.lista-sanfona .card-header { background: #fff; border: 0; padding: 0; }
.lista-sanfona .card-header .card-title { font-size: 1rem; font-weight: 600; }
.lista-sanfona .card-header a { display: flex; align-items: center; gap: .5rem; padding: .85rem 1rem; color: var(--cj-texto); text-decoration: none; }
.lista-sanfona .card-header a::after { content: "\f078"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .8rem; margin-left: auto; transition: transform .2s ease; }
.lista-sanfona .card-header a:not(.collapsed)::after { transform: rotate(180deg); }
.lista-sanfona .card-header a:hover { background: var(--cj-verde-claro); }

/* Abas da área do usuário (meus dados e currículo) */
.abas-area-usuario { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: thin; margin-bottom: 1.25rem; border-bottom-color: var(--cj-borda); }
.abas-area-usuario .nav-link { white-space: nowrap; color: var(--cj-texto-suave); font-weight: 600; border: 0; border-bottom: 3px solid transparent; }
.abas-area-usuario .nav-link br { display: none; }
.abas-area-usuario .nav-link:hover { color: var(--cj-verde-escuro); border-bottom-color: var(--cj-verde-claro); }
.abas-area-usuario .nav-link.active { color: var(--cj-verde-escuro); background: transparent; border-bottom-color: var(--cj-verde); }

/* ---- Ajustes para telas pequenas ----------------------------------------------- */
/* E-mails longos no rodapé e blocos de publicidade de largura fixa (970/728 px) não podem
   alargar a página no celular. */
.rodape a[href^="mailto:"] { overflow-wrap: anywhere; }
ins.adsbygoogle { max-width: 100% !important; overflow: hidden; }
/* Tabelas largas (páginas de administração) rolam na horizontal em vez de alargar a página. */
@media (max-width: 767.98px) {
  table.table { display: block; overflow-x: auto; }
}

/* Cabeçalho dos quadros da barra lateral ("Destaques") */
.card:has(> .card-header + div > .recent-ads) > .card-header { background: #fff; padding: .85rem 1rem; border-bottom: 1px solid var(--cj-borda); }
.card:has(> .card-header + div > .recent-ads) > .card-header .card-title { font-size: 1.05rem; font-weight: 700; }
.card:has(> .card-header + div > .recent-ads) > .card-header .card-title a { color: var(--cj-texto); text-decoration: none; }

/* Dicas de segurança (dicas-seguranca.php) */
.dicas-seguranca { margin: 1rem 0; }
.dicas-seguranca .widget-heading h4::before { content: "\f3ed"; font-family: "Font Awesome 6 Free"; font-weight: 900; color: var(--cj-verde); margin-right: .5rem; }
.dicas-seguranca-lista { list-style: none; counter-reset: dica; margin: 0; padding: .5rem 1rem 1rem; }
.dicas-seguranca-lista li { counter-increment: dica; position: relative; padding: .55rem 0 .55rem 2.1rem; border-bottom: 1px dashed var(--cj-borda); font-size: .88rem; line-height: 1.35; }
.dicas-seguranca-lista li:last-child { border-bottom: 0; }
.dicas-seguranca-lista li::before { content: counter(dica); position: absolute; left: 0; top: .6rem; width: 1.5rem; height: 1.5rem; border-radius: 50%;
  background: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-weight: 700; font-size: .8rem; display: flex; align-items: center; justify-content: center; }
.dicas-seguranca-lista strong { display: block; color: var(--cj-texto); }
.dicas-seguranca-lista span { color: var(--cj-texto-suave); }
.dicas-seguranca > .widget-heading { padding: .85rem 1rem !important; border-bottom: 1px solid var(--cj-borda); background: #fff; }
.dicas-seguranca > .widget-heading h4 { font-size: 1.05rem; font-weight: 700; }
/* Nas listagens as dicas ficam dentro do quadro "Destaques": viram uma seção dele, sem borda própria. */
.card .dicas-seguranca { margin: 0; border: 0 !important; border-top: 1px solid var(--cj-borda) !important; border-radius: 0; box-shadow: none; }

/* Aviso no lugar de fotos que não carregaram (assets/js/site.js) */
img.imagem-indisponivel { object-fit: cover; background: #eef1f4; }

/* ---- Paginação das listagens (paginacao.php) ------------------------------------ */
.paginacao { margin: 1.5rem 0 .5rem; text-align: center; }
.paginacao .pagination { display: inline-flex; flex-wrap: wrap; justify-content: center; gap: .4rem; margin: 0 0 .75rem; padding: 0;
  --bs-pagination-border-radius: .65rem; }
.paginacao .page-item .page-link { display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  min-width: 2.85rem; height: 2.85rem; padding: 0 .9rem; border: 1px solid var(--cj-borda); border-radius: .65rem !important;
  background: #fff; color: var(--cj-texto); font-size: 1rem; font-weight: 600; box-shadow: var(--cj-sombra);
  transition: background-color .15s ease, color .15s ease, border-color .15s ease, transform .15s ease; }
.paginacao a.page-link:hover, .paginacao a.page-link:focus-visible { background: var(--cj-verde-claro); border-color: var(--cj-verde); color: var(--cj-verde-escuro); transform: translateY(-1px); }
.paginacao .page-item.active .page-link { background: var(--cj-verde); border-color: var(--cj-verde); color: #fff; }
.paginacao .page-item.disabled .page-link { background: transparent; color: #b5bcc4; box-shadow: none; }
.paginacao .page-link i { font-size: .85rem; }
.paginacao-resumo { font-size: .9rem; color: var(--cj-texto-suave); margin: 0; }
.paginacao-resumo strong { color: var(--cj-texto); }
/* "Anterior/Próxima" por extenso só em telas largas; no celular somem também os botões de primeira/última */
.paginacao-texto { display: none; }
@media (min-width: 1200px) { .paginacao-texto { display: inline; } }
@media (max-width: 575.98px) {
  .paginacao .page-item .page-link { min-width: 2.6rem; height: 2.6rem; padding: 0 .7rem; }
  .paginacao-extremo { display: none; }
}

/* ---- Chamada para imobiliárias e corretores (layout/chamada_imobiliarias.php) ------------ */
.chamada-imobiliarias { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem 1.75rem; margin: 2.5rem 0;
  padding: 1.75rem; background: linear-gradient(135deg, #fff 0%, var(--cj-verde-claro) 100%);
  border: 1px solid var(--cj-borda); border-left: 5px solid var(--cj-verde); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); }
.chamada-imobiliarias-icone { flex: 0 0 auto; display: flex; align-items: center; justify-content: center; width: 4rem; height: 4rem;
  border-radius: 50%; background: var(--cj-verde); color: #fff; font-size: 1.6rem; }
.chamada-imobiliarias-conteudo { flex: 1 1 22rem; min-width: 0; }
.chamada-imobiliarias-selo { display: inline-block; margin-bottom: .35rem; padding: .15rem .6rem; border-radius: 1rem;
  background: #fff; color: var(--cj-verde-escuro); font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.chamada-imobiliarias h2 { font-size: clamp(1.3rem, 2.2vw, 1.6rem); font-weight: 700; margin: 0 0 .35rem; }
.chamada-imobiliarias h2 strong { color: var(--cj-laranja); }
.chamada-imobiliarias p { color: var(--cj-texto-suave); margin-bottom: .6rem; }
.chamada-imobiliarias-passos { margin: 0; padding-left: 1.2rem; color: var(--cj-texto); }
.chamada-imobiliarias-passos li { margin-bottom: .2rem; }
.chamada-imobiliarias-acoes { flex: 0 0 auto; display: flex; flex-direction: column; gap: .6rem; min-width: 13rem; }
.chamada-imobiliarias-acoes .btn { padding: .7rem 1.2rem; font-weight: 600; }
@media (max-width: 767.98px) {
  .chamada-imobiliarias { padding: 1.25rem; }
  .chamada-imobiliarias-acoes { flex: 1 1 100%; }
}
.chamada-imobiliarias-passos strong { overflow-wrap: anywhere; }

/* ---- Convite "Destaque seu anúncio!" no meio das listagens (layout/chamada_destaque_anuncio.php) ---- */
.chamada-destaque { clear: both; display: flex; align-items: center; flex-wrap: wrap; gap: 1rem 1.25rem; margin: 1.5rem 0;
  padding: 1.25rem 1.5rem; background: linear-gradient(135deg, #fff7f0 0%, #fff 70%);
  border: 1px solid #fde1cc; border-left: 5px solid var(--cj-laranja); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); }
.chamada-destaque-icone { flex: 0 0 auto; display: flex; align-items: center; justify-content: center; width: 3.25rem; height: 3.25rem;
  border-radius: 50%; background: var(--cj-laranja); color: #fff; font-size: 1.35rem; box-shadow: 0 6px 14px -6px rgba(245, 137, 54, .7); }
.chamada-destaque-texto { flex: 1 1 16rem; min-width: 0; }
.chamada-destaque h3 { font-size: 1.2rem; font-weight: 700; margin: 0 0 .2rem; color: var(--cj-texto); }
.chamada-destaque p { margin: 0; color: var(--cj-texto-suave); font-size: .95rem; line-height: 1.4; }
.chamada-destaque-botao { flex: 0 0 auto; padding: .65rem 1.25rem; font-weight: 600; white-space: nowrap; }
@media (max-width: 575.98px) {
  .chamada-destaque { padding: 1rem; }
  .chamada-destaque-botao { flex: 1 1 100%; }
}

/* ---- Cantos arredondados ----------------------------------------------------------------
   Componentes do Bootstrap seguem o mesmo raio dos painéis (--cj-raio). */
.card, .alert, .list-group, .modal-content, .dropdown-menu, .accordion {
  --bs-card-border-radius: var(--cj-raio); --bs-card-inner-border-radius: calc(var(--cj-raio) - 1px);
  --bs-alert-border-radius: var(--cj-raio); --bs-list-group-border-radius: var(--cj-raio);
  --bs-modal-border-radius: var(--cj-raio-grande); --bs-modal-inner-border-radius: calc(var(--cj-raio-grande) - 1px);
  --bs-dropdown-border-radius: var(--cj-raio); --bs-accordion-border-radius: var(--cj-raio);
  --bs-accordion-inner-border-radius: calc(var(--cj-raio) - 1px);
}

/*
 * Passar o mouse sobre um anúncio amplia só a foto; o painel fica parado.
 * A moldura da foto corta o excesso (overflow: hidden) para a imagem não invadir o texto.
 */
:root {
  --cj-zoom-foto: 1.04;                                  /* ampliação discreta */
  --cj-zoom-duracao: .9s;                                /* lenta o bastante para não "saltar" */
  --cj-zoom-curva: cubic-bezier(.25, .46, .45, .94);     /* começa e termina devagar */
}
.ad-archive-img, .cartao-anuncio-imagem, .recent-ads .recent-ads-list-image-inner { overflow: hidden; }
.ad-archive-img a img, .cartao-anuncio-imagem img, .recent-ads .recent-ads-list-image-inner img, .favorito-foto img {
  transition: transform var(--cj-zoom-duracao) var(--cj-zoom-curva);
  backface-visibility: hidden; /* evita tremido e serrilhado durante a animação */
}
.ad-archive-img a:hover img { transform: none; } /* anula o efeito antigo do legado.css, que só valia sobre a foto */
.ads-list-archive:hover .ad-archive-img img,
.cartao-anuncio:hover .cartao-anuncio-imagem img,
.recent-ads .recent-ads-list:hover .recent-ads-list-image-inner img,
.favorito:hover .favorito-foto img { transform: scale(var(--cj-zoom-foto)); }
@media (prefers-reduced-motion: reduce) {
  .ad-archive-img a img, .cartao-anuncio-imagem img, .recent-ads .recent-ads-list-image-inner img, .favorito-foto img { transition: none; }
}

/*
 * Cartão da listagem: a coluna da foto acompanha a altura da coluna de texto.
 * O legado usa colunas flutuantes e foto com altura fixa (212px), o que deixava um vão
 * branco abaixo da foto quando o texto ao lado era mais alto (título longo, preço grande,
 * telas estreitas). Com flexbox as duas colunas têm a mesma altura e a foto cobre a sua.
 */
.ads-list-archive { display: flex; flex-wrap: wrap; }
.ads-list-archive > [class*="col-"]:has(> .ad-archive-img) { display: flex; }
.ad-archive-img { flex: 1 1 auto; }
.ad-archive-img > a { position: relative; display: block; height: 100%; min-height: 212px; }
.ad-archive-img > a > img {
  position: absolute; inset: 0;
  width: 100%; height: 100% !important; /* vence a altura fixa escrita no HTML */
}
/* O aviso "Imagem indisponível" aparece inteiro, sem cortar o texto; o fundo cinza completa a moldura. */
.ad-archive-img > a > img.imagem-indisponivel { object-fit: contain; }
@media (max-width: 575.98px) {
  /* No celular a foto fica em cima e o texto embaixo, cada um na largura toda. */
  .ads-list-archive > [class*="col-"] { flex: 0 0 100%; }
}

/* ==========================================================================
 * Página de detalhes do anúncio (arquivos *_det.php)
 * Coluna principal: .simples (título, galeria, características, descrição).
 * Coluna lateral: .sidebar (preço, contato, anunciante, destaques).
 * ========================================================================== */

/* Título: nome do anúncio, endereço e resumo (quartos, vagas, área) */
.simples > .painel-padrao:first-child h2:first-child { font-size: 1.45rem; font-weight: 700; line-height: 1.3; margin-bottom: .5rem; }
.simples > .painel-padrao:first-child h2 + h2 { display: flex; align-items: center; gap: .4rem; color: var(--cj-texto-suave); font-weight: 500 !important; margin-bottom: .75rem; }
.simples > .painel-padrao:first-child h2 + h2::before { content: "\f3c5"; font: var(--fa-font-solid); color: var(--cj-verde); }
.simples > .painel-padrao:first-child table { width: 100%; }
.simples > .painel-padrao:first-child table td { font-size: .9rem !important; color: var(--cj-texto-suave); padding-top: .65rem; border-top: 1px solid var(--cj-borda); }
.simples > .painel-padrao:first-child table td img { width: 18px; height: auto; margin: 0 .2rem 0 .1rem; opacity: .75; vertical-align: -3px; }

/* Ficha técnica: cada dado vira uma "pastilha" com o rótulo em cima e o valor embaixo */
.simples .short-features {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .6rem;
  margin: 0 0 1.75rem; overflow: visible;
}
.simples .short-features > div {
  width: auto; max-width: none; padding: .6rem .8rem !important;
  background: var(--cj-fundo); border-left: 3px solid var(--cj-verde);
  font-size: .8rem; line-height: 1.35; color: var(--cj-texto-suave);
}
.simples .short-features strong { display: block; font-size: 1.05rem; color: var(--cj-texto); }

/* Títulos das seções (Características, Observações, Vídeo…) com um traço verde */
.simples .heading-panel { margin-bottom: .75rem; border-bottom: 1px solid var(--cj-borda); }
.simples .heading-panel h3, .simples .heading-panel h3.main-title {
  display: inline-block; font-size: 1.15rem; line-height: 1.3; margin: 0 0 -1px; padding-bottom: .55rem;
  border-bottom: 3px solid var(--cj-verde);
}
.simples .desc-points { margin-bottom: 1.75rem; }
.simples .desc-points .row > div { padding-block: .2rem; }
.simples .desc-points ul { list-style: none; padding-left: 0; } /* fica só o número em círculo do legado, sem a bolinha */
.simples .specification p { line-height: 1.65; }

/* Lateral: preço e botões de contato formam um único cartão */
.sidebar .ad-listing-price { margin: 0; }
.sidebar .ad-listing-price p { font-size: 1.75rem; font-weight: 700; padding: 1.1rem 1rem; overflow-wrap: anywhere; line-height: 1.2; }
.sidebar .contact {
  display: grid; gap: .5rem; padding: .75rem; margin-bottom: 1rem;
  background: #fff; border: 1px solid var(--cj-borda); border-top: 0; box-shadow: var(--cj-sombra);
}
.sidebar .contact .btn-contact { margin: 0; border-radius: var(--cj-raio-controle); box-shadow: none; }

/* Lateral: dados do anunciante */
.sidebar .user-contact-info { background: #fff; border: 1px solid var(--cj-borda); box-shadow: var(--cj-sombra); margin-bottom: 1rem; }
.sidebar .user-info-card { display: flex; align-items: center; gap: .9rem; padding: 1rem; }
.sidebar .user-info-card > .clearfix { display: none; }
.sidebar .user-info-card .user-photo { flex: 0 0 76px; width: 76px; padding: 0; }
.sidebar .user-info-card .user-photo img { width: 76px; height: 76px; object-fit: contain; border: 1px solid var(--cj-borda); background: #fff; }
.sidebar .user-info-card .user-information { flex: 1 1 auto; width: auto; min-width: 0; padding: 0; }
.sidebar .user-name { display: block; font-size: 1.05rem; line-height: 1.3; }
.sidebar .user-name::after { content: none; }
.sidebar .item-date { font-size: .85rem; color: var(--cj-texto-suave); margin-top: .2rem; }
.sidebar .ad-listing-meta { border-top: 1px solid var(--cj-borda); }
.sidebar .ad-listing-meta ul { list-style: none; margin: 0; padding: 0; } /* sem as bolinhas que apareciam fora do cartão */
.sidebar .ad-listing-meta ul li { display: flex; justify-content: space-between; gap: 1rem; padding: .6rem 1rem; font-size: .9rem; color: var(--cj-texto-suave); }
.sidebar .ad-listing-meta ul li span { float: none; text-align: right; color: var(--cj-texto); }

/* Mapa com a localização aproximada (imóveis e empresas) */
.localizacao-anuncio { margin: 0 auto 2rem; } /* centralizado como os demais blocos da página */
.localizacao-anuncio .painel-padrao { padding: 0; overflow: hidden; }
.localizacao-anuncio .localizacao-anuncio-titulo { display: flex; align-items: center; gap: .5rem; margin: 0; padding: .9rem 1.25rem; font-size: 1.15rem; border-bottom: 1px solid var(--cj-borda); }
.localizacao-anuncio-titulo i { color: var(--cj-verde); }
.localizacao-anuncio #map { display: block; background: var(--cj-fundo); }
.bg-white:has(> .col-12 > .localizacao-anuncio) { background-color: transparent !important; }

/* Título dos quadros da lateral (ex.: Destaques): o legado zerava o espaçamento interno */
.sidebar .widget > .widget-heading { padding: .85rem 1rem; }

/* ==========================================================================
 * Painel de filtros das listagens (todas as categorias)
 * O título "Categoria - Pág N" saiu da tela (continua para leitores de tela e buscadores),
 * então o painel ganha espaço próprio no topo.
 * ========================================================================== */
.painel-filtro:has(> .container:first-child .visually-hidden) { padding-top: 1.5rem; }
.grid-filtro { border-top: 3px solid var(--cj-verde); padding: 1.1rem 1.25rem .9rem !important; overflow: visible; } /* a lista de bairros abre por cima da página */
.grid-filtro form.search-form { align-items: stretch; }
.grid-filtro form.search-form > [class*="col-"] { flex: 1 1 10.5rem; min-width: 0; }
.grid-filtro form.search-form > [class*="col-"]:has(> button[type="submit"]) { flex: 0 0 8rem; }
.grid-filtro .form-select {
  min-height: 2.75rem; font-size: .95rem; padding: .5rem 1.9rem .5rem .7rem; background-position: right .55rem center;
  background-color: #fff; border-color: var(--cj-borda); text-overflow: ellipsis;
}
.grid-filtro .form-select:hover:not(:disabled) { border-color: #c5cdd5; }
.grid-filtro .form-select:focus { border-color: var(--cj-verde); box-shadow: 0 0 0 .2rem rgba(125, 186, 33, .2); }
/* Filtro em uso fica destacado em verde (a primeira opção de cada campo é "Todos…") */
.grid-filtro select.form-select:has(option:not(:first-child):checked),
.grid-filtro .escolha-multipla.tem-escolha .escolha-multipla-botao {
  border-color: var(--cj-verde); background-color: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-weight: 600;
}
.grid-filtro .btn-primary { width: 100%; height: 100%; font-weight: 700; }

/* Links "Busca avançada" e "Limpar filtro" */
.grid-filtro form.search-form + .row { margin: .85rem 0 0; padding-top: .7rem; border-top: 1px solid var(--cj-borda); }
.grid-filtro form.search-form + .row > .col-12 { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem 1.25rem; padding: 0 !important; }
.grid-filtro .busca-avancada, .grid-filtro .limpar-filtro { display: inline-flex; align-items: center; gap: .4rem; margin: 0; text-decoration: none; }
.grid-filtro .busca-avancada:hover, .grid-filtro .limpar-filtro:hover { text-decoration: none; filter: brightness(.85); }
.grid-filtro .limpar-filtro::before { content: "\f00d"; font: var(--fa-font-solid); }

@media (max-width: 575.98px) {
  .grid-filtro { padding: .9rem !important; }
  .grid-filtro .form-select { font-size: .88rem; padding-left: .6rem; padding-right: 1.6rem; background-position: right .45rem center; }
  .grid-filtro form.search-form > [class*="col-"] { flex: 1 1 calc(50% - .25rem); }
  .grid-filtro form.search-form > [class*="col-"]:has(> button[type="submit"]) { flex: 1 1 100%; }
}

/* Bloco do filtro enquanto a lista é atualizada pelo servidor */
.carregando { opacity: .55; pointer-events: none; transition: opacity .15s; }

/* --------------------------------------------------------------------------
 * Campo de escolha múltipla (layout/escolha_multipla.php): vários bairros, vários tipos…
 * -------------------------------------------------------------------------- */
.escolha-multipla { position: relative; }
.escolha-multipla-botao { display: block; width: 100%; text-align: left; white-space: nowrap; overflow: hidden; }
.escolha-multipla-botao:disabled { background-color: var(--cj-fundo); color: var(--cj-texto-suave); cursor: not-allowed; }
.escolha-multipla-resumo { display: block; overflow: hidden; text-overflow: ellipsis; }
.escolha-multipla-menu {
  width: max(100%, 17rem); padding: 0; margin-top: .25rem !important;
  border: 1px solid var(--cj-borda); box-shadow: var(--cj-sombra-elevada);
}
.escolha-multipla-busca { position: relative; padding: .6rem; border-bottom: 1px solid var(--cj-borda); }
.escolha-multipla-busca i { position: absolute; left: 1.2rem; top: 50%; transform: translateY(-50%); color: var(--cj-texto-suave); font-size: .8rem; }
.escolha-multipla-busca input { padding-left: 2rem; }
.escolha-multipla-opcoes { max-height: 16rem; overflow-y: auto; padding: .3rem 0; overscroll-behavior: contain; }
.escolha-multipla-opcao { display: flex; align-items: center; gap: .6rem; margin: 0; padding: .45rem .9rem; cursor: pointer; font-size: .95rem; line-height: 1.3; }
.escolha-multipla-opcao[hidden] { display: none; }
.escolha-multipla-opcao:hover { background: var(--cj-verde-claro); }
.escolha-multipla-opcao .form-check-input { flex: 0 0 auto; margin: 0; width: 1.1em; height: 1.1em; cursor: pointer; }
.escolha-multipla-opcao .form-check-input:checked { background-color: var(--cj-verde); border-color: var(--cj-verde); }
.escolha-multipla-opcao .form-check-input:focus { box-shadow: 0 0 0 .2rem rgba(125, 186, 33, .25); border-color: var(--cj-verde); }
.escolha-multipla-opcao:has(:checked) { font-weight: 600; }
.escolha-multipla-nada { margin: 0; padding: .5rem .9rem; color: var(--cj-texto-suave); font-size: .9rem; }
.escolha-multipla-rodape { display: flex; justify-content: space-between; align-items: center; padding: .5rem .6rem; border-top: 1px solid var(--cj-borda); background: var(--cj-fundo); }
.escolha-multipla-rodape .btn-link { color: var(--cj-texto-suave); text-decoration: none; }
.escolha-multipla-rodape .btn-success { --bs-btn-bg: var(--cj-verde); --bs-btn-border-color: var(--cj-verde); --bs-btn-hover-bg: var(--cj-verde-escuro); --bs-btn-hover-border-color: var(--cj-verde-escuro); padding-inline: 1rem; }

/* --------------------------------------------------------------------------
 * Barra de resultado das listagens: total encontrado (totalEncontrado()) e ordenação.
 * A marcação antiga tem duas colunas brancas com estilo no próprio HTML; aqui elas viram um único painel.
 * -------------------------------------------------------------------------- */
div:has(> [class*="col-"] > .resultado-total) {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem;
  padding: .85rem 1.1rem; background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra);
}
div:has(> [class*="col-"] > .resultado-total) > [class*="col-"] {
  flex: 0 1 auto; width: auto; max-width: none; min-height: 0 !important; background: transparent !important;
}
div:has(> [class*="col-"] > .resultado-total) > [class*="col-"]:last-child { flex: 0 0 auto; }
/* O "clearfix" do legado (::before/::after vazios) virava um item invisível no fim da barra e afastava a ordenação da direita */
div:has(> [class*="col-"] > .resultado-total)::before,
div:has(> [class*="col-"] > .resultado-total)::after { content: none; display: none; }
.resultado-total { display: flex; align-items: center; gap: .75rem; margin: 0; font-size: 1.05rem; color: var(--cj-texto-suave); }
.resultado-total i {
  display: inline-flex; align-items: center; justify-content: center; flex: 0 0 2.5rem; height: 2.5rem;
  background: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-size: 1.05rem;
}
.resultado-total strong { font-size: 1.45rem; font-weight: 700; color: var(--cj-texto); margin-right: .15rem; }

/* Ordenação, com ícone ao lado do campo */
div:has(> [class*="col-"] > .resultado-total) .header-listing { display: flex; align-items: center; gap: .6rem; padding: 0; }
div:has(> [class*="col-"] > .resultado-total) .header-listing::before { content: "\f885"; font: var(--fa-font-solid); color: var(--cj-texto-suave); }
div:has(> [class*="col-"] > .resultado-total) .custom-select-box .form-select { min-width: 15rem; min-height: 2.6rem; font-size: .95rem; }
/* A linha em branco que separava a barra dos anúncios vira um espaço menor */
div:has(> [class*="col-"] > .resultado-total) + [class*="col-"]:has(> br:only-child) { height: 1rem; }
div:has(> [class*="col-"] > .resultado-total) + [class*="col-"] > br:only-child { display: none; }

@media (max-width: 575.98px) {
  div:has(> [class*="col-"] > .resultado-total) > [class*="col-"],
  div:has(> [class*="col-"] > .resultado-total) > [class*="col-"]:last-child { flex: 1 1 100%; }
  div:has(> [class*="col-"] > .resultado-total) .custom-select-box { flex: 1; }
  div:has(> [class*="col-"] > .resultado-total) .custom-select-box .form-select { min-width: 0; width: 100%; }
  .resultado-total strong { font-size: 1.3rem; }
}

/* ==========================================================================
 * Modais (janelas sobre a página): busca avançada, exclusões, denúncia, mensagem,
 * avisos do Bootbox… Todos usam a mesma marcação do Bootstrap 5 (padronizada nos modal_*.php).
 * ========================================================================== */
.modal {
  --bs-modal-width: 520px; --bs-modal-padding: 1.4rem 1.5rem; --bs-modal-header-padding: 1.1rem 1.5rem;
  --bs-modal-footer-gap: .5rem; --bs-modal-border-width: 0; --bs-modal-bg: #fff;
}
.modal-backdrop { backdrop-filter: blur(3px); }
.modal-backdrop.show { opacity: .55; }

/* Abre subindo de leve, em vez de "cair" do topo */
.modal.fade .modal-dialog { transform: translateY(1.5rem) scale(.98); transition: transform .22s ease-out; }
.modal.show .modal-dialog { transform: none; }
@media (prefers-reduced-motion: reduce) { .modal.fade .modal-dialog { transition: none; transform: none; } }

.modal-content { background: #fff; border-top: 4px solid var(--cj-verde); box-shadow: 0 1.5rem 3.5rem rgba(16, 24, 40, .28); }
.modal-header { align-items: flex-start; gap: 1rem; border-bottom: 1px solid var(--cj-borda); }
.modal-header .modal-title { margin: 0; font-size: 1.2rem; font-weight: 700; line-height: 1.35; color: var(--cj-texto); }
.modal-header .btn-close {
  flex: 0 0 auto; margin: -.3rem -.6rem -.3rem auto; padding: .65rem;
  border-radius: var(--cj-raio-controle); opacity: .55; transition: background-color .15s, opacity .15s;
}
.modal-header .btn-close:hover { opacity: 1; background-color: var(--cj-fundo); }
.modal-header .btn-close:focus { box-shadow: 0 0 0 .2rem rgba(125, 186, 33, .3); }
.modal-body { color: var(--cj-texto); line-height: 1.6; }
.modal-body > .row > [class*="col-"] > p:last-child, .modal-body > p:last-child { margin-bottom: 0; }
.modal-footer { gap: .5rem; padding: .9rem 1.5rem; background: var(--cj-fundo); border-top: 1px solid var(--cj-borda); }
.modal-footer > * { margin: 0; }
.modal-footer .btn-dark:not(:only-child), .modal-footer .btn-secondary { order: -1; } /* cancelar à esquerda, ação principal à direita */
.modal-footer .btn { min-width: 7.5rem; min-height: 2.6rem; font-weight: 600; border-radius: var(--cj-raio-controle); }
.modal .btn:focus-visible { box-shadow: 0 0 0 .25rem rgba(125, 186, 33, .35); }
/* O botão de cancelar/fechar ("btn-dark" no legado) fica discreto; a ação principal se destaca */
.modal-footer .btn-dark, .modal-footer .btn-secondary {
  --bs-btn-bg: #fff; --bs-btn-color: var(--cj-texto); --bs-btn-border-color: #cfd6dd;
  --bs-btn-hover-bg: #fff; --bs-btn-hover-color: var(--cj-texto); --bs-btn-hover-border-color: #9aa5b1;
  --bs-btn-active-bg: var(--cj-fundo); --bs-btn-active-color: var(--cj-texto); --bs-btn-active-border-color: #9aa5b1;
}
/* Se o único botão é o de fechar (ex.: "Ok, entendi"), ele vira o principal */
.modal-footer .btn-dark:only-child { --bs-btn-bg: var(--cj-verde); --bs-btn-color: #fff; --bs-btn-border-color: var(--cj-verde); --bs-btn-hover-bg: var(--cj-verde-escuro); --bs-btn-hover-color: #fff; --bs-btn-hover-border-color: var(--cj-verde-escuro); }

/* Exclusões e bloqueio: faixa vermelha e ícone de alerta no título */
.modal-perigo .modal-content { border-top-color: #dc3545; }
.modal-perigo .modal-title { display: flex; align-items: center; gap: .7rem; }
.modal-perigo .modal-title::before {
  content: "\f071"; font: var(--fa-font-solid); font-size: 1rem; flex: 0 0 2.4rem; height: 2.4rem;
  display: inline-flex; align-items: center; justify-content: center; border-radius: 50%;
  background: #fde8ea; color: #dc3545;
}
.modal-perigo .modal-body p:first-child { color: var(--cj-texto-suave); }

/* Denúncia: cada motivo vira uma opção clicável, destacada quando escolhida */
.modal .skin-minimal ul.list { display: grid; gap: .4rem; margin: 0 0 1rem; padding: 0; }
.modal .skin-minimal ul.list li { display: flex; align-items: center; margin: 0; padding: 0; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio-controle); transition: border-color .15s, background-color .15s; }
.modal .skin-minimal ul.list li:hover { border-color: #c5cdd5; }
.modal .skin-minimal ul.list li:has(input:checked) { border-color: var(--cj-verde); background: var(--cj-verde-claro); }
.modal .skin-minimal ul.list li input { flex: 0 0 auto; margin-left: .85rem; accent-color: var(--cj-verde); width: 1.05rem; height: 1.05rem; }
.modal .skin-minimal ul.list li label { flex: 1; padding: .6rem .85rem .6rem .6rem; font-size: .95rem; cursor: pointer; }

/* Galeria em tela cheia continua escura, sem a faixa verde */
.modal-galeria .modal-content { border-top: 0; box-shadow: none; }

/* No celular, a janela encosta na parte de baixo da tela (mais fácil de alcançar com o polegar) */
@media (max-width: 575.98px) {
  .modal:not(.modal-galeria) .modal-dialog { margin: 0; min-height: 100%; display: flex; align-items: flex-end; max-width: none; }
  .modal:not(.modal-galeria) .modal-content { width: 100%; max-height: 92vh; overflow-y: auto; }
  .modal.fade:not(.modal-galeria) .modal-dialog { transform: translateY(100%); transition: transform .25s ease-out; }
  .modal.show:not(.modal-galeria) .modal-dialog { transform: none; }
  .modal { --bs-modal-padding: 1.1rem; --bs-modal-header-padding: 1rem 1.1rem; }
  .modal-footer { padding: .8rem 1.1rem; }
  .modal-footer .btn { flex: 1 1 0; }
}
/* Mensagem ao anunciante: o anúncio aparece num quadro claro, separado do formulário */
.modal .recent-ads .recent-ads-list { background: var(--cj-fundo); border: 1px solid var(--cj-borda); border-bottom: 1px solid var(--cj-borda) !important; margin-bottom: 1rem; }

/* Mapa com rota ("Como chegar"): formulário, trajeto escrito e mapa no mesmo painel */
.localizacao-anuncio-rota { padding: 1rem 1.25rem 1.1rem; border-bottom: 1px solid var(--cj-borda); }
.localizacao-anuncio-rota .btn { min-height: calc(1.5em + .75rem + 2px); font-weight: 700; }
.localizacao-anuncio #trajeto-texto { float: none; width: 100%; height: auto; }
.localizacao-anuncio #trajeto-texto:not(:empty) { max-height: 22rem; overflow-y: auto; padding: .75rem 1.25rem; border-bottom: 1px solid var(--cj-borda); }
.localizacao-anuncio #mapa { float: none; display: block; width: 100%; height: 400px; background: var(--cj-fundo); }
/* Mapa incorporado (plano B sem chave de API, assets/js/mapa_reserva.js) */
.mapa-incorporado { display: block; width: 100%; height: 400px; border: 0; background: var(--cj-fundo); }
.localizacao-anuncio-rota .btn-success {
  --bs-btn-bg: var(--cj-verde); --bs-btn-border-color: var(--cj-verde);
  --bs-btn-hover-bg: var(--cj-verde-escuro); --bs-btn-hover-border-color: var(--cj-verde-escuro);
  --bs-btn-active-bg: var(--cj-verde-escuro); --bs-btn-active-border-color: var(--cj-verde-escuro);
}
.localizacao-anuncio-rota .btn i { color: #fff !important; } /* o legado pinta de verde todo ícone dentro de .painel-padrao */

/* ==========================================================================
 * Página de cadastro (cadastro.php): cartão com o formulário e painel de vantagens
 * ========================================================================== */
.pagina-cadastro { padding-top: 1.5rem; padding-bottom: 3rem; }
.cadastro-cartao { height: 100%; overflow: hidden; background: #fff; border: 1px solid var(--cj-borda); border-top: 4px solid var(--cj-verde); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra-elevada); }
.cadastro-cartao-topo { padding: 1.4rem 1.6rem 1rem; border-bottom: 1px solid var(--cj-borda); }
.cadastro-cartao-topo h1 { font-size: 1.6rem; font-weight: 700; margin: 0 0 .25rem; color: var(--cj-texto); }
.cadastro-cartao-topo p { margin: 0; color: var(--cj-texto-suave); }
.cadastro-formulario { padding: 1.3rem 1.6rem 1.4rem; }
.cadastro-botao {
  --bs-btn-bg: var(--cj-verde); --bs-btn-border-color: var(--cj-verde); --bs-btn-hover-bg: var(--cj-verde-escuro); --bs-btn-hover-border-color: var(--cj-verde-escuro);
  --bs-btn-active-bg: var(--cj-verde-escuro); --bs-btn-active-border-color: var(--cj-verde-escuro);
  font-weight: 700; border-radius: var(--cj-raio-controle); min-height: 3.1rem;
}
.cadastro-ja-tem-conta { margin: 0; padding: .9rem 1.6rem; text-align: center; background: var(--cj-fundo); border-top: 1px solid var(--cj-borda); color: var(--cj-texto-suave); }
.cadastro-ja-tem-conta a { font-weight: 700; }

.painel-vantagens { display: flex; flex-direction: column; height: 100%; padding: 1.6rem 1.75rem; background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); }
.painel-vantagens-titulo { margin: 0 0 .5rem; font-size: 1.45rem; font-weight: 800; letter-spacing: -.02em; }
.painel-vantagens ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.25rem; }
.painel-vantagens li { display: flex; gap: 1rem; align-items: flex-start; }
.painel-vantagens li > i {
  flex: 0 0 3rem; height: 3rem; display: inline-flex; align-items: center; justify-content: center;
  background: var(--cj-verde-claro); color: var(--cj-verde-escuro) !important; font-size: 1.2rem;
}
.painel-vantagens h3 { font-size: 1.02rem; font-weight: 700; margin: .15rem 0 .2rem; }
.painel-vantagens p { margin: 0; color: var(--cj-texto-suave); line-height: 1.55; }

/* Cadastro em duas colunas: dados e senha à esquerda, regras da senha à direita; termos e botão no rodapé */
.cadastro-secao-titulo { display: flex; align-items: center; gap: .5rem; margin: 0 0 .9rem; font-size: .82rem; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase; color: var(--cj-texto-suave); }
.cadastro-secao-titulo i { color: var(--cj-verde); font-size: .95rem; }
.cadastro-secao-titulo-senha { margin-top: 1.6rem; padding-top: 1.3rem; border-top: 1px dashed var(--cj-borda); }
.cadastro-coluna-regras .senha-regras { height: 100%; margin: 0; padding: 1.1rem 1.2rem; }
.cadastro-coluna-regras .senha-regras-lista { grid-template-columns: 1fr 1fr; }
.cadastro-rodape-formulario { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 1.5rem;
  margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--cj-borda); }
.cadastro-confirmacoes { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.5rem; }
.cadastro-rodape-formulario .cadastro-botao { min-width: 15rem; padding-left: 1.75rem; padding-right: 1.75rem; }

@media (max-width: 991.98px) {
  .cadastro-coluna-regras .senha-regras { height: auto; }
}

@media (max-width: 575.98px) {
  .cadastro-cartao-topo, .cadastro-formulario { padding-left: 1.1rem; padding-right: 1.1rem; }
  .cadastro-cartao-topo h1 { font-size: 1.35rem; }
  .cadastro-rodape-formulario .cadastro-botao { width: 100%; min-width: 0; }
  .cadastro-coluna-regras .senha-regras-lista { grid-template-columns: 1fr; }
  .painel-vantagens { padding: 1.25rem 1.1rem; }
}

/* --------------------------------------------------------------------------
 * Menu de categorias: espaço entre os fundos verdes, para o link ativo e o link sob o mouse
 * não ficarem grudados.
 * -------------------------------------------------------------------------- */
.topo .menu-categorias { gap: .3rem; }

/* Menu lateral do celular (offcanvas): itens separados por um pequeno espaço, com cantos arredondados */
.offcanvas-body .list-group-flush { display: grid; gap: .3rem; }
.offcanvas-body .list-group-flush > .list-group-item {
  border: 0; border-radius: var(--cj-raio-controle); padding: .65rem .85rem;
  transition: background-color .15s, color .15s;
}
.offcanvas-body .list-group-flush > .list-group-item-action:hover,
.offcanvas-body .list-group-flush > .list-group-item-action:focus-visible {
  background: var(--cj-verde-claro); color: var(--cj-verde-escuro);
}
.offcanvas-body .list-group-flush > .list-group-item.active { background: var(--cj-verde-claro); color: var(--cj-verde-escuro); }

/* ==========================================================================
 * Impressão do anúncio (documento montado por assets/js/impressao_anuncio.js)
 * Tipografia de leitura, hierarquia clara e só linhas finas em preto e cinza (pouca tinta).
 * ========================================================================== */
.impressao-anuncio { display: none; }
@media print {
  @page { margin: 14mm 14mm 16mm; }
  body.imprimindo-anuncio > *:not(.impressao-anuncio) { display: none !important; }
  body.imprimindo-anuncio { padding: 0 !important; margin: 0 !important; }
  .impressao-anuncio { display: block; font-family: "Source Sans 3", "Segoe UI", Arial, sans-serif; font-size: 10.5pt; line-height: 1.5; }
  .impressao-anuncio p { margin: 0 0 2mm; orphans: 3; widows: 3; }

  .impressao-cabecalho { display: flex; align-items: center; justify-content: space-between; padding-bottom: 3.5mm; margin-bottom: 6mm; border-bottom: 1.5pt solid #000; }
  .impressao-cabecalho img { height: 11mm; width: auto; }
  .impressao-anuncio .impressao-data { font-size: 9pt; color: #555 !important; }

  .impressao-titulo { font-size: 19pt; font-weight: 700; line-height: 1.2; margin: 0 0 1.5mm; }
  .impressao-anuncio .impressao-subtitulo { font-size: 11pt; color: #444 !important; margin: 0 0 6mm; }

  .impressao-resumo { display: flex; gap: 7mm; align-items: flex-start; margin-bottom: 7mm; break-inside: avoid; page-break-inside: avoid; }
  .impressao-foto { flex: 0 0 72mm; margin: 0; }
  .impressao-foto img { display: block; width: 100%; height: auto; max-height: 60mm; object-fit: cover; border: .5pt solid #bbb; }
  .impressao-fichas { flex: 1 1 auto; min-width: 0; }

  .impressao-ficha { display: grid; grid-template-columns: max-content 1fr; column-gap: 6mm; margin: 0 0 4mm; }
  .impressao-ficha dt, .impressao-ficha dd { margin: 0; padding: 1.3mm 0; border-bottom: .5pt solid #ccc; break-inside: avoid; }
  .impressao-anuncio .impressao-ficha dt { font-weight: 400; color: #555 !important; }
  .impressao-ficha dd { font-weight: 700; }
  .impressao-ficha .impressao-ficha-linha { grid-column: 1 / -1; font-weight: 600; }

  .impressao-secao { margin-top: 7mm; }
  .impressao-secao h2 {
    font-size: 11.5pt; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; margin: 0 0 3mm;
    padding-bottom: 1.5mm; border-bottom: .75pt solid #000; break-after: avoid; page-break-after: avoid;
  }
  .impressao-itens { columns: 3; column-gap: 7mm; list-style: none; margin: 0; padding: 0; }
  .impressao-itens li { position: relative; padding-left: 4.5mm; margin-bottom: 1.2mm; break-inside: avoid; }
  .impressao-itens li::before { content: "✓"; position: absolute; left: 0; font-weight: 700; }

  .impressao-contato { padding: 4mm 5mm 2mm; border: 1pt solid #000; break-inside: avoid; page-break-inside: avoid; }
  .impressao-contato h2 { border-bottom: 0; padding-bottom: 0; }
  .impressao-contato strong { font-size: 12pt; }

  .impressao-rodape { display: flex; flex-direction: column; gap: .5mm; margin-top: 9mm; padding-top: 3mm; border-top: .75pt solid #000; font-size: 8.5pt; break-inside: avoid; }
  .impressao-anuncio .impressao-rodape span { color: #555 !important; }
}

/* ==========================================================================
 * Cartões de anúncio da página inicial (destaques e "Um pouco de cada seção")
 * Foto com o nome da seção por cima, título em até 2 linhas, local e um rodapé com o preço.
 * O painel fica parado ao passar o mouse; só a foto aumenta e a borda fica verde.
 * ========================================================================== */
.cartao-anuncio { position: relative; border-color: var(--cj-borda); box-shadow: 0 1px 2px rgba(16, 24, 40, .05); transition: border-color .2s ease, box-shadow .2s ease; }
.cartao-anuncio:hover, .cartao-anuncio:focus-visible { box-shadow: 0 8px 22px rgba(16, 24, 40, .10); } /* a borda continua cinza */
.cartao-anuncio:focus-visible { outline: 3px solid rgba(125, 186, 33, .45); outline-offset: 2px; }
.cartao-anuncio-imagem { position: relative; }

/* Nome da seção sobre a foto */
.cartao-anuncio-secao {
  position: absolute; left: .6rem; top: .6rem; z-index: 1;
  display: inline-flex; align-items: center; gap: .35rem; max-width: calc(100% - 1.2rem);
  padding: .25rem .6rem; font-size: .75rem; font-weight: 700; letter-spacing: .01em;
  background: rgba(255, 255, 255, .94); color: var(--cj-texto); border-radius: 999px;
  box-shadow: 0 1px 3px rgba(16, 24, 40, .18); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cartao-anuncio-secao i { color: var(--cj-verde-escuro); font-size: .8rem; }

/* Vaga de emprego: sem foto, o começo da descrição ocupa o lugar dela */
.cartao-anuncio-capa-vaga {
  display: flex; align-items: flex-end; padding: 2.6rem 1rem 1rem;
  background: linear-gradient(160deg, var(--cj-verde-claro), #fff 85%);
  border-bottom: 1px solid var(--cj-borda);
}
.cartao-anuncio-capa-vaga::after {
  content: "\f0b1"; font: var(--fa-font-solid); position: absolute; right: .9rem; top: .55rem;
  font-size: 1.9rem; color: var(--cj-verde); opacity: .25;
}
.cartao-anuncio-capa-vaga .cartao-anuncio-descricao { margin: 0; -webkit-line-clamp: 5; color: var(--cj-texto); font-size: .9rem; line-height: 1.45; }

.cartao-anuncio-corpo { gap: .3rem; padding: .85rem 1rem .9rem; }
.cartao-anuncio-titulo { font-size: 1rem; min-height: 2.6em; }
.cartao-anuncio-local { display: flex; align-items: center; gap: .35rem; font-size: .83rem; }
.cartao-anuncio-local i { color: var(--cj-verde-escuro); font-size: .78rem; }
.cartao-anuncio-rodape { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-top: auto; padding-top: .65rem; border-top: 1px solid var(--cj-borda); }
.cartao-anuncio-rodape .cartao-anuncio-preco { margin: 0; padding: 0; font-size: 1.12rem; line-height: 1.2; }
.cartao-anuncio-seta {
  flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem;
  border-radius: 50%; background: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-size: .8rem;
  transition: background-color .2s ease, color .2s ease, transform .2s ease;
}
.cartao-anuncio:hover .cartao-anuncio-seta { background: var(--cj-verde); color: #fff; transform: translateX(2px); }



/* Ficha técnica: pastilhas sem conteúdo somem (site.js) e valores longos não ficam cortados */
.simples .short-features > div[hidden] { display: none; }
.simples .short-features > div > br:first-child, .simples .short-features strong br { display: none; } /* quebras de linha que sobravam do HTML antigo */
.simples .short-features strong { overflow-wrap: anywhere; }
.simples .short-features > .pastilha-larga { grid-column: span 2; }
.simples .short-features > div > i:first-child { margin-right: .3rem; color: var(--cj-verde-escuro); }
@media (max-width: 575.98px) {
  .simples .short-features > .pastilha-larga { grid-column: 1 / -1; }
}
.simples .short-features { grid-auto-flow: dense; } /* uma pastilha larga não deixa buraco: a seguinte ocupa o espaço que sobrou */

/* Botões Imprimir / Salvar como favoritos / Denunciar: o "clearfix" do legado (::after vazio) virava um
   item invisível no fim da barra e ocupava um espaço, deixando a borda direita desalinhada dos painéis */
/* (classe repetida para vencer a regra de compatibilidade :not(.row):has(> .col-*)::after, que é mais específica) */
.ad-share.ad-share::before, .ad-share.ad-share::after { content: none; display: none; }

/* Linha "Referência | Localização" abaixo do título nos detalhes: sem o recuo padrão das listas,
   para começar na mesma margem do título */
.simples .short-history ul { padding-left: 0; margin-bottom: 0; list-style: none; }
.simples .short-history li { color: var(--cj-texto-suave); }


/* ===== Títulos das seções da página inicial (destaques e vitrine) =====
   Rótulo pequeno com traço de cor, título forte com uma palavra-chave na cor da marca
   e texto de apoio discreto, terminando numa frase de convite um pouco mais escura. */
.secao-titulo-chamada h2 {
  font-size: clamp(1.5rem, 1.15rem + 1.1vw, 2rem);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -.025em;
  color: #1f2328;
}
.secao-titulo-chamada h2 em { font-style: normal; color: #e0701f; }
.secao-titulo-chamada.secao-titulo-vitrine h2 em { color: var(--cj-verde-escuro); }
.secao-titulo-rotulo {
  display: flex;
  align-items: center;
  gap: .6rem;
  margin-bottom: .6rem;
  color: #c45e17;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.secao-titulo-rotulo::before {
  content: "";
  width: 1.75rem;
  height: 2px;
  border-radius: 2px;
  background: var(--cj-laranja);
}
.secao-titulo-vitrine .secao-titulo-rotulo { color: var(--cj-verde-escuro); }
.secao-titulo-vitrine .secao-titulo-rotulo::before { background: var(--cj-verde); }
.secao-titulo-chamada p { margin-top: .6rem; font-size: 1.0625rem; line-height: 1.6; color: #5f6368; }
.secao-titulo-convite { color: #1f2328; font-weight: 600; }

/* ===== Botões Imprimir / Salvar como favoritos / Denunciar (detalhes do anúncio) =====
   Os botões dividem a linha por igual e o texto nunca quebra (largura mínima = o próprio texto);
   quando não cabem lado a lado, descem para a linha de baixo e se esticam para preencher a largura. */
.ad-share { flex-wrap: wrap; }
.ad-share > .painel-padrao,
.ad-share > #divFavoritoSalvo { flex: 1 1 0; min-width: max-content; }
.ad-share .painel-padrao {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  white-space: nowrap;
  width: auto;
  max-width: none;
}
.ad-share .painel-padrao i,
.ad-share .painel-padrao .fa { padding: 0 !important; }
.ad-share > #divFavoritoSalvo > .painel-padrao { width: 100%; height: 100%; }
/* "Salvar como favoritos" é um link: mesma cor de texto dos outros dois botões */
.ad-share a.painel-padrao { color: inherit; }
.ad-share a.painel-padrao:hover { color: var(--cj-verde-escuro); }

/* ===== Publicidade entre os cartões da página inicial (destaques e vitrine) ===== */
.cartao-publicidade {
  position: relative;
  flex-direction: column;
  height: 100%;
  justify-content: center;
  min-height: 250px;
  padding: 1.75rem .5rem .5rem;
  overflow: hidden;
  background: #fafbfa;
  border-style: dashed;
}
.cartao-publicidade .adsbygoogle { min-height: 200px; }
.cartao-publicidade-rotulo {
  position: absolute;
  top: .5rem;
  left: 0;
  right: 0;
  color: var(--cj-texto-suave);
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-align: center;
  text-transform: uppercase;
}

/* ==========================================================================
   Página inicial — "proposta 3": topo verde da marca com a busca, barra de
   categorias flutuando sobre o verde, destaques em cartões maiores, faixa de
   benefícios, vitrine com uma única publicidade e chamada final.
   ========================================================================== */
.pagina-inicial { --bs-body-bg: #fff; background: #fff; } /* área dos cartões em branco; a faixa de benefícios fica cinza */
.inicio-hero {
  padding: 3.5rem 0 7rem;
  color: #fff;
  background:
    radial-gradient(circle at 85% 10%, rgba(255, 255, 255, .14), transparent 40%),
    linear-gradient(135deg, #6aa61b 0%, var(--cj-verde-escuro) 55%, #4f7d12 100%);
}
/* Bloco do título, texto, busca e selos centralizado na faixa verde */
.inicio-hero-conteudo { max-width: 48rem; margin: 0 auto; text-align: center; }
.inicio-hero-conteudo .busca-inicio { max-width: 44rem; margin-left: auto; margin-right: auto; text-align: left; }
.inicio-hero h1 {
  margin: 0;
  color: #fff;
  font-size: clamp(2rem, 1.3rem + 2.6vw, 3rem);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -.03em;
}
.inicio-hero-conteudo > p { margin: .9rem 0 0; color: rgba(255, 255, 255, .9); font-size: 1.15rem; line-height: 1.55; }

/* Busca: texto + categoria + botão numa "pílula" branca */
.busca-inicio {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-top: 1.75rem;
  padding: .35rem .35rem .35rem 1.1rem;
  background: #fff;
  border-radius: 999px;
  box-shadow: 0 14px 40px rgba(0, 0, 0, .18);
}
.busca-inicio-campo { flex: 1; display: flex; align-items: center; gap: .65rem; margin: 0; color: #8a8f98; }
.busca-inicio input,
.busca-inicio select { width: 100%; min-height: 2.5rem; border: 0; outline: 0; background: transparent; color: var(--cj-texto); font-size: 1rem; }
.busca-inicio input::placeholder { color: #8a8f98; }
.busca-inicio input:disabled { cursor: not-allowed; }
.busca-inicio-categoria { flex: 0 0 13rem; margin: 0; padding-left: .85rem; border-left: 1px solid var(--cj-borda); }
.busca-inicio select { color: var(--cj-texto-suave); cursor: pointer; }
.busca-inicio .btn { flex: 0 0 auto; padding: .6rem 1.5rem; border-radius: 999px; }
.inicio-hero-selos { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem 1.75rem; margin: 1.35rem 0 0; padding: 0; list-style: none; color: rgba(255, 255, 255, .92); font-size: .95rem; }
.inicio-hero-selos i { margin-right: .45rem; color: #d8f0b0; }

/* Barra de categorias sobreposta ao fim do verde: um bloco por categoria, cada uma com o seu tom (--cor-categoria) */
.inicio-categorias {
  position: relative;
  margin-top: -4.5rem;
  padding: 1.25rem 1.25rem 1rem;
  background: #fff;
  border: 1px solid rgba(31, 35, 40, .06);
  border-radius: var(--cj-raio-grande);
  box-shadow: 0 20px 50px rgba(31, 35, 40, .10);
}
.inicio-categorias-topo { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 0 .5rem .85rem; }
.inicio-categorias-topo h2 { margin: 0; color: var(--cj-texto-suave); font-size: .78rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.inicio-categorias-topo a { color: var(--cj-verde-escuro); font-size: .9rem; font-weight: 700; white-space: nowrap; }
.inicio-categorias-topo a i { margin-left: .3rem; transition: transform .2s ease; }
.inicio-categorias-topo a:hover i { transform: translateX(3px); }

.inicio-categorias-lista {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: .35rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.inicio-categorias-lista a {
  --cor-categoria: var(--cj-verde-escuro);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .6rem;
  height: 100%;
  padding: .85rem .35rem .8rem;
  border-radius: 1rem;
  color: var(--cj-texto);
  font-size: .86rem;
  font-weight: 600;
  line-height: 1.25;
  text-align: center;
  transition: background-color .2s ease, color .2s ease, transform .2s ease;
}
.inicio-categorias-icone {
  display: grid;
  place-items: center;
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 1rem;
  background: color-mix(in srgb, var(--cor-categoria) 12%, #fff);
  color: var(--cor-categoria);
  font-size: 1.3rem;
  transition: background-color .2s ease, color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.inicio-categorias-lista a:hover, .inicio-categorias-lista a:focus-visible {
  background: color-mix(in srgb, var(--cor-categoria) 6%, #fff);
  color: var(--cor-categoria);
  text-decoration: none;
}
.inicio-categorias-lista a:hover .inicio-categorias-icone, .inicio-categorias-lista a:focus-visible .inicio-categorias-icone {
  background: var(--cor-categoria);
  color: #fff;
  transform: translateY(-3px);
  box-shadow: 0 10px 20px color-mix(in srgb, var(--cor-categoria) 30%, transparent);
}
@media (prefers-reduced-motion: reduce) {
  .inicio-categorias-lista a:hover .inicio-categorias-icone { transform: none; }
}

/* Seções e títulos */
.inicio-secao { margin-top: 4.5rem; }
.secao-titulo-link { flex: 0 0 auto; color: var(--cj-verde-escuro); font-weight: 600; white-space: nowrap; }
.secao-titulo-link i { margin-left: .35rem; transition: transform .2s ease; }
.secao-titulo-link:hover i { transform: translateX(3px); }
.grade-destaques .cartao-anuncio-imagem { aspect-ratio: 16 / 10; }

/* Faixa "Mais resultado para quem anuncia" */
.faixa-beneficios { margin-top: 4.5rem; padding: 3.5rem 0; background: var(--cj-fundo); }
.faixa-beneficios .container { display: grid; grid-template-columns: 1.1fr 4fr; gap: 2rem; align-items: start; }
.faixa-beneficios h2 { margin: 0; font-size: 1.65rem; font-weight: 800; line-height: 1.2; letter-spacing: -.025em; }
.faixa-beneficios h2 em { font-style: normal; color: var(--cj-verde-escuro); }
.faixa-beneficios ul { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2rem; margin: 0; padding: 0; list-style: none; }
.faixa-beneficios li > i {
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: .75rem;
  background: #fff;
  box-shadow: 0 4px 12px rgba(31, 35, 40, .06);
  color: var(--cj-laranja-escuro);
  font-size: 1.1rem;
}
.faixa-beneficios h3 { margin: .9rem 0 .3rem; font-size: 1.02rem; font-weight: 700; }
.faixa-beneficios p { margin: 0; color: var(--cj-texto-suave); font-size: .93rem; line-height: 1.5; }

/* Chamada final */
.inicio-chamada-final {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  margin-top: 4.5rem;
  padding: 2.5rem 3rem;
  border: 1px solid #f6e3d2;
  border-radius: var(--cj-raio-grande);
  background: linear-gradient(135deg, #fff6ee, #fff);
}
.inicio-chamada-final h2 { margin: 0; font-size: 1.6rem; font-weight: 800; letter-spacing: -.02em; }
.inicio-chamada-final p { margin: .35rem 0 0; color: var(--cj-texto-suave); }

@media (min-width: 992px) {
  /* "Mais resultado / para quem / anuncia": a largura em em força as três linhas */
  .faixa-beneficios h2 { max-width: 8.5em; font-size: 2.1rem; line-height: 1.15; }
}
@media (max-width: 991.98px) {
  .faixa-beneficios .container { grid-template-columns: 1fr; }
  .faixa-beneficios ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
  .inicio-hero { padding: 2.25rem 0 6rem; }
  .busca-inicio { flex-direction: column; align-items: stretch; gap: 0; padding: .5rem; border-radius: var(--cj-raio); }
  .busca-inicio-campo { padding: 0 .65rem; }
  .busca-inicio-categoria { flex-basis: auto; padding: 0 .65rem; border-left: 0; border-top: 1px solid var(--cj-borda); }
  .busca-inicio .btn { margin-top: .35rem; border-radius: var(--cj-raio-controle); }
  .inicio-secao, .faixa-beneficios, .inicio-chamada-final { margin-top: 3rem; }
  .faixa-beneficios { padding: 2.5rem 0; }
  .faixa-beneficios ul { gap: 1.5rem 1rem; }
  .inicio-chamada-final { flex-direction: column; align-items: stretch; padding: 1.75rem 1.25rem; text-align: center; }
  .secao-titulo-chamada { flex-direction: column; align-items: flex-start; }
}

/* Home: abaixo de 992px as categorias viram uma faixa que desliza para o lado */
@media (max-width: 991.98px) {
  .inicio-categorias { padding: 1rem 0 .75rem; }
  .inicio-categorias-topo { margin: 0 1.1rem .5rem; }
  .inicio-categorias-topo h2 { font-size: .72rem; letter-spacing: .08em; white-space: nowrap; }
  .inicio-categorias-lista {
    grid-auto-columns: 5.1rem;
    overflow-x: auto;
    padding: 0 .75rem .25rem;
    scroll-snap-type: x proximity;
    scroll-padding: 0 .75rem;
    scrollbar-width: none;
    -webkit-mask-image: linear-gradient(to right, #000 85%, transparent);
            mask-image: linear-gradient(to right, #000 85%, transparent);
  }
  .inicio-categorias-lista::-webkit-scrollbar { display: none; }
  .inicio-categorias-lista li { scroll-snap-align: start; }
  .inicio-categorias-lista a { font-size: .8rem; padding: .7rem .25rem; }
  .inicio-categorias-icone { width: 3rem; height: 3rem; font-size: 1.15rem; }
}

/* ==========================================================================
   Listagens — faixa verde com o nome da categoria (renderizarFaixaDaListagem)
   e o painel de filtros flutuando sobre o fim da faixa, como a barra de
   categorias da página inicial.
   ========================================================================== */
.faixa-pagina {
  padding: 2.5rem 0 4.75rem;
  color: #fff;
  background:
    radial-gradient(circle at 85% 10%, rgba(255, 255, 255, .14), transparent 40%),
    linear-gradient(135deg, #6aa61b 0%, var(--cj-verde-escuro) 55%, #4f7d12 100%);
}
.faixa-pagina-titulo { margin: 0; color: #fff; font-size: clamp(1.75rem, 1.3rem + 1.6vw, 2.4rem); font-weight: 800; letter-spacing: -.03em; }
.faixa-pagina p { margin: .45rem 0 0; color: rgba(255, 255, 255, .88); font-size: 1.05rem; }
/* O primeiro bloco depois da faixa (filtros, publicidade, formulário) sobe e fica por cima do fim do verde */
.faixa-pagina + .container { position: relative; margin-top: -3.25rem; }
.faixa-pagina + .container > .grid-filtro {
  border: 0 !important;
  border-radius: var(--cj-raio-grande);
  box-shadow: 0 20px 50px rgba(31, 35, 40, .10);
}
@media (max-width: 767.98px) {
  .faixa-pagina { padding: 1.75rem 0 4.25rem; }
  .faixa-pagina p { font-size: .98rem; }
}
/* Campo "O que você está procurando" com espaço para o texto (antes ficava espremido entre os selects) */
.grid-filtro form.search-form > [class*="col-"]:has(> input[type="text"]) { flex: 2 1 16rem; }
.grid-filtro form.search-form > [class*="col-"] > .form-control { width: 100%; }

/* Ícone de localização dos cartões em cinza, como o texto */
.cartao-anuncio-local i { color: #8a8f98; }

/* ==========================================================================
   Detalhes do anúncio — proposta 3
   Faixa verde com a trilha (renderizarFaixaDoAnuncio), publicidade flutuando
   sobre o fim da faixa, título maior, preço em cartão branco, ficha técnica em
   pastilhas cinza e títulos de seção sem sublinhado.
   ========================================================================== */
.faixa-pagina--anuncio { padding: 1.35rem 0 4.5rem; }
.faixa-pagina--anuncio .container { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1.5rem; }
.trilha { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; font-size: .95rem; }
.trilha a { color: rgba(255, 255, 255, .88); }
.trilha a:last-child { color: #fff; font-weight: 700; }
.trilha a:hover { color: #fff; }
.trilha i { font-size: .65rem; color: rgba(255, 255, 255, .6); }
.faixa-voltar { display: inline-flex; align-items: center; gap: .5rem; padding: .45rem .95rem; border-radius: 999px; background: rgba(255, 255, 255, .16); color: #fff; font-size: .9rem; font-weight: 600; }
.faixa-voltar:hover { background: rgba(255, 255, 255, .26); color: #fff; }
.painel-filtro:has(> .faixa-pagina) .grid-card-banner {
  position: relative;
  margin: 0 0 1.5rem;
  padding: 1rem;
  background: #fff;
  border-radius: var(--cj-raio-grande);
  box-shadow: 0 20px 50px rgba(31, 35, 40, .10);
}

/* Título do anúncio */
.simples > .painel-padrao:first-child h1,
.simples > .painel-padrao:first-child h2:first-child {
  font-size: clamp(1.4rem, 1.1rem + 1vw, 1.85rem);
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: -.02em;
}
.painel-padrao { border-radius: var(--cj-raio); }

/* Preço e contato: cartão branco com o preço em verde (antes era uma barra verde) */
.sidebar .ad-listing-price {
  background: #fff !important;
  border: 1px solid var(--cj-borda);
  border-bottom: 0;
  border-radius: var(--cj-raio) var(--cj-raio) 0 0;
}
.sidebar .ad-listing-price p { margin: 0; padding: 1.25rem 1.25rem .5rem; background: transparent !important; color: var(--cj-verde-escuro) !important; font-size: 1.9rem; font-weight: 800; letter-spacing: -.02em; }
.sidebar .contact { padding: .5rem 1.25rem 1.25rem; border-radius: 0 0 var(--cj-raio) var(--cj-raio); }
.sidebar .contact .btn-contact { padding: .8rem 1rem; }
.sidebar .user-contact-info { border-radius: var(--cj-raio); overflow: hidden; }

/* Ficha técnica: pastilhas cinza arredondadas, sem o traço verde */
.simples .short-features > div { border-left: 0; border-radius: .75rem; }
.simples .short-features > div > i:first-child { color: #8a8f98; }

/* Títulos das seções (Descrição, Características…): texto forte, sem o sublinhado verde */
.simples .heading-panel { border-bottom: 0; margin-bottom: .6rem; }
.simples .heading-panel h3, .simples .heading-panel h3.main-title { padding-bottom: 0; border-bottom: 0; font-size: 1.2rem; font-weight: 800; letter-spacing: -.01em; }

@media (max-width: 767.98px) {
  .faixa-pagina--anuncio { padding: 1rem 0 4rem; }
  .faixa-voltar { display: none; } /* no celular a trilha já leva de volta à listagem */
}
/* Em várias listagens o campo de texto (e a subseção) ficam dentro de um <div> sem classe (#divSecaoSub…):
   esse <div> também precisa crescer, senão o campo fica espremido */
.grid-filtro form.search-form > div:not([class*="col-"]) { display: flex; flex-wrap: wrap; flex: 2 1 18rem; gap: .5rem; min-width: 0; }
.grid-filtro form.search-form > div:not([class*="col-"]) > [class*="col-"] { flex: 1 1 10rem; width: auto; max-width: none; padding: 0; }

/* ==========================================================================
   Área do usuário e formulários de anúncio — faixa verde com "Minha área"
   (renderizarFaixaDaAreaDoUsuario)
   ========================================================================== */
.faixa-pagina-rotulo { display: inline-flex; align-items: center; gap: .45rem; margin-bottom: .45rem; color: #d8f0b0; font-size: .78rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.faixa-pagina--sem-sobreposicao { padding-bottom: 2.5rem; }
.faixa-pagina--sem-sobreposicao + .container { margin-top: 1.75rem; }
.faixa-pagina--sem-sobreposicao + .container.area-usuario { padding-top: 0; }

/* ==========================================================================
   Ajustes depois da etapa 4
   ========================================================================== */
/* Componentes do Bootstrap com fundo branco (por padrão usariam o cinza do fundo da página) */
.card { --bs-card-bg: #fff; }
.list-group { --bs-list-group-bg: #fff; }
.modal { --bs-modal-bg: #fff; }
.dropdown-menu { --bs-dropdown-bg: #fff; }
.accordion { --bs-accordion-bg: #fff; }

/* Publicidade do topo das listagens e dos detalhes: faixa baixa no lugar do bloco 970 x 250 */
.publicidade-horizontal { max-height: 120px; overflow: hidden; }
.painel-filtro:has(> .faixa-pagina) .grid-card-banner:has(.publicidade-horizontal) { padding: .75rem; }

/* Painel "Quer anunciar nesta listagem?" arredondado como os demais */
.advertising .banner { border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); }
.advertising .banner:hover { border-color: var(--cj-campo-borda-hover); }

/* Painéis brancos do tema antigo (login, nova senha…) arredondados */
.grid-padrao { border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); }
/* Painéis lado a lado com a mesma altura (login e contato) */
.paineis-mesma-altura > [class*="col-"] { display: flex; }
.paineis-mesma-altura > [class*="col-"] > .grid-padrao { display: flex; flex-direction: column; flex: 1 1 auto; margin-bottom: 0; padding: 1.6rem 1.75rem; }

/* Menu lateral da área do usuário: publicidade pequena em cartão, embaixo do menu */
.publicidade-lateral { min-height: 0; margin-bottom: 1rem; }

/* Painel de apresentação ao lado dos formulários (renderizarPainelDeVantagens) */
.grid-padrao > .painel-vantagens { flex: 1 1 auto; padding: 0; border: 0; box-shadow: none; }
.painel-vantagens-introducao { margin: 0 0 1.5rem !important; font-size: 1.02rem; }
.painel-vantagens-rodape { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-top: auto; padding-top: 1.5rem; border-top: 1px solid var(--cj-borda); }
.painel-vantagens > ul:not(.painel-vantagens-selos) { margin-bottom: 1.5rem; } /* espaço mínimo antes do rodapé, que vai para o fim do painel */
.painel-vantagens ul.painel-vantagens-selos { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; }
.painel-vantagens-selos li { align-items: center; gap: .4rem; color: var(--cj-texto-suave); font-size: .9rem; font-weight: 600; }
.painel-vantagens-selos li > i { width: auto; height: auto; background: none; color: var(--cj-verde-escuro); font-size: .95rem; }
.painel-vantagens a { font-weight: 600; }

/* Textos de apoio dos formulários (login e contato) */
.formulario-subtitulo { margin: -.35rem 0 1.25rem; color: var(--cj-texto-suave); }
.formulario-rodape { margin: 1rem 0 0; color: var(--cj-texto-suave); text-align: center; }
.formulario-rodape a { font-weight: 700; }
.aviso-seguranca-senha { display: flex; gap: .75rem; margin-top: auto; padding: .9rem 1rem; border-radius: .75rem; background: var(--cj-verde-claro); }
.grid-padrao form:has(+ .aviso-seguranca-senha) { margin-bottom: 1.5rem; }
.aviso-seguranca-senha i { margin-top: .2rem; color: var(--cj-verde-escuro); }
.aviso-seguranca-senha p { margin: 0; color: var(--cj-texto); font-size: .9rem; line-height: 1.5; }

/* "Quer anunciar nesta listagem?": texto à esquerda e "Anuncie grátis" como botão à direita */
.advertising .banner { display: block; padding: 1.35rem 1.6rem; }
.advertising .banner .wrapper { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 1.5rem; }
.advertising .banner .title { display: block; width: auto; font-size: 1.25rem; font-weight: 700; letter-spacing: -.01em; }
.advertising .banner .submit {
  display: inline-flex; flex-direction: row-reverse; align-items: center; gap: .5rem; width: auto;
  padding: .7rem 1.35rem; border-radius: 999px; background: var(--cj-laranja); color: #fff !important;
  font-size: 1rem; font-weight: 700; white-space: nowrap; box-shadow: 0 4px 12px -4px rgba(245, 137, 54, .6);
  transition: background-color .2s ease, transform .2s ease;
}
.advertising .banner .submit i { margin: 0; color: #fff; }
.advertising a:hover .banner .submit { background: var(--cj-laranja-escuro); transform: translateY(-1px); }
@media (max-width: 575.98px) {
  .advertising .banner .submit { width: 100%; justify-content: center; }
}
.painel-vantagens-redes { display: flex; align-items: center; gap: .75rem; color: var(--cj-texto-suave); font-size: .9rem; font-weight: 600; }
.painel-vantagens-redes a { display: inline-flex; align-items: center; justify-content: center; width: 2.25rem; height: 2.25rem; border-radius: 50%; background: var(--cj-verde-claro); color: var(--cj-verde-escuro); }
.painel-vantagens-redes a:hover { background: var(--cj-verde); color: #fff; }

/* Contato: um único painel com um aviso curto e o formulário em duas colunas */
.contato-cartao { padding: 1.75rem 2rem; }
.contato-cartao form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1rem; }
.contato-cartao form > :is(h1, p, button, .form-group:has(#nome), .form-group:has(textarea), .form-group:has(.g-recaptcha)) { grid-column: 1 / -1; }
.contato-titulo { margin: 0 0 .75rem; font-size: 1.6rem; font-weight: 800; letter-spacing: -.02em; }
.contato-aviso { display: flex; gap: .75rem; margin: 0 0 1.5rem; padding: .9rem 1.1rem; border-radius: .75rem; background: var(--cj-verde-claro); color: var(--cj-texto); line-height: 1.55; }
.contato-aviso i { margin-top: .25rem; color: var(--cj-verde-escuro); }
.contato-aviso span { min-width: 0; overflow-wrap: anywhere; }
.contato-aviso a { font-weight: 700; }
@media (max-width: 575.98px) {
  .contato-cartao { padding: 1.25rem 1.1rem; }
  .contato-cartao form { grid-template-columns: minmax(0, 1fr); }
}

/* ==========================================================================
   Formulários longos da área do usuário (meus dados, currículo) divididos em
   seções: cada seção é um cartão com ícone, título, explicação e botão próprio.
   ========================================================================== */
.secoes-formulario { display: grid; gap: 1.5rem; }
.secao-formulario { scroll-margin-top: 6rem; padding: 1.5rem 1.75rem; background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); }
.secao-formulario-topo { display: flex; gap: 1rem; align-items: flex-start; margin-bottom: 1.35rem; padding-bottom: 1.1rem; border-bottom: 1px solid var(--cj-borda); }
.secao-formulario-topo > i {
  flex: 0 0 auto; display: grid; place-items: center; width: 2.75rem; height: 2.75rem;
  border-radius: .75rem; background: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-size: 1.15rem;
}
.secao-formulario-topo h2 { margin: 0; font-size: 1.3rem; font-weight: 800; letter-spacing: -.01em; }
.secao-formulario-topo p { margin: .2rem 0 0; color: var(--cj-texto-suave); }
.secao-formulario-subtitulo { margin: 1.75rem 0 .85rem; color: var(--cj-texto-suave); font-size: .8rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.secao-formulario-topo + .secao-formulario-subtitulo { margin-top: 0; }
.secao-formulario .form-group { margin-bottom: 0; }
.secao-formulario-rodape { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .75rem; margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--cj-borda); }
.secao-formulario-rodape .btn { min-width: 11rem; }

/* Escolha entre duas opções em forma de botão (ex.: Particular / Profissional) */
.opcoes-em-botao { display: inline-flex; flex-wrap: wrap; gap: .5rem; }
.opcoes-em-botao .btn { padding: .6rem 1.1rem; border: 1px solid var(--cj-campo-borda); border-radius: var(--cj-campo-raio); background: #fff; color: var(--cj-texto); font-weight: 600; }
.opcoes-em-botao .btn:hover { border-color: var(--cj-verde); }
.opcoes-em-botao .btn-check:checked + .btn { border-color: var(--cj-verde); background: var(--cj-verde-claro); color: var(--cj-verde-escuro); }
.opcoes-em-botao .btn-check:focus-visible + .btn { box-shadow: var(--cj-campo-anel); }

/* Foto já enviada, com a opção de excluir */
.foto-atual { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.foto-atual img { width: 6rem; height: 6rem; object-fit: cover; border-radius: 50%; border: 1px solid var(--cj-borda); }
.foto-atual p { margin: 0 0 .5rem; color: var(--cj-texto-suave); }

@media (max-width: 575.98px) {
  .secao-formulario { padding: 1.15rem 1rem; }
  .secao-formulario-topo > i { width: 2.4rem; height: 2.4rem; font-size: 1rem; }
  .secao-formulario-rodape .btn { width: 100%; }
  .opcoes-em-botao { display: flex; }
  .opcoes-em-botao .btn { flex: 1 1 0; }
}
/* Seletor de foto do perfil e do currículo: quadrado pequeno, não ocupa a largura toda */
.secao-formulario .seletor-foto { max-width: 11rem; aspect-ratio: 1; }

/* ==========================================================================
   Meu currículo (meu_curriculo_atualizar.php): etapas em abas com ícone e
   cada formulário em um cartão (.secao-formulario, mesmo padrão de Meus dados)
   ========================================================================== */
.etapas-curriculo {
  flex-wrap: nowrap; gap: .5rem; margin-bottom: 1.25rem; padding: .4rem;
  overflow-x: auto; scrollbar-width: thin;
  background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra);
}
.etapas-curriculo .nav-item { flex: 1 1 auto; }
.etapas-curriculo .nav-link {
  display: flex; align-items: center; justify-content: center; gap: .5rem; height: 100%;
  padding: .6rem .7rem; border-radius: .65rem; color: var(--cj-texto-suave); font-size: .94rem; font-weight: 600; white-space: nowrap;
}
.etapas-curriculo .nav-link:hover { background: var(--cj-fundo); color: var(--cj-texto); }
.etapas-curriculo .nav-link.active { background: var(--cj-verde); color: #fff; }
.etapas-curriculo .nav-link i { font-size: .95rem; }

/* A aba deixa de ser um painel branco: os cartões dos formulários ficam direto sobre o fundo */
.profile-edit.tab-pane:has(> .secao-formulario) { padding: 0; background: transparent; }
.profile-edit.tab-pane > .secao-formulario + .secao-formulario { margin-top: 1.25rem; }
/* Primeiro título do cartão: título da seção; os seguintes (ex.: endereço e contato): subtítulos */
.secao-formulario h2.heading-md { margin: 0 0 1.1rem; padding-bottom: .9rem; border-bottom: 1px solid var(--cj-borda); font-size: 1.3rem; font-weight: 800; letter-spacing: -.01em; }
.secao-formulario h2.heading-md ~ h2.heading-md {
  margin-top: 1.75rem; padding: 1.25rem 0 0; border-top: 1px solid var(--cj-borda); border-bottom: 0;
  color: var(--cj-texto-suave); font-size: .8rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
}
.secao-formulario .margin-bottom-20 { margin-bottom: 0 !important; }
.secao-formulario .btn-sm { padding: .55rem 1.1rem; font-size: .95rem; }
/* Formulários de inclusão ("novo"): borda tracejada para diferenciar dos itens já cadastrados */
.secao-formulario:is(#formExpNova, #formFormacaoCursos_0, #formIdioma_0, #formSoftware_0) { border-style: dashed; background: #fcfdfb; }
.secao-formulario:is(#formExpNova, #formFormacaoCursos_0, #formIdioma_0, #formSoftware_0) h2.heading-md::before {
  content: "\2b"; font: var(--fa-font-solid); margin-right: .5rem; color: var(--cj-verde-escuro);
}
@media (max-width: 575.98px) {
  .etapas-curriculo .nav-link { padding: .55rem .75rem; font-size: .92rem; }
}
/* Botões "Salvar" e "Remover" dos itens do currículo lado a lado, dividindo a largura no celular */
@media (max-width: 575.98px) {
  .secao-formulario [class*="col-"]:has(> .btn-sm) { display: flex; flex-wrap: wrap; gap: .5rem; }
  .secao-formulario [class*="col-"]:has(> .btn-sm) > .btn { flex: 1 1 auto; margin: 0; }
}

/* Menu lateral da área do usuário: faixa separando "Excluir conta" e "Sair" dos demais links */
.list-group > .menu-area-usuario-divisoria { height: .45rem; margin: 0; border: 0; background: var(--cj-fundo); opacity: 1; }

/* Meu currículo: em telas menores as etapas quebram o nome em duas linhas, com o ícone em cima,
   e cabem todas sem barra de rolagem (6 por linha; no celular, 3 por linha) */
@media (max-width: 991.98px) {
  .etapas-curriculo { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .35rem; overflow: visible; }
  .etapas-curriculo .nav-link { flex-direction: column; gap: .3rem; padding: .55rem .3rem; font-size: .82rem; line-height: 1.2; text-align: center; white-space: normal; }
  .etapas-curriculo .nav-link i { font-size: 1.05rem; }
}
@media (max-width: 575.98px) {
  .etapas-curriculo { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ==========================================================================
   Botão de favorito (layout/favoritos.php + assets/js/favoritos.js)
   ========================================================================== */
.botao-favorito { cursor: pointer; }
.botao-favorito[aria-pressed="true"] i { color: #e0245e; }
.btn.botao-favorito { display: inline-flex; align-items: center; gap: .4rem; }
button.painel-padrao.botao-favorito { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; color: var(--cj-texto); font: inherit; font-weight: 600; }

/* Coração redondo sobre a foto dos cartões da página inicial */
.cartao-com-favorito { position: relative; }
.botao-favorito--icone {
  position: absolute; z-index: 2; top: .6rem; right: calc(var(--bs-gutter-x) * .5 + .6rem);
  display: grid; place-items: center; width: 2.35rem; height: 2.35rem; padding: 0;
  border: 0; border-radius: 50%; background: rgba(255, 255, 255, .94); color: var(--cj-texto-suave);
  box-shadow: 0 2px 8px rgba(16, 24, 40, .15); transition: transform .15s ease, color .15s ease;
}
.botao-favorito--icone:hover { transform: scale(1.08); color: #e0245e; }
.botao-favorito--icone .botao-favorito-texto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.botao-favorito--icone i { font-size: 1.05rem; }

/* ==========================================================================
   Meus favoritos (meus_favoritos.php) e estados vazios da área do usuário
   ========================================================================== */
.resultado-da-area { margin: 0 0 1rem; color: var(--cj-texto-suave); }
.resultado-da-area strong { color: var(--cj-texto); font-size: 1.1rem; }
.lista-favoritos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-bottom: 1.5rem; }
/* Altura fixa: a foto se ajusta ao cartão (nunca o contrário), então todos os cartões ficam iguais */
.favorito { display: flex; height: 12.75rem; overflow: hidden; background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); transition: box-shadow .2s ease; }
.favorito:hover { box-shadow: 0 8px 22px rgba(16, 24, 40, .10); }
.favorito-foto { position: relative; flex: 0 0 9.5rem; display: grid; place-items: center; background: #eef1f4; color: #9aa3ad; font-size: 1.6rem; overflow: hidden; }
.favorito-foto img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.favorito-corpo { display: flex; flex-direction: column; gap: .3rem; min-width: 0; padding: .9rem 1rem; flex: 1 1 auto; }
.favorito-secao { display: flex; min-width: 0; white-space: nowrap; overflow: hidden; align-items: center; gap: .35rem; color: var(--cj-verde-escuro); font-size: .78rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.favorito h3 { margin: 0; font-size: 1rem; font-weight: 700; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.favorito h3 a { color: var(--cj-texto); }
.favorito h3 a:hover { color: var(--cj-verde-escuro); }
.favorito-local { display: flex; align-items: center; gap: .35rem; min-width: 0; margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--cj-texto-suave); font-size: .85rem; }
.favorito-local i { color: #8a8f98; font-size: .78rem; }
.favorito-preco { margin: 0; color: var(--cj-verde-escuro); font-size: 1.08rem; font-weight: 700; }
.favorito-corpo > * { flex-shrink: 0; } /* o título de duas linhas não pode ser espremido */
.favorito-acoes .btn { white-space: nowrap; }
/* Cartão estreito (celular ou duas colunas em tela média): botões sem ícone para caberem lado a lado */
.favorito { container-type: inline-size; }
@container (max-width: 23.5rem) {
  .favorito-foto { flex-basis: 7.5rem; }
  .favorito-corpo { padding-left: .85rem; padding-right: .85rem; }
  .favorito-acoes { gap: .35rem; }
  .favorito-acoes .btn { padding-left: .6rem; padding-right: .6rem; }
  .favorito-acoes .btn i { display: none; }
}
.favorito-acoes { display: flex; flex-wrap: nowrap; gap: .5rem; margin-top: auto; padding-top: .5rem; }
.favorito--indisponivel { opacity: .8; }
.favorito--indisponivel .favorito-local { white-space: normal; }
.favorito--indisponivel .favorito-foto { font-size: 1.4rem; }

.estado-vazio { padding: 3rem 1.5rem; text-align: center; background: #fff; border: 1px dashed var(--cj-campo-borda-hover); border-radius: var(--cj-raio); }
.estado-vazio > i { display: inline-grid; place-items: center; width: 4rem; height: 4rem; margin-bottom: 1rem; border-radius: 50%; background: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-size: 1.6rem; }
.estado-vazio h2 { margin: 0 0 .5rem; font-size: 1.3rem; font-weight: 800; }
.estado-vazio p { max-width: 32rem; margin: 0 auto 1.25rem; color: var(--cj-texto-suave); }

@media (max-width: 767.98px) {
  .lista-favoritos { grid-template-columns: minmax(0, 1fr); }
}

/* ==========================================================================
   Mensagens recebidas (minhas_mensagens.php): um cartão por anúncio, mensagens em balões
   ========================================================================== */
.lista-mensagens { --bs-accordion-border-color: var(--cj-borda); --bs-accordion-active-bg: #fff; --bs-accordion-active-color: var(--cj-texto); --bs-accordion-btn-focus-box-shadow: var(--cj-campo-anel); display: grid; gap: 1rem; }
.lista-mensagens .accordion-item { border: 1px solid var(--cj-borda) !important; border-radius: var(--cj-raio) !important; overflow: hidden; box-shadow: var(--cj-sombra); }
.lista-mensagens .accordion-button { gap: 1rem; padding: 1rem 1.25rem; font-weight: 700; }
.lista-mensagens .accordion-button:not(.collapsed) { box-shadow: inset 0 -1px 0 var(--cj-borda); }
.lista-mensagens-anuncio { flex: 1 1 auto; min-width: 0; line-height: 1.35; }
.lista-mensagens-contagem { display: inline-flex; align-items: center; gap: .5rem; flex: 0 0 auto; color: var(--cj-texto-suave); font-size: .88rem; font-weight: 600; }
.lista-mensagens .accordion-body { display: grid; gap: 1rem; padding: 1.25rem; background: var(--cj-fundo); }
.mensagem { padding: 1rem 1.15rem; background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); }
.mensagem--nova { border-left: 4px solid #d9485a; }
.mensagem-topo { display: flex; align-items: center; gap: .75rem; }
.mensagem-avatar { display: grid; place-items: center; flex: 0 0 2.5rem; width: 2.5rem; height: 2.5rem; border-radius: 50%; background: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-weight: 800; }
.mensagem-remetente { display: flex; flex-wrap: wrap; align-items: center; gap: .15rem .6rem; min-width: 0; }
.mensagem-data { flex: 1 0 100%; color: var(--cj-texto-suave); font-size: .82rem; }
.mensagem-texto { margin: .85rem 0; padding: .85rem 1rem; border-radius: .75rem; background: var(--cj-fundo); color: var(--cj-texto); line-height: 1.6; overflow-wrap: anywhere; }
.mensagem-acoes { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; }
.mensagem-contatos { display: flex; flex-wrap: wrap; gap: .35rem 1.25rem; font-size: .9rem; }
.mensagem-contatos a { display: inline-flex; align-items: center; gap: .4rem; font-weight: 600; overflow-wrap: anywhere; }
.mensagem-botoes { display: flex; flex-wrap: wrap; gap: .5rem; }
@media (max-width: 575.98px) {
  .lista-mensagens .accordion-button { flex-wrap: wrap; gap: .4rem; padding: .9rem 1rem; }
  .lista-mensagens-contagem { flex: 1 0 100%; }
  .mensagem-botoes, .mensagem-botoes .btn { flex: 1 1 auto; }
}

/* ==========================================================================
   Visualizar currículo (Minha área): barra de ações + documento em um cartão
   O documento em si vem de assets/css/curriculo_documento.css
   ========================================================================== */
.barra-do-curriculo {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: 1rem;
  padding: .85rem 1rem;
  background: #fff;
  border: 1px solid var(--cj-borda);
  border-radius: var(--cj-raio);
  box-shadow: var(--cj-sombra);
}
.barra-do-curriculo-acoes { display: flex; flex-wrap: wrap; gap: .5rem; }
.cartao-do-curriculo {
  padding: 2.25rem 2.5rem 1.75rem;
  background: #fff;
  border: 1px solid var(--cj-borda);
  border-top: 6px solid var(--cv-destaque, var(--cj-verde-escuro));
  border-radius: var(--cj-raio-grande);
  box-shadow: var(--cj-sombra);
}
@media (max-width: 575.98px) {
  .barra-do-curriculo .btn { flex: 1 1 auto; }
  .barra-do-curriculo-acoes { flex: 1 1 100%; }
  .cartao-do-curriculo { padding: 1.25rem 1rem 1rem; }
}

/* ==========================================================================
   Anunciar · listagem dos anúncios de uma categoria (layout/meus_anuncios_gerenciar.php)
   ========================================================================== */
.barra-gerenciar-anuncios {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .75rem 1rem;
  padding: .85rem 1rem;
  background: #fff;
  border: 1px solid var(--cj-borda);
  border-radius: var(--cj-raio);
  box-shadow: var(--cj-sombra);
}
.gerenciar-anuncios-selecionar { display: inline-flex; align-items: center; gap: .6rem; margin: 0; color: var(--cj-texto-suave); cursor: pointer; }
.gerenciar-anuncios-selecionar strong { color: var(--cj-texto); }
.gerenciar-anuncios-selecionar .form-check-input { margin: 0; }
.barra-gerenciar-anuncios-acoes { display: flex; flex-wrap: wrap; gap: .5rem; }
.gerenciar-anuncios-dica { margin: .85rem .25rem 0; color: var(--cj-texto-suave); font-size: .9rem; }
.gerenciar-anuncios-dica > i { margin-right: .35rem; color: var(--cj-laranja, #f7941d); }
.gerenciar-anuncios-dica a { font-weight: 600; }

.lista-anuncios-gerenciados { display: grid; gap: .85rem; margin: 1rem 0 1.5rem; padding: 0; list-style: none; }
.anuncio-gerenciado {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  padding: 1.1rem 1.25rem;
  background: #fff;
  border: 1px solid var(--cj-borda);
  border-radius: var(--cj-raio);
  box-shadow: var(--cj-sombra);
  transition: box-shadow .15s ease;
}
.anuncio-gerenciado:hover { box-shadow: 0 6px 18px rgba(16, 24, 40, .08); }
.anuncio-gerenciado:has(.anuncio-gerenciado-marcar:checked) { background: var(--cj-verde-claro, #f3f9ea); border-color: var(--cj-verde, #7cb82f); }
.anuncio-gerenciado--destaque { border-left: 4px solid var(--cj-laranja, #f7941d); }
.anuncio-gerenciado-marcar { flex: 0 0 auto; margin-top: .3rem; }
.anuncio-gerenciado-conteudo { flex: 1; min-width: 0; }
.anuncio-gerenciado-selos { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .45rem; }
.selo-situacao {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .15rem .6rem;
  border-radius: 999px;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .02em;
}
.selo-situacao--publicado { background: #e9f5dc; color: #3f6b0c; }
.selo-situacao--em-analise { background: #fff4e0; color: #9a5b00; }
.selo-situacao--inativo { background: #eef0f2; color: #5f6368; }
.selo-situacao--destaque { background: #fff0e0; color: #b45309; }
.anuncio-gerenciado-titulo { display: block; margin: 0; color: var(--cj-texto); font-size: 1.05rem; font-weight: 700; line-height: 1.35; overflow-wrap: anywhere; cursor: pointer; }
.anuncio-gerenciado-detalhes { margin: .3rem 0 0; color: var(--cj-texto-suave); font-size: .88rem; line-height: 1.5; }
/* Os avisos de detalhe_anuncio.php vêm com cor inline vermelha; aqui ficam no tom de alerta do tema */
.anuncio-gerenciado-detalhes span[style] { color: #b45309 !important; font-weight: 600; }
.anuncio-gerenciado-acoes { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: .85rem; }
.anuncio-gerenciado-destacar { margin-left: auto; }
@media (max-width: 575.98px) {
  .barra-gerenciar-anuncios-acoes, .barra-gerenciar-anuncios-acoes .btn { flex: 1 1 100%; }
  .anuncio-gerenciado { padding: 1rem; gap: .75rem; }
  .anuncio-gerenciado-acoes .btn { flex: 1 1 calc(50% - .45rem); }
  .anuncio-gerenciado-destacar { margin-left: 0; flex-basis: 100% !important; }
}

/* ==========================================================================
   Anunciar · formulários de inclusão e alteração (anunciar_<categoria>_inse_1 / _alte_1)
   Seções em cartões (abrirSecaoDoFormulario) e planos de publicação lado a lado
   ========================================================================== */
.secao-formulario > br, .secao-formulario > .row + br { display: none; }
.secao-formulario > hr { margin: 1.25rem 0; border-color: var(--cj-borda); opacity: 1; }
.secao-formulario .margin-bottom-20 { margin-bottom: 0 !important; }
.secao-formulario .form-group.mb-3 { margin-bottom: 1rem !important; }
.secao-formulario-topo + .secao-formulario-subtitulo, .secao-formulario > .secao-formulario-subtitulo:first-child { margin-top: 0; }

/* Planos: um cartão por plano, preço e botão à direita */
.secao-publicar .select-package > div { padding: 0 !important; }
.secao-publicar .select-package > div { display: grid; gap: .85rem; }
.secao-publicar .pricing-list {
  position: relative;
  margin: 0;
  padding: 1.1rem 1.25rem;
  background: #fff;
  border: 1px solid var(--cj-borda);
  border-radius: var(--cj-raio);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.secao-publicar .pricing-list:hover { border-color: var(--cj-verde); box-shadow: 0 6px 18px rgba(16, 24, 40, .08); }
.secao-publicar .pricing-list + .pricing-list { border-color: #f9c79c; background: linear-gradient(135deg, #fff 60%, #fff6ee); }
.secao-publicar .pricing-list > .row { align-items: center; margin: 0; row-gap: .75rem; }
.secao-publicar .pricing-list > .row > [class*="col-"] { padding: 0; }
.secao-publicar .pricing-list > .row > [class*="col-md-9"] { padding-right: 1.25rem; }
.secao-publicar .pricing-list h3 { margin: 0 0 .25rem; padding: 0; color: var(--cj-texto); font-size: 1.1rem; font-weight: 800; }
.secao-publicar .pricing-list h3 small { margin-left: .35rem; color: var(--cj-texto-suave); font-size: .8rem; font-weight: 600; }
.secao-publicar .pricing-list p { margin: 0; color: var(--cj-texto-suave); font-size: .92rem; line-height: 1.5; }
.secao-publicar .pricing-list-price { display: grid; gap: .5rem; }
.secao-publicar .pricing-list-price h4 { margin: 0; padding: 0; color: var(--cj-texto); font-size: 1.5rem; font-weight: 800; line-height: 1; }
.secao-publicar .pricing-list-price .btn { width: 100%; padding: .55rem 1rem; font-size: .95rem; font-weight: 700; line-height: 1.3; }
.secao-publicar .pricing-list + .pricing-list .pricing-list-price .btn { --bs-btn-bg: var(--cj-laranja); --bs-btn-border-color: var(--cj-laranja); --bs-btn-hover-bg: var(--cj-laranja-escuro); --bs-btn-hover-border-color: var(--cj-laranja-escuro); }
/* Anúncio que já está em destaque: só o botão de salvar */
.secao-publicar > .row .btn { min-width: 12rem; }
@media (max-width: 767.98px) {
  .secao-publicar .pricing-list > .row > [class*="col-md-9"] { padding-right: 0; }
  .secao-publicar .pricing-list-price { grid-template-columns: auto 1fr; align-items: center; text-align: left !important; gap: 1rem; }
  .secao-publicar > .row .btn { width: 100%; }
}

/* Imóveis: aviso de integração para imobiliárias, antes do formulário */
.aviso-integracao-imoveis {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  padding: 1.1rem 1.35rem;
  background: var(--cj-verde-claro);
  border: 1px solid #cfe5b0;
  border-radius: var(--cj-raio);
}
.aviso-integracao-imoveis > i {
  flex: 0 0 2.6rem; display: grid; place-items: center; height: 2.6rem;
  border-radius: .75rem; background: #fff; color: var(--cj-verde-escuro); font-size: 1.1rem;
}
.aviso-integracao-imoveis h2 { margin: 0 0 .3rem; font-size: 1.05rem; font-weight: 800; }
.aviso-integracao-imoveis p { margin: 0 0 .75rem; color: var(--cj-texto-suave); font-size: .92rem; }
.secoes-formulario > form { display: grid; gap: 1.5rem; }
/* Espaço reservado (vazio) do carregamento das cidades: não pode ocupar uma linha inteira do grid */
.row > #divCidade2:empty { display: none; }
/* Itens do grid podem encolher (e-mails e textos longos quebram em vez de alargar a página) */
.secoes-formulario > *, .secoes-formulario > form > * { min-width: 0; }
.aviso-integracao-imoveis p { overflow-wrap: anywhere; }

/* ==========================================================================
   Meus dados · foto do perfil (assets/js/foto_do_perfil.js)
   Foto redonda com selo de câmera; tocar troca a imagem, que é salva na hora.
   No computador fica à direita dos campos; no celular, foto e textos lado a lado.
   ========================================================================== */
.foto-do-perfil { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: .35rem 1rem; }
.foto-do-perfil-quadro {
  position: relative;
  grid-row: span 3;
  display: grid;
  place-items: center;
  width: 7.5rem;
  aspect-ratio: 1;
  margin: 0;
  border: 2px dashed var(--cj-campo-borda-hover);
  border-radius: 50%;
  background: #f7f8fa;
  color: var(--cj-texto-suave);
  cursor: pointer;
  transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
.foto-do-perfil-quadro:hover, .foto-do-perfil-quadro:has(input:focus-visible) { border-color: var(--cj-verde); background: var(--cj-verde-claro); color: var(--cj-verde-escuro); }
.foto-do-perfil-quadro:has(input:focus-visible) { box-shadow: 0 0 0 4px rgba(125, 186, 33, .3); }
.foto-do-perfil.tem-foto .foto-do-perfil-quadro { border: 3px solid #fff; background: #eef1f4; box-shadow: 0 0 0 1px var(--cj-borda), 0 6px 16px rgba(16, 24, 40, .12); }
.foto-do-perfil-imagem { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.foto-do-perfil-imagem[hidden] { display: none; }
.foto-do-perfil-vazia { display: flex; flex-direction: column; align-items: center; gap: .3rem; font-size: .82rem; font-weight: 600; text-align: center; }
.foto-do-perfil-vazia i { font-size: 1.4rem; }
.foto-do-perfil.tem-foto .foto-do-perfil-vazia { display: none; }
/* Selo de câmera sempre visível (no celular não existe "passar o mouse") e faixa "Trocar foto" no hover */
.foto-do-perfil-trocar { display: none; }
.foto-do-perfil.tem-foto .foto-do-perfil-trocar {
  position: absolute;
  right: .1rem;
  bottom: .1rem;
  display: grid;
  place-items: center;
  width: 2.2rem;
  height: 2.2rem;
  border: 2px solid #fff;
  border-radius: 50%;
  background: var(--cj-verde-escuro);
  color: #fff;
  font-size: .85rem;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .2);
}
.foto-do-perfil-trocar span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.foto-do-perfil.tem-foto .foto-do-perfil-quadro:hover .foto-do-perfil-trocar { background: var(--cj-verde); }
.foto-do-perfil-carregando {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  border-radius: 50%;
  background: rgba(255, 255, 255, .78);
  color: var(--cj-verde-escuro);
  font-size: .8rem;
  font-weight: 700;
}
.foto-do-perfil-carregando[hidden] { display: none; }
.foto-do-perfil.salvando .foto-do-perfil-quadro { pointer-events: none; }
.foto-do-perfil-ajuda { margin: 0; color: var(--cj-texto-suave); font-size: .85rem; line-height: 1.4; }
.foto-do-perfil-status { margin: 0; font-size: .85rem; font-weight: 600; }
.foto-do-perfil-status:empty { display: none; }
.foto-do-perfil-status--sucesso { color: var(--cj-verde-escuro); }
.foto-do-perfil-status--sucesso::before { content: "\f00c"; margin-right: .35rem; font: var(--fa-font-solid); }
.foto-do-perfil-status--erro { color: #b42318; }
.foto-do-perfil-excluir { justify-self: start; color: #b42318; font-size: .85rem; font-weight: 600; }
.foto-do-perfil-excluir[hidden] { display: none; }
.foto-do-perfil-excluir:hover { color: #8f1d14; }

@media (min-width: 768px) {
  .coluna-da-foto { display: flex; flex-direction: column; align-items: center; text-align: center; }
  .coluna-da-foto > .form-label { align-self: stretch; text-align: center; }
  .foto-do-perfil { grid-template-columns: minmax(0, 1fr); justify-items: center; max-width: 13rem; gap: .5rem; }
  .foto-do-perfil-quadro { grid-row: auto; width: 9.5rem; margin-bottom: .35rem; }
  .foto-do-perfil-excluir { justify-self: center; }
}

/* ==========================================================================
   Listas de opção (assets/js/seletor.js): o <select> fica escondido; o botão usa o estilo do
   campo (.form-select) e a lista abre num painel branco, só com texto, no verde do site.
   ========================================================================== */
.seletor { position: relative; display: block; min-width: 0; }
.seletor > select { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; pointer-events: none; }
.seletor-botao { display: block; width: 100%; text-align: left; }
.seletor-texto { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.seletor-botao.seletor-sem-valor { color: var(--cj-texto-suave); }
.seletor.aberto .seletor-botao { border-color: var(--cj-verde); box-shadow: var(--cj-campo-anel); }
.seletor-botao:disabled { opacity: 1; }

.seletor-painel {
  position: fixed;
  z-index: 1090; /* acima dos modais do Bootstrap */
  display: flex;
  flex-direction: column;
  width: max-content;
  padding: .4rem;
  background: #fff;
  border: 1px solid var(--cj-borda);
  border-radius: var(--cj-raio);
  box-shadow: 0 18px 45px rgba(31, 35, 40, .16);
  animation: seletorAbrir .14s ease-out;
}
.seletor-painel[hidden] { display: none; }
.seletor-painel.para-cima { animation-name: seletorAbrirParaCima; }
.seletor-titulo {
  margin: 0 .3rem .35rem;
  padding: .35rem .5rem .55rem;
  border-bottom: 1px solid var(--cj-borda);
  color: var(--cj-texto-suave);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.seletor-busca { position: relative; flex: 0 0 auto; margin: 0 0 .35rem; }
.seletor-busca[hidden] { display: none; }
.seletor-busca i { position: absolute; top: 50%; left: .75rem; transform: translateY(-50%); color: var(--cj-texto-suave); font-size: .85rem; }
.seletor-busca input {
  width: 100%;
  min-height: 2.4rem;
  padding: .4rem .75rem .4rem 2.15rem;
  border: 1px solid var(--cj-borda);
  border-radius: .65rem;
  background: #f7f8fa;
  font-size: .95rem;
}
.seletor-busca input:focus { border-color: var(--cj-verde); background: #fff; outline: 0; box-shadow: var(--cj-campo-anel); }
.seletor-lista { flex: 1 1 auto; min-height: 0; margin: 0; padding: 0; overflow-y: auto; overscroll-behavior: contain; list-style: none; }
.seletor-lista:focus { outline: 0; }
.seletor-opcao {
  position: relative;
  padding: .55rem .85rem;
  border-radius: .6rem;
  color: var(--cj-texto);
  font-size: .95rem;
  line-height: 1.3;
  cursor: pointer;
  transition: background-color .1s ease, color .1s ease;
}
.seletor-opcao[hidden] { display: none; }
.seletor-opcao--vazia { color: var(--cj-texto-suave); }
.seletor-opcao.destacado { background: var(--cj-verde-claro); color: var(--cj-verde-escuro); }
/* Opção escolhida: negrito verde, com um traço à esquerda */
.seletor-opcao[aria-selected="true"] { color: var(--cj-verde-escuro); font-weight: 700; }
.seletor-opcao[aria-selected="true"]::before {
  content: "";
  position: absolute;
  top: .5rem;
  bottom: .5rem;
  left: .3rem;
  width: 3px;
  border-radius: 3px;
  background: var(--cj-verde);
}
.seletor-opcao[aria-disabled="true"] { color: #a7adb4; cursor: not-allowed; background: none; }
.seletor-grupo { padding: .6rem .85rem .3rem; color: var(--cj-texto-suave); font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.seletor-grupo[hidden] { display: none; }
.seletor-vazio { margin: 0; padding: .75rem .85rem; color: var(--cj-texto-suave); font-size: .9rem; }
.seletor-vazio[hidden] { display: none; }
@keyframes seletorAbrir { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
@keyframes seletorAbrirParaCima { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .seletor-painel { animation: none; } }

/* Filtros das listagens: o filtro em uso continua destacado em verde */
.grid-filtro .seletor-botao.fora-da-primeira-opcao { border-color: var(--cj-verde); background-color: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-weight: 600; }

/* ---------- Página inicial · categoria da busca (assets/js/busca_inicio.js) ---------- */
.seletor-categoria-botao {
  display: flex;
  align-items: center;
  gap: .6rem;
  width: 100%;
  min-height: 2.75rem;
  padding: .25rem .85rem;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--cj-texto-suave);
  font-size: 1rem;
  text-align: left;
  cursor: pointer;
  transition: background-color .15s ease, color .15s ease;
}
.seletor-categoria-botao .seletor-texto { flex: 1; min-width: 0; }
.seletor-categoria-botao::after { content: "\f078"; font: var(--fa-font-solid); font-size: .72rem; color: var(--cj-texto-suave); transition: transform .2s ease; }
.seletor-categoria .seletor.aberto .seletor-categoria-botao::after { transform: rotate(180deg); }
.seletor-categoria-botao:hover, .seletor-categoria .seletor.aberto .seletor-categoria-botao { background: #f3f5f7; }
.seletor-categoria-botao:focus-visible { outline: 3px solid rgba(125, 186, 33, .45); outline-offset: 1px; }
.seletor-categoria-botao.tem-valor { color: var(--cj-texto); font-weight: 600; }
.seletor-categoria--pendente .seletor-categoria-botao { background: #fff4e0; color: #9a5b00; }
.seletor-categoria--pendente.seletor-painel .seletor-titulo { color: #9a5b00; }

.seletor-categoria-lista { width: 27rem; padding: .65rem; border-radius: var(--cj-raio-grande); box-shadow: 0 24px 60px rgba(31, 35, 40, .18); }
.seletor-categoria-lista .seletor-lista { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .15rem .35rem; align-content: start; }
.seletor-categoria-lista .seletor-opcao { font-weight: 500; }
.seletor-categoria-lista .seletor-opcao[aria-selected="true"] { font-weight: 700; }

@media (max-width: 767.98px) {
  .seletor-categoria-botao { border-radius: var(--cj-raio-controle); padding-left: .25rem; }
}
@media (max-width: 420px) {
  .seletor-categoria-lista .seletor-lista { grid-template-columns: minmax(0, 1fr); }
}

/* ==========================================================================
   Meu currículo · Softwares: botões na mesma linha dos campos, alinhados pela base
   ========================================================================== */
.linha-com-acoes { align-items: flex-end; }
.acoes-da-linha { display: flex; flex-wrap: wrap; gap: .5rem; }
@media (min-width: 992px) { .acoes-da-linha { flex-wrap: nowrap; } }
.acoes-da-linha .btn { min-height: 2.75rem; display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; }
@media (max-width: 575.98px) {
  .acoes-da-linha .btn { flex: 1 1 100%; }
}

/* ==========================================================================
   Meu currículo · Áreas de interesse: cada opção é um bloco inteiro clicável,
   com área de toque confortável no celular e destaque verde quando marcada
   ========================================================================== */
.grade-de-opcoes { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .55rem; margin-bottom: 1.75rem; }
.opcao-marcavel {
  display: flex;
  align-items: center;
  gap: .75rem;
  min-height: 3.1rem;
  margin: 0;
  padding: .6rem .9rem;
  border: 1px solid var(--cj-borda);
  border-radius: .75rem;
  background: #fff;
  color: var(--cj-texto);
  font-size: .95rem;
  font-weight: 500;
  line-height: 1.3;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  transition: border-color .15s ease, background-color .15s ease, color .15s ease;
}
.opcao-marcavel:hover { border-color: var(--cj-campo-borda-hover); background: #fafbfc; }
.opcao-marcavel .form-check-input { flex: 0 0 auto; width: 1.3rem; height: 1.3rem; margin: 0; border-radius: .4rem; cursor: pointer; }
.opcao-marcavel:has(input:checked) { border-color: var(--cj-verde); background: var(--cj-verde-claro); color: var(--cj-verde-escuro); font-weight: 600; }
.opcao-marcavel:has(input:focus-visible) { outline: 3px solid rgba(125, 186, 33, .4); outline-offset: 2px; }
.opcao-marcavel .form-check-input:focus { box-shadow: none; }
@media (max-width: 575.98px) {
  .grade-de-opcoes { grid-template-columns: minmax(0, 1fr); }
  .opcao-marcavel { min-height: 3.4rem; font-size: 1rem; }
}

/* Janela "Qual é o seu nível no idioma?" (modal_duvida_idioma.php) */
.niveis-de-idioma-introducao { margin: 0 0 1rem; color: var(--cj-texto-suave); }
.niveis-de-idioma { display: grid; gap: .6rem; margin: 0; }
.niveis-de-idioma > div { padding: .75rem .9rem; border: 1px solid var(--cj-borda); border-left: 4px solid var(--cj-verde); border-radius: .75rem; background: #fff; }
.niveis-de-idioma dt { margin-bottom: .2rem; color: var(--cj-verde-escuro); font-weight: 800; }
.niveis-de-idioma dd { margin: 0; color: var(--cj-texto); font-size: .95rem; line-height: 1.5; }

/* ==========================================================================================
 * Destacar anúncio (anuncio_destacar.php) e retorno do pagamento (anuncio_destacar_retorno.php)
 * ======================================================================================== */
.destacar fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.destacar fieldset legend { float: none; width: auto; }

/* Anúncio que será destacado */
.destacar-anuncio { display: flex; gap: 1rem; align-items: center; padding: 1rem; background: #fff; border: 1px solid var(--cj-borda); border-radius: var(--cj-raio); box-shadow: var(--cj-sombra); }
.destacar-anuncio-foto { flex: 0 0 6.5rem; height: 5rem; display: grid; place-items: center; overflow: hidden; border-radius: var(--cj-raio-controle); background: var(--cj-fundo); color: #9aa3ad; font-size: 1.6rem; }
.destacar-anuncio-foto img { width: 100%; height: 100%; object-fit: cover; }
.destacar-anuncio-dados { min-width: 0; }
.destacar-anuncio-codigo { color: var(--cj-verde-escuro); font-size: .78rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.destacar-anuncio h2 { margin: .15rem 0 .3rem; font-size: 1.1rem; font-weight: 700; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.destacar-anuncio p { display: flex; flex-wrap: wrap; gap: .35rem 1rem; margin: 0; color: var(--cj-texto-suave); font-size: .92rem; }
.destacar-anuncio p i { margin-right: .3rem; }
.destacar-anuncio p strong { color: var(--cj-texto); }

/* Tipos de destaque (cartões) e períodos (botões) — rádio escondido, cartão inteiro clicável */
.destacar-tipos { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: .85rem; }
.destacar-tipo, .destacar-periodo {
  position: relative; display: flex; flex-direction: column; gap: .35rem; margin: 0; padding: 1rem 1.1rem; cursor: pointer;
  background: #fff; border: 2px solid var(--cj-campo-borda); border-radius: var(--cj-raio);
  transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.destacar-tipo:hover, .destacar-periodo:hover { border-color: var(--cj-campo-borda-hover); }
.destacar-tipo:has(:checked), .destacar-periodo:has(:checked) { border-color: var(--cj-verde); background: var(--cj-verde-claro); box-shadow: var(--cj-campo-anel); }
.destacar-tipo:has(:focus-visible), .destacar-periodo:has(:focus-visible) { outline: 2px solid var(--cj-verde-escuro); outline-offset: 2px; }
.destacar-tipo:has(:checked)::after, .destacar-periodo:has(:checked)::after {
  content: "\f00c"; font-family: "Font Awesome 6 Free"; font-weight: 900; position: absolute; top: .65rem; right: .75rem;
  display: grid; place-items: center; width: 1.4rem; height: 1.4rem; border-radius: 50%; background: var(--cj-verde); color: #fff; font-size: .7rem;
}
.destacar-tipo-nivel { color: var(--cj-laranja); font-size: .8rem; letter-spacing: .1em; }
.destacar-tipo strong { font-size: 1.1rem; font-weight: 800; }
.destacar-tipo-descricao { flex: 1 1 auto; color: var(--cj-texto-suave); font-size: .9rem; line-height: 1.4; }
.destacar-tipo-preco { padding-top: .5rem; border-top: 1px dashed var(--cj-borda); font-size: .9rem; }
.destacar-tipo-preco b { color: var(--cj-verde-escuro); }

.destacar-periodos { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: .75rem; }
.destacar-periodo { align-items: flex-start; padding: .85rem 1rem; }
.destacar-periodo strong { font-size: 1.05rem; }
.destacar-periodo-preco { color: var(--cj-texto); font-weight: 600; }
.destacar-periodo-desconto { padding: .1rem .5rem; border-radius: 999px; background: #fff0e0; color: #b45309; font-size: .75rem; font-weight: 700; }

/* Resumo e pagamento */
.destacar-resumo { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem 1rem; padding: 1rem 1.25rem; border-radius: var(--cj-raio); background: var(--cj-fundo); }
.destacar-resumo-rotulo { display: block; color: var(--cj-texto-suave); font-size: .8rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.destacar-resumo-plano { font-weight: 600; }
.destacar-resumo-valor { display: flex; align-items: baseline; gap: .6rem; }
.destacar-resumo-valor s { color: var(--cj-texto-suave); }
.destacar-resumo-valor strong { color: var(--cj-verde-escuro); font-size: 1.75rem; font-weight: 800; line-height: 1; }
.destacar-rodape { justify-content: space-between; align-items: center; margin-top: 0; }
.destacar-formas { display: flex; flex-wrap: wrap; gap: .4rem 1rem; margin: 0; color: var(--cj-texto-suave); font-size: .9rem; }
.destacar-formas i { margin-right: .35rem; color: var(--cj-verde-escuro); }
.destacar-observacao { display: flex; gap: .6rem; margin: 0; color: var(--cj-texto-suave); font-size: .85rem; }
.destacar-observacao i { margin-top: .2rem; color: var(--cj-verde-escuro); }

/* Retorno do pagamento */
.destacar-retorno { text-align: center; }
.destacar-retorno-icone { display: inline-grid; place-items: center; width: 4.5rem; height: 4.5rem; margin-bottom: 1rem; border-radius: 50%; font-size: 2rem; }
.destacar-retorno--pago .destacar-retorno-icone { background: var(--cj-verde-claro); color: var(--cj-verde-escuro); }
.destacar-retorno--aguardando .destacar-retorno-icone { background: #fff4e0; color: #9a5b00; }
.destacar-retorno--cancelado .destacar-retorno-icone { background: #eef0f2; color: #5f6368; }
.destacar-retorno h2 { margin: 0 0 .5rem; font-size: 1.4rem; font-weight: 800; }
.destacar-retorno > p { max-width: 34rem; margin: 0 auto 1.25rem; color: var(--cj-texto-suave); }
.destacar-retorno-dados { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: .75rem; max-width: 40rem; margin: 0 auto 1.5rem; padding: 1rem; border-radius: var(--cj-raio); background: var(--cj-fundo); text-align: left; }
.destacar-retorno-dados dt { color: var(--cj-texto-suave); font-size: .78rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.destacar-retorno-dados dd { margin: 0; font-weight: 600; }
.destacar-retorno-acoes { display: flex; flex-wrap: wrap; justify-content: center; gap: .75rem; }

@media (max-width: 575.98px) {
  .destacar-anuncio-foto { flex-basis: 5rem; height: 4rem; }
  .destacar-rodape .btn { width: 100%; }
  .destacar-resumo-valor strong { font-size: 1.5rem; }
}
@media (prefers-reduced-motion: reduce) {
  .destacar-tipo, .destacar-periodo { transition: none; }
}
.destacar-resumo-valor s:empty { display: none; }
