/* Módulo de Imóveis (Fase 8a-8e), portado de public_html/imoveis/*.
   Reaproveita os tokens de marca e a linguagem visual já estabelecidas em
   app.css/locacoes.css (bordas finas, cantos praticamente retos, sombra só
   no hover, tipografia serifada nos títulos): a primeira versão desta folha
   tinha ficado com o visual "painel admin" da página legada original
   (badges em pílula, cabeçalho de tabela verde sólido, sombras pesadas em
   repouso) em vez de seguir o padrão do resto do site. Esta versão só troca
   valores, mantém todos os nomes de classe (nada mudou em index.php/
   ficha.php/imoveis.js). Todas as classes usam o prefixo imv- para não
   colidir com o resto do site, já que este arquivo é carregado em todas as
   páginas públicas (mesma estratégia de locacoes.css). */

:root{
  --imv-radius:2px;
  --imv-shadow-hover:0 20px 44px rgba(27,58,60,.10);
  --imv-border:var(--line);
  --imv-surface:#fff;
  --imv-text-muted:var(--muted);
  --imv-text-faint:var(--muted);
  --imv-success:#2b5d2f;
  --imv-success-bg:#e5f3e6;
  --imv-error:#8a2c22;
  --imv-error-bg:#fbe9e7;
  --imv-blue-bg:#e6eef3;
  --imv-blue-text:#345a72;
  --imv-transition:.2s ease;
  /* Altura única pros controles interativos da página (campo de filtro,
     select, chip de checkbox, aba de status/visualização, busca): sem isso,
     <select> e <input> renderizam com alturas ligeiramente diferentes entre
     navegadores, e cada botão-like tinha um padding vertical próprio,
     deixando a fileira de filtros visualmente desalinhada. */
  --imv-control-h:42px;
}

.imv-hero,.imv-page,.imv-ficha{font-family:var(--sans)}
.imv-page *,.imv-ficha *,.imv-hero *{box-sizing:border-box}

/* ===== Hero KPIs ===== */
.imv-hero{background:var(--cream);padding:20px 0;border-bottom:1px solid var(--line)}
.imv-hero-inner{display:flex;flex-wrap:wrap;background:var(--imv-surface);border:1px solid var(--line);padding:16px 24px}
.imv-hero-stat{flex:1;min-width:160px;display:flex;align-items:center;gap:14px;padding:8px 20px;border-right:1px solid var(--line)}
.imv-hero-stat:last-child{border-right:none}
.imv-hero-icon{width:18px;height:18px;flex-shrink:0;padding:9px;color:var(--green)}
.imv-hero-label{font-size:.68rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--imv-text-muted)}
.imv-hero-value{font-family:var(--serif);font-size:1.5rem;font-weight:500;color:var(--green);line-height:1.2}
.imv-hero-sub{font-size:.72rem;color:var(--imv-text-muted)}

/* ===== Page shell ===== */
.imv-page{background:#fff;padding:32px 0 88px}
/* O container padrão do site (1180px, app.css) é pensado pra páginas de
   marketing; a tabela de imóveis (14 colunas: dados + ações) precisa de mais
   espaço, mesmo valor que a página legada usava (1400px). `.container` usa
   width:min(100%,var(--container)), então max-width sozinho não tem efeito
   aqui (width explícito já vence); redefinir a variável, escopada só a
   estas duas seções, é o jeito certo de alargar sem tocar no resto do site. */
.imv-hero,.imv-page{--container:1600px}
.imv-page .container{padding:0 20px}

/* ===== Filtros ===== */
.imv-filters-card{background:var(--imv-surface);border:1px solid var(--line);padding:20px 24px;margin-bottom:24px}
.imv-filters-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.imv-filters-card .imv-filters-title-row .imv-filters-title{margin-bottom:0}
.imv-filters-title{font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--gold);margin-bottom:14px}
.imv-filters-toggle{display:inline-flex;align-items:center;gap:6px;background:transparent;border:none;cursor:pointer;font-family:var(--sans);font-size:.78rem;font-weight:500;color:var(--imv-text-muted);padding:4px 2px}
.imv-filters-toggle:hover{color:var(--green)}
.imv-filters-toggle svg{transition:transform .2s ease}
.imv-filters-card.imv-filters-collapsed .imv-filters-toggle svg{transform:rotate(-90deg)}
.imv-filters-card.imv-filters-collapsed .imv-filters-body{display:none}
/* 8 colunas: UF, Cidade, Tipo, Modalidade, Quartos, Garagem, Preço mín.,
   Preço máx. UF só tem 2 letras (select "Todas"/"SP"/"RJ"...) e Cidade é
   texto livre digitado pelo usuário - por isso UF mais estreito e Cidade
   mais largo que os demais, que seguem todos com o mesmo fr entre si. */
.imv-filters-grid{display:grid;grid-template-columns:.6fr 1.8fr 1fr 1fr 1fr 1fr 1fr 1fr;gap:14px}
#imvPrecoMin,#imvPrecoMax{min-width:130px}
.imv-filter-field{display:flex;flex-direction:column;gap:6px;min-width:0}
/* .imv-filter-field define display:flex incondicionalmente; como regra de
   autor, ela vence o display:none padrão do navegador pro atributo
   [hidden] mesmo com especificidade igual (regras de autor sempre ganham
   das regras do próprio navegador). Resultado: os campos de "Alteração
   entre"/"Novos cadastrados" (que também são .imv-filter-field) ficavam
   visíveis o tempo todo, mesmo com o atributo hidden certinho no HTML -
   bug real, só visível testando no navegador de verdade. */
.imv-filter-field[hidden]{display:none}
.imv-filter-field label{font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--green)}
.imv-filter-field input,.imv-filter-field select{height:var(--imv-control-h);font-family:var(--sans);border:1px solid var(--line);border-radius:var(--imv-radius);padding:0 12px;font-size:.9rem;color:var(--ink);background:var(--cream);width:100%;min-width:0;transition:var(--imv-transition)}
.imv-filter-field input:focus,.imv-filter-field select:focus{outline:none;border-color:var(--gold);background:#fff}
.imv-filter-range{display:flex;align-items:center;gap:8px;min-width:0}
.imv-filter-range span{font-size:.8rem;color:var(--imv-text-muted);flex-shrink:0}
.imv-filters-toggles{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.imv-chip-toggle{height:var(--imv-control-h);display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.03em;color:var(--green);background:transparent;border:1px solid var(--line);border-radius:var(--imv-radius);padding:0 14px;transition:var(--imv-transition);user-select:none;white-space:nowrap}
.imv-chip-toggle:hover{border-color:var(--gold)}
.imv-chip-toggle.imv-is-checked{background:var(--cream);border-color:var(--gold);color:#8e6e2f}
.imv-chip-toggle input{display:none}
.imv-chip-check{width:12px;height:12px;flex-shrink:0;display:none}
.imv-chip-toggle input:checked ~ .imv-chip-check{display:inline-flex}
.imv-filters-subrow{margin-top:14px}
.imv-filters-subrow-narrow{max-width:260px}
.imv-filters-actions{display:flex;align-items:center;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);flex-wrap:wrap}
/* .btn/.btn-gold/.btn-ghost (app.css) são pensados pro tamanho de CTA de
   página inteira (padding:15px 30px); ao lado de campos compactos
   (--imv-control-h:42px), ficam desproporcionalmente altos. Só nesta
   fileira, reduzidos pra bater com a altura dos outros controles. */
.imv-filters-actions .btn{height:var(--imv-control-h);padding:0 22px;font-size:.8rem}
.imv-results-summary{font-size:.85rem;color:var(--imv-text-muted);margin-left:auto}
.imv-results-summary strong{color:var(--green);font-weight:500}

/* ===== Calendário customizado ===== */
.imv-date-picker-wrap{position:relative;min-width:0}
.imv-filter-range .imv-date-picker-wrap{flex:1}
.imv-date-picker-input{width:100%;cursor:pointer;background:var(--cream)}
.imv-date-picker-panel{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:20;background:var(--imv-surface);border:1px solid var(--line);box-shadow:var(--imv-shadow-hover);padding:14px;width:230px}
.imv-date-picker-panel.imv-open{display:block}
.imv-dp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.imv-dp-label{font-size:.8rem;font-weight:500;color:var(--green);text-transform:capitalize}
.imv-dp-nav{width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:var(--imv-text-muted);transition:var(--imv-transition)}
.imv-dp-nav:hover{color:var(--gold)}
.imv-dp-nav svg{width:14px;height:14px}
.imv-dp-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}
.imv-dp-weekdays span{font-size:.62rem;font-weight:500;text-align:center;color:var(--imv-text-muted);text-transform:uppercase}
.imv-dp-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.imv-dp-day{width:28px;height:28px;font-size:.78rem;font-weight:400;color:var(--ink);display:flex;align-items:center;justify-content:center;transition:var(--imv-transition)}
.imv-dp-day:hover{background:var(--cream);color:var(--green)}
.imv-dp-day.imv-dp-hoje{border:1px solid var(--gold);color:#8e6e2f;font-weight:500}
.imv-dp-day.imv-dp-selected{background:var(--green);color:#fff}
.imv-dp-day.imv-dp-empty{visibility:hidden;pointer-events:none}
.imv-dp-footer{display:flex;justify-content:space-between;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.imv-dp-footer button{font-size:.7rem;font-weight:500;color:var(--green);text-transform:uppercase;letter-spacing:.03em}
.imv-dp-footer button.imv-dp-clear{color:var(--imv-text-muted)}
.imv-dp-footer button:hover{color:var(--gold)}

/* ===== Card de tabela/cards ===== */
.imv-table-card{background:var(--imv-surface);border:1px solid var(--line)}
.imv-table-header{padding:16px 20px;display:flex;align-items:center;border-bottom:1px solid var(--line);gap:14px;flex-wrap:wrap}
.imv-view-tabs{display:inline-flex;gap:8px}
.imv-view-tab{height:var(--imv-control-h);padding:0 18px;display:inline-flex;align-items:center;border:1px solid var(--line);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--imv-text-muted);transition:var(--imv-transition)}
.imv-view-tab:hover{border-color:var(--gold);color:var(--gold)}
.imv-view-tab.imv-active{background:var(--green);border-color:var(--green);color:#fff}
.imv-search-wrap{position:relative;margin-left:auto}
.imv-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--imv-text-muted);pointer-events:none;display:flex}
.imv-search-input{height:var(--imv-control-h);font-family:var(--sans);border:1px solid var(--line);border-radius:var(--imv-radius);padding:0 12px 0 36px;font-size:.9rem;color:var(--ink);background:var(--cream);width:220px;max-width:100%;transition:var(--imv-transition)}
.imv-search-input:focus{outline:none;border-color:var(--gold);background:#fff}

/* ===== Tabela ===== */
.imv-scroll-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.imv-table{border-collapse:collapse;width:100%;min-width:820px}
.imv-table thead tr{background:var(--cream)}
.imv-table thead th{padding:11px 10px;font-size:.66rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--green);text-align:left;white-space:nowrap;border-bottom:1px solid var(--line)}
.imv-table thead th a{color:var(--green);display:flex;align-items:center;gap:4px;text-decoration:none}
.imv-table thead th a:hover{color:var(--gold)}
.imv-table thead th.imv-sorted a{color:var(--gold)}
.imv-sort-icon{opacity:.5;font-size:10px}
.imv-table thead th.imv-sorted .imv-sort-icon{opacity:1;color:var(--gold)}
.imv-table tbody tr{border-bottom:1px solid var(--line);transition:background var(--imv-transition);cursor:pointer}
.imv-table tbody tr:last-child{border-bottom:none}
.imv-table tbody tr:hover{background:var(--cream)}
.imv-table tbody tr.imv-row-inativo{opacity:.55}
.imv-table tbody tr.imv-row-inativo:hover{opacity:1}
.imv-table td{padding:10px;font-size:.8rem;color:var(--ink);white-space:nowrap;line-height:1.3;vertical-align:top}
.imv-table td.imv-wrap{white-space:normal;max-width:130px;min-width:80px;line-height:1.35;word-break:break-word}
.imv-discount-cell{font-weight:500;color:var(--imv-error)}
.imv-price-cell{font-weight:500;color:var(--green);font-size:.85rem;line-height:1.2}
.imv-price-meta{margin-top:4px;display:flex;flex-wrap:wrap;gap:4px}
.imv-tipo-area{display:flex;flex-wrap:wrap;gap:8px;margin-top:3px}
.imv-tipo-area span{display:flex;align-items:center;gap:3px;font-size:.72rem;color:var(--imv-text-muted);font-weight:400;white-space:nowrap}
.imv-tipo-area svg{width:10px;height:10px;flex-shrink:0}
.imv-row-alt-preco{background:linear-gradient(to right,rgba(166,130,61,.08),rgba(166,130,61,.02) 30%,transparent 55%)}
.imv-row-alt-preco:hover{background:linear-gradient(to right,rgba(166,130,61,.12),var(--cream))}

/* Marca o imóvel que o usuário acabou de visitar, ao voltar pra listagem
   (ver RESTAURAR POSIÇÃO/SELEÇÃO em imoveis.js). Dourado mais forte que
   o badge padrão, pra ficar fácil de localizar de novo na lista. */
.imv-table tbody tr.imv-selecionada{background:var(--cream) !important;box-shadow:inset 3px 0 0 var(--gold)}
.imv-table tbody tr.imv-selecionada:hover{background:var(--cream) !important}
.imv-card.imv-selecionada{background:var(--cream);border-color:var(--gold);box-shadow:inset 3px 0 0 var(--gold)}
.imv-card.imv-selecionada:hover{border-color:var(--gold)}

/* ===== Badges ===== */
.imv-badge{display:inline-block;padding:2px 7px;border-radius:var(--imv-radius);font-size:.62rem;font-weight:500;text-transform:uppercase;letter-spacing:.03em;line-height:1.5}
.imv-badge-green{background:var(--imv-success-bg);color:var(--imv-success)}
.imv-badge-red{background:var(--imv-error-bg);color:var(--imv-error)}
.imv-badge-gray{background:var(--cream-2);color:var(--imv-text-muted)}
.imv-badge-ouro{background:var(--cream-2);color:#8e6e2f}
.imv-badge-blue{background:var(--imv-blue-bg);color:var(--imv-blue-text)}
.imv-badge-diff-up{background:var(--imv-error-bg);color:var(--imv-error);font-weight:600}
.imv-badge-diff-down{background:var(--imv-success-bg);color:var(--imv-success);font-weight:600}

/* ===== Ações da tabela/cards ===== */
.imv-btn-hist{background:none;border:1px solid var(--line);border-radius:var(--imv-radius);padding:5px 9px;font-size:.68rem;font-weight:500;color:var(--gold);display:inline-flex;align-items:center;gap:4px;text-transform:uppercase;letter-spacing:.04em;text-decoration:none;transition:var(--imv-transition)}
.imv-btn-hist:hover{border-color:var(--gold);background:var(--cream)}
.imv-btn-hist svg{width:11px;height:11px}
.imv-btn-viab-sm{background:var(--gold);color:#fff;border:1px solid var(--gold);border-radius:var(--imv-radius);padding:6px 10px;font-size:.62rem;font-weight:500;letter-spacing:.03em;text-transform:uppercase;display:inline-flex;align-items:center;justify-content:center;gap:4px;text-decoration:none;white-space:nowrap;transition:var(--imv-transition)}
.imv-btn-viab-sm:hover{background:var(--gold-light);border-color:var(--gold-light)}
/* Botão de favoritar: círculo discreto sobreposto à foto (card da
   listagem / galeria da ficha), mesmo padrão de sites imobiliários
   premium (não compete com os CTAs de navegação, que continuam sendo o
   foco). Dentro de uma célula de tabela (sem foto por perto, ver abaixo)
   volta a ficar inline, com o mesmo tratamento circular. Um pequeno "pop"
   no coração ao alternar (classe .imv-pop, disparada pelo JS depois da
   resposta do servidor) dá o toque de refinamento. */
.imv-btn-favorito{
  width:36px;height:36px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.94);border:none;color:var(--green);
  box-shadow:0 2px 10px rgba(27,58,60,.18);
  transition:transform .2s ease,color .2s ease,box-shadow .2s ease;
}
.imv-btn-favorito svg{width:17px;height:17px}
.imv-btn-favorito:hover{transform:scale(1.08);color:var(--gold);box-shadow:0 4px 14px rgba(27,58,60,.24)}
.imv-btn-favorito.imv-is-favorito{color:var(--gold)}
.imv-btn-favorito.imv-is-favorito svg{fill:var(--gold)}
.imv-btn-favorito.imv-pop svg{animation:imv-heart-pop .4s ease}
.imv-btn-favorito:disabled{cursor:default;transform:none}
@keyframes imv-heart-pop{
  0%{transform:scale(1)}
  35%{transform:scale(1.35)}
  60%{transform:scale(.92)}
  100%{transform:scale(1)}
}

.imv-card-photo,.imv-galeria-main{position:relative}
.imv-card-photo .imv-btn-favorito,.imv-galeria-main .imv-btn-favorito{position:absolute;top:10px;right:10px;z-index:2}

/* Mesma linguagem visual do coração sobreposto à foto (círculo claro
   sempre, só o coração muda de cor): manter o círculo neutro e só inverter
   pra dourado no fundo (como era antes) deixava o coração favoritado
   branco-sobre-dourado, um padrão visual diferente do resto da página e
   que lia como "vazio" por não ter o mesmo preenchimento dourado do
   coração em si. */
.imv-table .imv-btn-favorito{width:30px;height:30px;background:#fff;border:1px solid var(--line);box-shadow:none;color:var(--imv-text-muted)}
.imv-table .imv-btn-favorito svg{width:14px;height:14px}
.imv-table .imv-btn-favorito:hover{transform:none;border-color:var(--gold);color:var(--gold)}
.imv-table .imv-btn-favorito.imv-is-favorito{border-color:var(--gold);color:var(--gold)}
.imv-table .imv-btn-favorito.imv-is-favorito svg{fill:var(--gold)}
.imv-table .imv-btn-favorito.imv-is-favorito:hover{color:var(--gold-light);border-color:var(--gold-light)}

/* ===== Estado vazio ===== */
.imv-empty-state{padding:80px 20px;text-align:center;color:var(--imv-text-muted);white-space:normal}
.imv-empty-state svg{width:40px;height:40px;color:var(--line)}
.imv-empty-state h3{font-family:var(--serif);font-size:1.3rem;font-weight:500;color:var(--green);margin:14px 0 6px}
.imv-empty-state p{font-size:.85rem;max-width:32ch;margin:0 auto}

/* ===== Cards ===== */
.imv-cards-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding:24px}
.imv-cards-grid .imv-empty-state{grid-column:1/-1}
.imv-card{display:flex;flex-direction:column;border:1px solid var(--line);background:var(--imv-surface);cursor:pointer;transition:box-shadow var(--imv-transition),border-color var(--imv-transition),transform var(--imv-transition)}
.imv-card:hover{box-shadow:var(--imv-shadow-hover);border-color:var(--gold);transform:translateY(-4px)}
.imv-card.imv-row-inativo{opacity:.55}
.imv-card.imv-row-inativo:hover{opacity:1}
.imv-card-photo{width:100%;aspect-ratio:3/2;height:auto;min-height:0;flex-shrink:0;position:relative;background:var(--green);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.3);overflow:hidden}
.imv-card-photo svg{width:22px;height:22px}
.imv-card-photo img{width:100%;height:100%;object-fit:cover;display:block}
.imv-card-vcount{position:absolute;top:10px;left:10px;background:rgba(18,40,41,.6);color:#fff;font-size:.62rem;font-weight:500;padding:3px 9px;border-radius:var(--imv-radius);display:flex;align-items:center;gap:3px}
.imv-card-vcount svg{width:10px;height:10px}
.imv-card-body{padding:18px 20px;flex:1}
.imv-card-loc{font-size:.66rem;color:var(--imv-text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.04em}
.imv-card-title{font-family:var(--serif);font-size:1.2rem;font-weight:500;color:var(--green);margin:6px 0 10px;line-height:1.25;min-height:calc(1.25em * 2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.imv-card-pricerow{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.imv-card-price{font-weight:500;color:var(--green);font-size:1.1rem;line-height:1.2}
.imv-card-aval{font-size:.7rem;color:var(--imv-text-muted);margin-top:2px}
.imv-card-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}
.imv-card-meta-row{display:flex;gap:8px}
.imv-card-area{display:flex;align-items:center;gap:3px;font-size:.68rem;font-weight:400;color:var(--imv-text-muted);white-space:nowrap}
.imv-card-area svg{width:10px;height:10px;flex-shrink:0}
.imv-card-info{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-top:10px}
.imv-card-info-left{display:flex;flex-direction:column;gap:6px;min-width:0}
.imv-card-badges{display:flex;flex-wrap:wrap;gap:4px}
.imv-card-actions{display:flex;gap:8px;padding:0 20px 18px;flex-shrink:0}
.imv-card-actions a{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:9px 6px;border-radius:var(--imv-radius);font-size:.66rem;font-weight:500;letter-spacing:.02em;text-transform:uppercase;text-decoration:none;white-space:nowrap;transition:var(--imv-transition)}
.imv-card-actions a svg,.imv-card-actions button svg{width:12px;height:12px;flex-shrink:0}
.imv-btn-card-caixa{background:var(--green);color:#fff}
.imv-btn-card-caixa:hover{background:var(--green-soft)}
.imv-btn-card-viab{background:var(--gold);color:#fff}
.imv-btn-card-viab:hover{background:var(--gold-light)}

/* ===== Paginação ===== */
.imv-pagination{display:flex;align-items:center;justify-content:flex-end;gap:6px;padding:16px 20px;border-top:1px solid var(--line);flex-wrap:wrap}
.imv-pag-info{font-size:.78rem;color:var(--imv-text-muted);margin-right:auto}
.imv-page-btn{width:32px;height:32px;border:1px solid var(--line);font-size:.8rem;font-weight:400;color:var(--imv-text-muted);display:flex;align-items:center;justify-content:center;text-decoration:none;transition:var(--imv-transition)}
.imv-page-btn:hover{border-color:var(--gold);color:var(--gold)}
.imv-page-btn.imv-active{background:var(--green);border-color:var(--green);color:#fff;pointer-events:none}
.imv-page-btn.imv-disabled{opacity:.35;pointer-events:none}

/* ===== Ficha do imóvel ===== */
.imv-ficha{background:#fff;padding:32px 0 88px}
.imv-ficha-voltar{margin-bottom:18px;display:flex;flex-wrap:wrap;align-items:center;gap:14px}
.imv-ficha-voltar a{font-size:.85rem;color:var(--imv-text-muted)}
.imv-ficha-voltar a:hover{color:var(--gold)}
.imv-ficha-voltar-outros{padding-left:14px;border-left:1px solid var(--line)}
.imv-layout{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap}
.imv-side{width:380px;flex-shrink:0;display:flex;flex-direction:column;gap:16px}
.imv-main{flex:1;min-width:280px;display:flex;flex-direction:column;gap:20px}

.imv-galeria{background:var(--green);border:1px solid var(--line);overflow:hidden;display:flex;flex-direction:column;width:100%}
.imv-galeria-main{width:100%;height:253px;min-height:0;background:rgba(255,255,255,.04);display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0}
#imvGaleriaFoto{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}
#imvGaleriaFoto:has(img){cursor:zoom-in}
.imv-galeria-main img{width:100%;height:100%;object-fit:cover;display:block}
.imv-galeria-loading,.imv-galeria-fallback{display:flex;flex-direction:column;align-items:center;gap:8px;color:rgba(255,255,255,.3);font-size:.75rem;font-weight:400;text-align:center;padding:20px}
.imv-galeria-thumbs{display:flex;gap:8px;padding:10px;overflow-x:auto}
.imv-galeria-thumb{width:56px;height:42px;overflow:hidden;flex-shrink:0;cursor:pointer;border:1px solid rgba(255,255,255,.2);opacity:.65;transition:var(--imv-transition)}
.imv-galeria-thumb:hover,.imv-galeria-thumb.imv-active{opacity:1;border-color:var(--gold)}
.imv-galeria-thumb img{width:100%;height:100%;object-fit:cover;display:block}

/* ===== Lightbox da galeria (clique na foto principal) ===== */
body.imv-lightbox-aberto{overflow:hidden}
.imv-lightbox{position:fixed;inset:0;background:rgba(10,22,22,.94);z-index:1000;display:flex;align-items:center;justify-content:center;padding:40px 70px}
.imv-lightbox[hidden]{display:none}
.imv-lightbox-img-wrap{width:90vw;height:88vh;display:flex;align-items:center;justify-content:center}
.imv-lightbox-img-wrap img{width:100%;height:100%;object-fit:contain;display:block;box-shadow:0 12px 48px rgba(0,0,0,.5)}
.imv-lightbox-fechar,.imv-lightbox-nav{background:rgba(255,255,255,.1);border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}
.imv-lightbox-fechar:hover,.imv-lightbox-nav:hover{background:rgba(255,255,255,.22)}
.imv-lightbox-fechar{position:absolute;top:20px;right:24px;width:42px;height:42px}
.imv-lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px}
.imv-lightbox-prev{left:20px}
.imv-lightbox-next{right:20px}
.imv-lightbox-contador{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.85);font-size:.8rem;font-weight:500;background:rgba(255,255,255,.1);padding:6px 16px;border-radius:20px}

.imv-preco-box{background:var(--imv-surface);border:1px solid var(--line);padding:20px}
.imv-preco-label{font-size:.66rem;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--imv-text-muted)}
.imv-preco-main{font-family:var(--serif);font-size:1.9rem;font-weight:500;color:var(--green);line-height:1.15;margin-top:4px}
.imv-preco-aval{font-size:.82rem;color:var(--imv-text-muted);margin-top:6px}
.imv-preco-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.imv-preco-alt{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.imv-acoes{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.imv-btn-acao{display:inline-flex;align-items:center;justify-content:flex-start;gap:10px;padding:11px 16px;border-radius:var(--imv-radius);font-size:.78rem;font-weight:500;text-transform:uppercase;letter-spacing:.03em;text-decoration:none;transition:var(--imv-transition)}
.imv-btn-acao svg{width:14px;height:14px;flex-shrink:0}
.imv-btn-caixa{background:var(--green);color:#fff;border:1px solid var(--green)}
.imv-btn-caixa:hover{background:var(--green-soft);border-color:var(--green-soft)}
.imv-btn-mat{background:#fff;color:var(--green);border:1px solid var(--line)}
.imv-btn-mat:hover{border-color:var(--gold);color:var(--gold)}
.imv-btn-viab{background:var(--gold);color:#fff;border:1px solid var(--gold)}
.imv-btn-viab:hover{background:var(--gold-light);border-color:var(--gold-light)}
.imv-btn-wa{background:#25D366;color:#fff;border:1px solid #25D366}
.imv-btn-wa:hover{background:#1ebe5d;border-color:#1ebe5d}

.imv-titulo{background:var(--imv-surface);border:1px solid var(--line);padding:20px 22px}
.imv-num{font-size:.68rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--gold)}
.imv-titulo h1{font-family:var(--serif);font-size:1.9rem;font-weight:500;color:var(--green);margin:6px 0;line-height:1.2}
.imv-end{font-size:.85rem;color:var(--imv-text-muted);display:flex;align-items:center;gap:6px}
.imv-end svg{width:14px;height:14px;color:var(--gold);flex-shrink:0}

.imv-sec{background:var(--imv-surface);border:1px solid var(--line);padding:20px 22px}
.imv-sec-title{font-size:.68rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--gold);margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}
.imv-sec-title svg{width:14px;height:14px;color:var(--gold);flex-shrink:0}

.imv-dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px 18px}
.imv-dl-item{display:flex;flex-direction:column;gap:4px;min-width:0}
.imv-dl-label{font-size:.64rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--imv-text-muted)}
.imv-dl-value{font-size:.92rem;font-weight:500;color:var(--ink);word-break:break-word}
.imv-dl-value.imv-destaque{color:var(--green)}

.imv-descricao-txt{font-size:.9rem;line-height:1.8;color:var(--imv-text-muted);white-space:pre-line}

.imv-preco-chart{width:100%;height:auto;display:block}
.imv-chart-val{font-size:.72rem;font-weight:600;fill:var(--green);font-family:var(--sans)}
.imv-chart-dt{font-size:.66rem;font-weight:400;fill:var(--imv-text-muted);font-family:var(--sans)}

/* ===== Timeline ===== */
.imv-timeline{position:relative;padding-left:22px}
.imv-timeline::before{content:"";position:absolute;left:7px;top:8px;bottom:8px;width:1px;background:var(--line)}
.imv-tl-item{position:relative;margin-bottom:12px}
.imv-tl-dot{position:absolute;left:-15px;top:10px;width:10px;height:10px;border-radius:999px;border:2px solid var(--imv-surface)}
.imv-tl-dot.ativo{background:var(--imv-success);box-shadow:0 0 0 2px var(--imv-success)}
.imv-tl-dot.inativo{background:var(--imv-text-muted);box-shadow:0 0 0 2px var(--imv-text-muted)}
.imv-tl-card{background:var(--imv-surface);border:1px solid var(--line);padding:12px 14px}
.imv-tl-card.imv-tl-atual{border-color:var(--gold)}
.imv-tl-header{display:flex;align-items:flex-start;justify-content:space-between;gap:4px;margin-bottom:8px;flex-wrap:wrap}
.imv-tl-data{font-size:.8rem;color:var(--imv-text-muted);font-weight:500}
.imv-tl-badges{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.imv-tl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px}
.imv-tl-field{display:flex;flex-direction:column;gap:2px;min-width:0}
.imv-tl-label{font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.07em;color:var(--imv-text-muted)}
.imv-tl-value{font-size:.8rem;font-weight:500;color:var(--ink);word-break:break-word}
.imv-tl-value.imv-preco-val{font-size:.92rem;font-weight:600;color:var(--green)}
.imv-tl-diff{display:inline-flex;align-items:center;font-size:.64rem;font-weight:600;padding:1px 7px;border-radius:var(--imv-radius);margin-left:4px}
.imv-tl-diff.up{background:var(--imv-error-bg);color:var(--imv-error)}
.imv-tl-diff.down{background:var(--imv-success-bg);color:var(--imv-success)}
.imv-tl-motivo{font-size:.68rem;color:var(--imv-text-muted);margin-top:6px;font-style:italic}

/* ===== Não encontrado ===== */
.imv-notfound{max-width:420px;margin:88px auto;text-align:center;color:var(--imv-text-muted)}
.imv-notfound svg{color:var(--line)}
.imv-notfound h1{font-family:var(--serif);font-size:1.6rem;font-weight:500;color:var(--green);margin:14px 0 8px}

/* ===== Responsividade ===== */
@media (max-width:900px){
  .imv-layout{flex-direction:column}
  .imv-side{width:100%}
  /* .imv-side deixa de ter largura fixa (380px) aqui, entao a altura em
     px fixo da regra padrao nao serve mais - volta pra aspect-ratio, que
     se adapta a largura fluida. */
  .imv-galeria-main{height:auto;aspect-ratio:3/2}
}

@media (max-width:768px){
  .imv-filters-grid{grid-template-columns:1fr}
  .imv-filters-subrow-narrow{max-width:none}
  .imv-filter-range{flex-direction:column;align-items:stretch}
  .imv-filter-range span{text-align:center}
  .imv-filters-actions{flex-direction:column;align-items:stretch}
  .imv-filters-actions .btn{width:100%;text-align:center}
  .imv-results-summary{margin-left:0;width:100%}
  .imv-table-header{flex-direction:column;align-items:stretch}
  .imv-search-wrap{margin-left:0}
  .imv-search-input{width:100%}
  .imv-cards-grid{grid-template-columns:repeat(2,1fr);gap:14px;padding:16px}
  .imv-pagination{justify-content:center}
  .imv-pag-info{width:100%;margin-right:0;text-align:center}
  .imv-hero-stat{min-width:45%}
}

@media (max-width:480px){
  .imv-cards-grid{grid-template-columns:1fr}
  .imv-lightbox{padding:70px 16px}
  .imv-lightbox-nav{width:40px;height:40px}
  .imv-lightbox-prev{left:6px}
  .imv-lightbox-next{right:6px}
  .imv-lightbox-fechar{top:12px;right:12px}
}

.imv-similares-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.imv-similar-card{display:block;border:1px solid var(--line);border-radius:var(--imv-radius);padding:14px 16px;text-decoration:none;transition:var(--imv-transition)}
.imv-similar-card:hover{border-color:var(--gold);transform:translateY(-2px)}
.imv-similar-tipo{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--imv-text-muted);margin-bottom:4px}
.imv-similar-end{font-size:.85rem;color:var(--ink);margin-bottom:8px}
.imv-similar-preco{font-size:1rem;font-weight:600;color:var(--green)}
@media (max-width:640px){
  .imv-similares-grid{grid-template-columns:1fr}
}
