/* SN_CSS_ARCH_PAGE_LISTINGS_V1
   Canonical da camada responsiva da página de listings.
   Extraído sem alteração funcional de
   SN_LISTING_RESPONSIVE_LAYERS_V2.
*/

/* SN_LISTING_RESPONSIVE_LAYERS_V2
   Canonical responsivo provisório da grade de cards da listing.

   As larguras estruturais do filter drawer e da primeira
   coluna desktop foram removidas desta camada e pertencem
   exclusivamente a listing-filter-width.css V3.

   Breakpoints globais SANOME:
   - tablet menor: 768px até 1023px;
   - tablet grande: 1024px até 1365px;
   - desktop médio: 1366px até 1599px;
   - desktop largo: 1600px ou mais.
*/


/* ======================================================
   TABLET MENOR
   768px até 1023px
   2 cards por linha.
   ====================================================== */
@media (min-width: 768px) and (max-width: 1023px) {
  .sn-grid-listing-section
  #cards-grid.sn-listing-cards-grid {
    display: grid !important;

    grid-template-columns:
      repeat(2, minmax(0, 1fr)) !important;
  }
}


/* ======================================================
   TABLET GRANDE
   1024px até 1365px
   3 cards por linha.
   ====================================================== */
@media (min-width: 1024px) and (max-width: 1365px) {
  .sn-grid-listing-section
  #cards-grid.sn-listing-cards-grid {
    display: grid !important;

    grid-template-columns:
      repeat(3, minmax(0, 1fr)) !important;

    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
  }
}


/* ======================================================
   DESKTOP MÉDIO
   1366px até 1599px
   3 cards por linha.
   ====================================================== */
@media (min-width: 1366px) and (max-width: 1599px) {
  .sn-listing-desktop-layout
  > #imoveis-grid {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
  }

  .sn-listing-desktop-layout
  #cards-grid.sn-listing-cards-grid {
    display: grid !important;

    grid-template-columns:
      repeat(3, minmax(0, 1fr)) !important;

    column-gap: 3px !important;
    row-gap: 5px !important;

    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
  }

  .sn-listing-desktop-layout
  #cards-grid.sn-listing-cards-grid
  > article.sn-card {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    margin: 0 !important;
  }
}


/* ======================================================
   DESKTOP LARGO
   1600px ou mais
   4 cards por linha.
   ====================================================== */
@media (min-width: 1600px) {
  .sn-listing-desktop-layout
  > #imoveis-grid {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
  }

  .sn-listing-desktop-layout
  #cards-grid.sn-listing-cards-grid {
    display: grid !important;

    grid-template-columns:
      repeat(4, minmax(0, 1fr)) !important;

    column-gap: 3px !important;
    row-gap: 5px !important;

    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
  }

  .sn-listing-desktop-layout
  #cards-grid.sn-listing-cards-grid
  > article.sn-card {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    margin: 0 !important;
  }
}

/* ==========================================================
   SN_CSS_ARCH_LISTING_DESKTOP_GAP_V1

   Owner canonical do espaçamento entre cards no desktop.
   Mantém o comportamento atual da listing:
   column-gap 3px / row-gap 5px.
   ========================================================== */

@media (min-width: 1366px) {
  .sn-grid-listing-section
  .sn-listing-desktop-layout
  > #imoveis-grid
  > #cards-grid.sn-listing-cards-grid,

  .sn-grid-listing-section
  .sn-listing-desktop-layout
  #cards-grid.sn-listing-cards-grid {
    gap: 5px 3px !important;
    column-gap: 3px !important;
    row-gap: 5px !important;
  }

  .sn-grid-listing-section
  .sn-listing-desktop-layout
  #cards-grid.sn-listing-cards-grid
  > article.sn-card {
    margin: 0 !important;
  }
}

/* ==========================================================
   SN_CSS_ARCH_LISTING_DESKTOP_DRAWER_PRELAYOUT_V1

   Desktop >= 1366px:
   mantém o drawer oculto antes de o JavaScript montar
   o layout desktop definitivo.

   Responsabilidade de estado/layout da página.
   Não é regra de largura do drawer.
   ========================================================== */

@media (min-width: 1366px) {
  body:not(.sn-listing-layout-ready)
  .sn-grid-listing-section
  #filter-drawer {
    visibility: hidden !important;
  }
}

/* ==========================================================
   SN_CSS_ARCH_LISTING_DESKTOP_WRAPPER_GEOMETRY_V1

   Geometria funcional do wrapper desktop >= 1366px.

   Mantém somente propriedades comprovadamente ativas
   na decomposição causal da antiga Sidebar Visual V1.

   grid-template-columns e gap pertencem aos canonicals
   responsivos já existentes e não são duplicados aqui.
   ========================================================== */

@media (min-width: 1366px) {
  .sn-listing-desktop-layout {
    display: grid;
    align-items: start;

    width: 99vw !important;

    position: relative !important;

    margin-left:
      calc(50% - 49.5vw) !important;

    margin-right:
      calc(50% - 49.5vw) !important;
  }
}

/* ==========================================================
   SN_CSS_ARCH_LISTING_DESKTOP_DRAWER_VISUAL_V1

   Estado/visual funcional do drawer no layout desktop.

   Mantém somente propriedades comprovadamente ativas
   na decomposição causal da antiga Sidebar Visual V1.
   ========================================================== */

@media (min-width: 1366px) {
  .sn-listing-desktop-layout
  > #filter-drawer {
    transform: none !important;
    transition: none !important;
    z-index: 20 !important;

    margin-top: 8px !important;

    box-shadow: none !important;

    border:
      1px solid var(--sn-gray-border);
  }
}

/* ==========================================================
   SN_CSS_ARCH_LISTING_DESKTOP_IMOVEIS_GRID_MARGIN_V1

   Margens funcionais do grid de imóveis no layout desktop.

   Mantém somente propriedades comprovadamente ativas
   na decomposição causal da antiga Sidebar Visual V1.
   ========================================================== */

@media (min-width: 1366px) {
  .sn-listing-desktop-layout
  > #imoveis-grid {
    margin-top: 0 !important;
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
}

/* ==========================================================
   SN_CSS_ARCH_LISTING_DESKTOP_FILTER_CHROME_V1

   Acabamento funcional do filtro no layout desktop.

   Mantém somente propriedades comprovadamente ativas
   após decomposição causal da antiga Sidebar Visual V1.
   ========================================================== */

@media (min-width: 1366px) {

  .sn-listing-desktop-layout
  #filter-drawer
  .fd-header {
    padding: 14px 16px;
  }

  .sn-listing-desktop-layout
  #filter-drawer
  .fd-close {
    display: none !important;
  }

  .sn-listing-desktop-layout
  #filter-drawer
  .fd-body {
    padding: 16px !important;
  }

  .sn-grid-listing-section
  #filter-overlay {
    display: none !important;
  }
}



/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_DRAWER_SHELL_V1

   Shell estrutural/visual base do drawer de filtros.

   Origem:
   antigo bloco inline "Live Filter Drawer" de grid.html.

   Estas quatro propriedades foram comprovadas funcionais
   antes da migração.

   O z-index base 5001 é usado no drawer móvel/tablet.
   No desktop >=1366 o canonical específico continua
   sobrescrevendo para z-index:20 !important.
   ========================================================== */

#filter-drawer {
  background: var(--sn-gray-card);
  z-index: 5001;
  display: flex;
  flex-direction: column;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_HEADER_V1

   Cabeçalho base do drawer de filtros.
   Origem: antigo bloco inline "Live Filter Drawer".

   O padding base é usado em mobile/tablet.
   No desktop >=1366 o canonical específico existente
   continua sobrescrevendo para 14px 16px.
   ========================================================== */

#filter-drawer .fd-header {
  background: var(--sn-gray-subtle);
  padding: .9rem 1.25rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--sn-gray-border);
  flex-shrink: 0;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_BODY_V1

   Estrutura funcional base do corpo do drawer.

   Origem:
   antiga regra inline .fd-body do "Live Filter Drawer".

   Mantidas somente propriedades comprovadamente funcionais:
   - padding base em mobile/tablet;
   - display flex;
   - direção em coluna.

   flex:1 e gap:1.1rem foram comprovados sem efeito e
   não são transportados para o canonical.

   No desktop >=1366 o padding específico existente
   continua sobrescrevendo para 16px.
   ========================================================== */

#filter-drawer .fd-body {
  padding: 1.25rem;
  display: flex;
  flex-direction: column;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_TITLE_V1

   Tipografia funcional do título do drawer.

   Origem:
   antiga regra inline .fd-header .fd-title
   do "Live Filter Drawer".

   Mantidas somente propriedades comprovadamente funcionais:
   - font-size
   - font-weight
   - letter-spacing
   - text-transform
   - color

   font-family e margin foram comprovados sem efeito e
   não são transportados para o canonical.
   ========================================================== */

#filter-drawer .fd-header .fd-title {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--sn-dark) !important;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_CLOSE_V1

   Botão de fechar do drawer.

   Origem:
   antiga regra inline .fd-close
   do "Live Filter Drawer".

   Todas as 9 declarações foram comprovadas funcionais
   no mobile/tablet e são preservadas integralmente.

   O desktop continua escondendo este botão por meio
   do canonical existente com display:none !important.
   ========================================================== */

#filter-drawer .fd-close {
  background: none;
  border: none;
  color: var(--sn-text-muted);
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
  padding: 3px 7px;
  border-radius: 3px;
  transition: color .15s, background .15s;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_CLOSE_HOVER_V1

   Estado hover do botão de fechar do drawer.

   O seletor inclui #filter-drawer para manter a mesma
   família de especificidade do canonical base e garantir
   que o :hover vença color/background da regra base.
   ========================================================== */

#filter-drawer .fd-close:hover {
  color: var(--sn-text-light);
  background: var(--sn-dark-2);
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_SCROLLBAR_V1

   Scrollbar funcional da área rolável do filtro.

   Mantidos apenas os estilos com efeito causal:
   - largura de 4px;
   - cor e raio do thumb.

   O antigo background:transparent do track não é
   transportado porque o diagnóstico provou SEM EFEITO.
   ========================================================== */

#filter-drawer .fd-body::-webkit-scrollbar {
  width: 4px;
}

#filter-drawer .fd-body::-webkit-scrollbar-thumb {
  background: var(--sn-gray-border);
  border-radius: 2px;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_FIELD_STRUCTURE_V1

   Estrutura base dos campos do drawer.

   As três propriedades foram mantidas porque o teste causal
   provou efeito em todos os regimes responsivos avaliados.
   Regras mais específicas continuam livres para sobrescrever
   display/gap em campos especiais.
   ========================================================== */

#filter-drawer .fd-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_FIELD_SPACING_V1

   Espaçamento vertical base entre campos do drawer.

   O margin-bottom de .85rem foi preservado com !important
   porque o teste causal confirmou efeito real no fluxo.
   Overrides mais específicos continuam controlando os campos
   que precisam de margin-bottom: 0.
   ========================================================== */

.fd-field:not(.sn-feature-accordion) {
  margin-bottom: .85rem !important;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_LABEL_SPACING_V1

   Espaçamento inferior base dos labels do drawer.

   Apenas margin-bottom foi migrado: o teste causal mostrou
   que display:block do owner legado não produz efeito.

   Os seletores originais foram preservados para manter
   a mesma especificidade e permitir que labels especiais
   continuem sobrescrevendo o espaçamento.
   ========================================================== */

.fd-field .fd-label,
.fd-label {
  margin-bottom: 5px !important;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_DIVIDER_STRUCTURE_V1

   Estrutura visual base dos separadores do drawer.

   border:none e border-top foram preservados porque testes
   causais confirmaram efeito real nos 13 dividers.

   O margin:0 do owner legado NÃO foi migrado porque o teste
   causal confirmou ausência de efeito.
   ========================================================== */

.fd-divider {
  border: none;
  border-top: 1px solid var(--sn-gray-border);
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_DIVIDER_SPACING_V1

   Espaçamento vertical base dos separadores do drawer.

   Overrides específicos de 14px continuam controlando os
   separadores especiais.
   ========================================================== */

.fd-divider {
  margin: .85rem 0 !important;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_RESET_V1

   Botão "Limpar filtros" do drawer.

   Todas as declarações deste bloco foram mantidas porque
   os testes causais confirmaram efeito real no runtime.
   ========================================================== */

.fd-reset {
  width: 100%;
  padding: 8px;
  background: transparent;
  border: 1px solid var(--sn-gray-border);
  border-radius: var(--sn-radius-sm);
  color: var(--sn-text-muted);
  font-family: 'Montserrat', sans-serif;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color .15s, color .15s;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_LABEL_TYPOGRAPHY_V1

   Tipografia visual base dos labels do drawer.

   font-family NÃO foi migrado porque o teste causal confirmou
   que a declaração legado era redundante no runtime atual.

   As cinco declarações abaixo tiveram efeito real comprovado.
   ========================================================== */

.fd-label {
  font-size: 9px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--sn-text-tertiary);
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_SELECT_V1

   Selects do drawer: condomínio e bairro.

   Mantidas apenas as declarações com efeito causal confirmado.

   NÃO migrados:
   - width: 100%      -> redundante no runtime atual
   - .fd-select:focus -> regra inteira redundante no runtime atual

   outline: none foi preservado porque o teste de foco real
   confirmou efeito funcional nos regimes desktop.
   ========================================================== */

.fd-select {
  padding: 8px 10px;
  border: 1px solid var(--sn-gray-border);
  border-radius: var(--sn-radius-sm);
  background: var(--sn-gray-subtle);
  color: var(--sn-text-body);
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  cursor: pointer;
  outline: none;
  transition: border-color .15s, background .15s;
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_INPUT_V1

   Campo de busca por código do drawer.

   Mantidas apenas as declarações com efeito causal confirmado.

   NÃO migrados:
   - width: 100%       -> redundante no runtime atual
   - .fd-input:focus   -> regra redundante no runtime atual

   outline: none foi preservado porque o teste de foco real
   confirmou efeito funcional nos regimes desktop.

   A cor do placeholder é funcional e permanece explícita.
   ========================================================== */

.fd-input {
  padding: 8px 10px;
  border: 1px solid var(--sn-gray-border);
  border-radius: var(--sn-radius-sm);
  background: var(--sn-gray-subtle);
  color: var(--sn-text-body);
  font-family: 'Montserrat', sans-serif;
  font-size: 12px;
  outline: none;
  transition: border-color .15s, background .15s;
}

.fd-input::placeholder {
  color: var(--sn-text-tertiary);
}


/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_CHECKBOX_ROW_V1

   Checkbox rows do drawer.

   Mantidas somente declarações com efeito causal confirmado.

   Não migrados por redundância no runtime atual:
   ROW:
   - display
   - align-items
   - gap
   - padding
   - border-radius
   - transition
   - user-select

   INPUT:
   - width
   - height
   - flex-shrink

   SPAN:
   - font-family
   - font-size
   ========================================================== */

.fd-checkbox-row {
  border: 1px solid var(--sn-gray-border);
  border-radius: var(--sn-radius-sm);
  cursor: pointer;
  transition: border-color .15s, background .15s;
  user-select: none;
}

.fd-checkbox-row input[type="checkbox"] {
  accent-color: var(--sn-accent);
  cursor: pointer;
}

.fd-checkbox-row span {
  color: var(--sn-text-body);
}

/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_RANGE_V1

   Range duplo dos filtros de preço e área.

   Família migrada integralmente porque:
   - pseudo-elementos de range têm comportamento específico
     por engine;
   - ::-webkit-slider-thumb é funcional para o arraste;
   - ::-moz-range-thumb é preservado para Firefox;
   - propriedades de appearance são mantidas por segurança
     do controle nativo.
   ========================================================== */

.fd-range-wrap {
  position: relative;
  height: 28px;
  margin: 4px 8px 0;
}

.fd-range-track {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  left: 0;
  right: 0;
  height: 4px;
  background: var(--sn-gray-border);
  border-radius: 2px;
}

.fd-range-fill {
  position: absolute;
  height: 100%;
  background: var(--sn-accent);
  border-radius: 2px;
}

.fd-range-input {
  position: absolute;
  width: 100%;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  pointer-events: none;
  margin: 0;
  padding: 0;
  height: 0;
  outline: none;
}

.fd-range-input::-webkit-slider-thumb {
  -webkit-appearance: none;
  pointer-events: all;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--sn-accent);
  cursor: pointer;
  box-shadow: 0 1px 4px rgba(0,0,0,.28);
  border: 2px solid #fff;
}

.fd-range-input::-moz-range-thumb {
  pointer-events: all;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--sn-accent);
  cursor: pointer;
  box-shadow: 0 1px 4px rgba(0,0,0,.28);
  border: 2px solid #fff;
}

.fd-range-vals {
  display: flex;
  justify-content: space-between;
  margin-top: 10px;
  font-family: 'Montserrat', sans-serif;
  font-size: 10px;
  color: var(--sn-text-secondary);
}

/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_TRIGGER_V1

   Botão normal de filtros das listings.

   #map-filter-trigger foi deliberadamente excluído desta
   migração porque pertence ao subsistema legado de mapa,
   que não será mantido.
   ========================================================== */

#filter-trigger {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  font-family: 'Montserrat', sans-serif;
  font-size: 9px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border: 1px solid var(--sn-gray-border);
  border-radius: var(--sn-radius-sm);
  background: var(--sn-gray-card);
  color: var(--sn-text-secondary);
  cursor: pointer;
  transition: border-color .15s, color .15s, background .15s;
  flex-shrink: 0;
}

#filter-trigger.active {
  border-color: var(--sn-text-tertiary);
  color: var(--sn-text-body);
}

/* ==========================================================
   SN_CSS_ARCH_LISTING_FILTER_OVERLAY_OPEN_V1

   Overlay funcional do drawer mobile/tablet.
   Migrado do bloco inline "Live Filter Drawer".

   No desktop >=1366, o canonical existente continua
   ocultando #filter-overlay com display:none !important.
   ========================================================== */

#filter-overlay {
  position: fixed;
  inset: 0;
  background: rgba(13,17,23,.55);
  backdrop-filter: blur(2px);
  z-index: 5000;
  opacity: 0;
  pointer-events: none;
  transition: opacity .25s ease;
}

#filter-overlay.open {
  opacity: 1;
  pointer-events: all;
}

#filter-drawer.open {
  transform: translate(0, -50%);
}

/* SN_CSS_ARCH_LISTING_GRID_STABILITY_V1 */
#cards-grid.sn-listing-cards-grid {
  min-height: 520px;
  contain: layout paint;
}

/* SN_CSS_ARCH_LISTING_MOBILE_CARD_LINK_WIDTH_V1 */
@media (max-width: 640px) {
  .sn-grid-listing-section #cards-grid article,
  .sn-grid-listing-section .sn-listing-cards-grid article,
  .sn-listing-section #cards-grid article,
  .sn-listing-section .sn-listing-cards-grid article,
  .sn-grid-listing-section #cards-grid a,
  .sn-grid-listing-section .sn-listing-cards-grid a,
  .sn-listing-section #cards-grid a,
  .sn-listing-section .sn-listing-cards-grid a {
    max-width: 100% !important;
  }
}

/* SN_CSS_ARCH_LISTING_BREADCRUMB_FILTER_V1 */
/* SN_MOBILE_FILTER_BREADCRUMB_CSS_V2 */

@media (max-width: 1365px) {
  /*
    Breadcrumb continua sendo o conteúdo principal da linha.
    O espaço à direita é reservado apenas para o ícone.
  */
  nav.sn-listing-breadcrumb {
    position: relative !important;
    display: block !important;

    width: 100% !important;
    min-height: 32px !important;

    padding-right: 42px !important;
    box-sizing: border-box !important;

    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button {
    position: absolute !important;

    top: 50% !important;
    right: 0 !important;
    transform: translateY(-50%) !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: 32px !important;
    height: 32px !important;
    min-width: 32px !important;
    min-height: 32px !important;

    margin: 0 !important;
    padding: 0 !important;

    font-size: 0 !important;
    line-height: 1 !important;

    box-sizing: border-box !important;
    overflow: hidden !important;

    opacity: .82 !important;
    z-index: 5 !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button svg {
    display: block !important;

    width: 16px !important;
    height: 16px !important;

    margin: 0 !important;
    padding: 0 !important;

    flex: none !important;
    pointer-events: none !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button:hover,
  #filter-trigger.sn-mobile-filter-breadcrumb-button:focus-visible,
  #filter-trigger.sn-mobile-filter-breadcrumb-button.active {
    opacity: 1 !important;
  }

  /*
    O H1 volta a ocupar seu bloco normal,
    sem botão, rolagem ou espaço artificial.
  */
  .sn-listing-copy {
    position: static !important;

    width: 100% !important;

    padding-right: 0 !important;

    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
  }

  .sn-listing-copy h1 {
    width: 100% !important;

    margin-right: 0 !important;
    padding-right: 0 !important;

    overflow: visible !important;
  }
}

/*
  No desktop o painel de filtros já fica ao lado do grid.
*/
@media (min-width: 1366px) {
  #filter-trigger.sn-mobile-filter-breadcrumb-button {
    display: none !important;
  }

  nav.sn-listing-breadcrumb {
    padding-right: 0 !important;
  }
}



/* SN_BREADCRUMB_TOP_ALIGN_FILTER_V3 */
@media (max-width: 1365px) {
  nav.sn-listing-breadcrumb {
    min-height: 32px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: 16px !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button {
    top: 0 !important;
    transform: none !important;
  }
}



/* SN_BREADCRUMB_REAL_WRAP_V6 */
@media (max-width: 1365px) {
  nav.sn-listing-breadcrumb {
    position: relative !important;
    display: flex !important;
    align-items: flex-start !important;
    justify-content: space-between !important;
    gap: 10px !important;

    width: 100% !important;
    min-height: 32px !important;

    padding-right: 0 !important;
    overflow: visible !important;
    box-sizing: border-box !important;
  }

  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content {
    display: block !important;
    flex: 1 1 auto !important;

    width: calc(100% - 44px) !important;
    max-width: calc(100% - 44px) !important;
    min-width: 0 !important;

    white-space: normal !important;
    overflow-wrap: normal !important;
    word-break: normal !important;

    line-height: 16px !important;

    position: relative !important;
    top: -5px !important;

    box-sizing: border-box !important;
  }

  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content
  > a,
  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content
  > span,
  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content
  > strong {
    white-space: normal !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button {
    position: relative !important;
    top: 0 !important;
    right: auto !important;
    transform: none !important;

    flex: 0 0 32px !important;

    width: 32px !important;
    height: 32px !important;

    margin: 0 !important;
  }
}

@media (min-width: 1366px) {
  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content {
    display: contents !important;
  }
}



/* SN_BREADCRUMB_NO_CLIP_V7 */
@media (max-width: 1365px) {
  nav.sn-listing-breadcrumb {
    min-height: 32px !important;
    padding-top: 0 !important;
    overflow: visible !important;
  }

  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content {
    top: 0 !important;
    transform: none !important;

    margin-top: -3px !important;
    padding-top: 3px !important;
    padding-bottom: 3px !important;

    line-height: 18px !important;

    overflow: visible !important;
    clip-path: none !important;
  }

  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content
  > a,
  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content
  > span,
  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content
  > strong {
    position: static !important;
    top: auto !important;
    transform: none !important;

    line-height: 18px !important;
    overflow: visible !important;
  }
}



/* SN_LISTING_FILTER_TEXT_V8 */
@media (max-width: 1365px) {
  #filter-trigger.sn-mobile-filter-breadcrumb-button {
    width: auto !important;
    min-width: 32px !important;
    padding-left: 9px !important;
    padding-right: 9px !important;
    font-size: inherit !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button
  .sn-mobile-filter-label {
    font: inherit !important;
    line-height: inherit !important;
  }
}



/* SN_LISTING_FILTER_REAL_WIDTH_V10 */
@media (max-width: 1365px) {
  nav.sn-listing-breadcrumb
  > .sn-breadcrumb-text-content {
    flex: 1 1 0 !important;
    width: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button {
    flex: 0 0 auto !important;

    width: auto !important;
    max-width: none !important;
    min-width: max-content !important;

    height: 32px !important;

    padding-left: 10px !important;
    padding-right: 10px !important;

    white-space: nowrap !important;
    overflow: visible !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button
  .sn-mobile-filter-label {
    display: inline-block !important;

    width: auto !important;
    max-width: none !important;
    min-width: max-content !important;

    white-space: nowrap !important;
    overflow: visible !important;
  }
}



/* SN_LISTING_FILTER_DARK_ARMY_V11 */
@media (max-width: 1365px) {
  #filter-trigger.sn-mobile-filter-breadcrumb-button {
    color: #37452a !important;
    border-color: #37452a !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button
  .sn-mobile-filter-label {
    color: #37452a !important;
    -webkit-text-fill-color: #37452a !important;
  }

  #filter-trigger.sn-mobile-filter-breadcrumb-button:hover,
  #filter-trigger.sn-mobile-filter-breadcrumb-button:focus-visible,
  #filter-trigger.sn-mobile-filter-breadcrumb-button.active {
    color: #37452a !important;
    border-color: #37452a !important;
  }
}

/* SN_CSS_ARCH_LISTING_FILTER_STRUCTURE_SPACING_V1 */

/* SN_LISTING_PAGE_SEARCH_LAYOUT_V1 */

/*
  Reutiliza integralmente o componente visual da Home.
  Apenas adapta largura e espaçamento ao drawer/aside dos filtros.
*/
#filter-drawer .sn-listing-page-search {
  z-index: 120;
  width: 100% !important;
  max-width: none !important;
  margin: 0 0 16px !important;
}

#filter-drawer .sn-listing-page-search
.sn-home-listing-search-label {
  color: #37452a;
  -webkit-text-fill-color: #37452a;
}

#filter-drawer .sn-listing-page-search
.sn-home-listing-search-control {
  width: 100%;
  box-sizing: border-box;
  border-color: #cbd5e1;
  box-shadow: none;
}

#filter-drawer .sn-listing-page-search-divider {
  margin-top: 0;
}

#filter-drawer .sn-listing-page-search
.sn-home-listing-search-results {
  z-index: 300;
}



/* SN_LISTING_PAGE_SEARCH_UNIFORM_SPACING_V2 */

/*
  Mesma tipografia de Dormitórios, Bairro, Setor e demais
  labels do filtro.
*/
#filter-drawer
.sn-listing-page-search
> .sn-home-listing-search-label.fd-label {
  display: block !important;

  margin: 0 0 5px !important;

  color: var(--sn-text-tertiary) !important;
  -webkit-text-fill-color: var(--sn-text-tertiary) !important;

  font-family: 'Montserrat', sans-serif !important;
  font-size: 9px !important;
  font-weight: 500 !important;
  line-height: normal !important;

  letter-spacing: .12em !important;
  text-transform: uppercase !important;
}

/*
  Mesma distância utilizada entre um campo comum e
  o separador seguinte.
*/
#filter-drawer .sn-listing-page-search {
  margin-top: 0 !important;
  margin-bottom: .85rem !important;
}

/*
  Remove a exceção anterior e devolve ao separador da pesquisa
  exatamente a mesma margem dos demais separadores do filtro.
*/
#filter-drawer .sn-listing-page-search-divider {
  margin: .85rem 0 !important;
}

/*
  O primeiro campo depois do separador começa com a mesma
  distância usada antes de Dormitórios e dos outros grupos.
*/
#filter-drawer
.sn-listing-page-search-divider
+ #filter-form
> .fd-field:first-child {
  margin-top: 0 !important;
}



/* SN_LISTING_PAGE_SEARCH_SPACING_FIX_V3 */

/* Remove as margens duplicadas criadas pelas regras gerais. */
#filter-drawer .sn-listing-page-search {
  margin: 0 !important;
}

/* Label com a mesma apresentação dos filtros, mas sem ficar colado. */
#filter-drawer
.sn-listing-page-search
> .sn-home-listing-search-label.fd-label {
  margin: 0 0 8px !important;
}

/* Campo até o primeiro separador. */
#filter-drawer .sn-listing-page-search-divider {
  margin: 14px 0 !important;
}

/* Somente disponíveis não adiciona outra margem além do separador. */
#filter-drawer
.sn-listing-page-search-divider
+ #filter-form
> .fd-field:first-child {
  margin: 0 !important;
}

/* Separador logo abaixo de Somente disponíveis. */
#filter-drawer
#filter-form
> .fd-field:first-child
+ .fd-divider {
  margin: 14px 0 !important;
}

/* O primeiro grupo depois desse separador começa sem margem extra. */
#filter-drawer
#filter-form
> .fd-field:first-child
+ .fd-divider
+ .fd-field {
  margin-top: 0 !important;
}



/* SN_FILTER_STRUCTURAL_GAP_FIX_V4 */

/*
  Os espaços estavam sendo duplicados:
  gap do contêiner + margem dos separadores.
*/
#filter-drawer .fd-body {
  row-gap: 0 !important;
  gap: 0 !important;
}

/*
  Mantém o formulário em coluna, mas sem acrescentar
  espaço automático entre campo e separador.
*/
#filter-drawer #filter-form {
  row-gap: 0 !important;
  gap: 0 !important;
}

/* Pesquisa: label até o campo. */
#filter-drawer
.sn-listing-page-search
> .sn-home-listing-search-label.fd-label {
  margin: 0 0 9px !important;
}

/* Pesquisa até o separador. */
#filter-drawer .sn-listing-page-search {
  margin: 0 !important;
}

/* Separador entre pesquisa e disponibilidade. */
#filter-drawer .sn-listing-page-search-divider {
  margin: 14px 0 !important;
}

/* Bloco Somente disponíveis. */
#filter-drawer
#filter-form
> .fd-field:first-child {
  margin: 0 !important;
}

/* Separador abaixo de Somente disponíveis. */
#filter-drawer
#filter-form
> .fd-field:first-child
+ .fd-divider {
  margin: 14px 0 !important;
}

/*
  Evita margem superior adicional no primeiro bloco
  localizado depois do separador.
*/
#filter-drawer
#filter-form
> .fd-field:first-child
+ .fd-divider
~ .fd-field:first-of-type {
  margin-top: 0 !important;
}



/* SN_PRICE_FILTER_MOVED_SPACING_V1 */

/*
  Evita soma de margin-bottom do campo com a margem
  do separador inferior.
*/
#filter-drawer
#filter-form
.sn-price-filter-moved {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/*
  Mantém a mesma distância uniforme adotada no topo
  do filtro.
*/
#filter-drawer
#filter-form
.sn-price-filter-divider {
  margin: 14px 0 !important;
}

/*
  O separador entre Somente disponíveis e Preço
  mantém a mesma distância dos demais.
*/
#filter-drawer
#filter-form
> .fd-field:first-child
+ .fd-divider {
  margin: 14px 0 !important;
}

/*
  No local antigo, permanece somente um separador
  antes de Limpar filtros.
*/
#filter-drawer
#filter-form
.fd-divider
+ #f-reset {
  margin-top: 0 !important;
}



/* SN_CODE_FILTER_FIRST_SPACING_V1 */

#filter-drawer
#filter-form
.sn-code-filter-first {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

#filter-drawer
#filter-form
.sn-code-filter-divider {
  margin: 14px 0 !important;
}

/*
  Como Código agora é o primeiro campo, Somente disponíveis
  não deve receber margem superior adicional.
*/
#filter-drawer
#filter-form
.sn-code-filter-divider
+ .fd-field {
  margin-top: 0 !important;
}



/* SN_AREA_RANGE_AFTER_PRICE_V1 */

#filter-drawer
#filter-form
.sn-price-filter-moved {
  margin-bottom: 14px !important;
}

#filter-drawer
#filter-form
.sn-area-filter-range {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}



/* SN_PRICE_AREA_DIVIDER_V1 */

#filter-drawer
#filter-form
.sn-price-filter-moved {
  margin-bottom: 0 !important;
}

#filter-drawer
#filter-form
.sn-price-area-divider {
  margin: 14px 0 !important;
}

#filter-drawer
#filter-form
.sn-price-area-divider
+ .sn-area-filter-range {
  margin-top: 0 !important;
}

/* SN_CSS_ARCH_LISTING_FILTER_DRAWER_RESPONSIVE_V1 */

/* SN_FILTER_RESPONSIVE_HEIGHT_V1 */

/* ======================================================
   CELULAR E TABLET
   Drawer ocupa toda a altura visível e somente o corpo
   interno rola quando o conteúdo ultrapassar a tela.
   ====================================================== */
@media (max-width: 1365px) {
  #filter-drawer {
    position: fixed !important;

    top: 0 !important;
    bottom: auto !important;
    left: 0 !important;

    width: 320px !important;
    max-width: 92vw !important;

    height: 100vh !important;
    height: 100dvh !important;
    min-height: 100vh !important;
    min-height: 100dvh !important;
    max-height: none !important;

    transform: translateX(-100%) !important;

    display: flex !important;
    flex-direction: column !important;

    overflow: hidden !important;
    box-sizing: border-box !important;
  }

  #filter-drawer.open {
    transform: translateX(0) !important;
  }

  #filter-drawer .fd-header {
    flex: 0 0 auto !important;
    position: relative !important;
    top: auto !important;
    z-index: 2 !important;
  }

  #filter-drawer .fd-body {
    flex: 1 1 auto !important;
    min-height: 0 !important;

    height: auto !important;
    max-height: none !important;

    overflow-x: hidden !important;
    overflow-y: auto !important;
    overscroll-behavior-y: contain !important;
    -webkit-overflow-scrolling: touch;

    box-sizing: border-box !important;
  }
}

/* ======================================================
   DESKTOP
   Filtro estático com toda a altura do conteúdo.
   Sem max-height, sem corte e sem rolagem interna.
   ====================================================== */
@media (min-width: 1366px) {
  .sn-listing-desktop-layout > #filter-drawer {
    position: relative !important;

    top: auto !important;
    bottom: auto !important;
    left: auto !important;

    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;

    align-self: start !important;

    overflow: visible !important;
    contain: none !important;
  }

  .sn-listing-desktop-layout
  > #filter-drawer
  > .fd-body {
    flex: 0 0 auto !important;

    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;

    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
  }

  .sn-listing-desktop-layout,
  .sn-listing-section.sn-grid-listing-section {
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;

    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
  }
}



/* SN_FILTER_MOBILE_OPEN_RIGHT_V1 */
/* SN_FILTER_INITIAL_FLASH_FIX_V1 */

@media (max-width: 1365px) {
  /*
    Estado inicial sem animação. Evita o drawer atravessar
    a tela enquanto o CSS muda a origem da esquerda para a direita.
  */
  #filter-drawer {
    left: auto !important;
    right: 0 !important;

    transform: translateX(100%) !important;
    transition: none !important;
    visibility: hidden !important;

    box-shadow: -8px 0 40px rgba(0,0,0,.18) !important;
  }

  /*
    Após a montagem inicial, libera visibilidade e animação.
  */
  html.sn-filter-mobile-ready #filter-drawer {
    visibility: visible !important;
    transition:
      transform .3s cubic-bezier(.4,0,.2,1) !important;
  }

  html.sn-filter-mobile-ready #filter-drawer.open {
    transform: translateX(0) !important;
  }
}

/* SN_CSS_ARCH_LISTING_DESKTOP_MEDIUM_PRELAYOUT_V1 */

/* SN_DESKTOP_MEDIUM_PRELAYOUT_V1

   Desktop médio: 1366px até 1599px.

   Responsabilidade exclusiva:
   estabilizar o grid antes de o JavaScript montar
   o layout desktop definitivo.

   O layout definitivo pertence a:
   - listing-filter-width.css V3;
   - SN_LISTING_RESPONSIVE_LAYERS_V2.
*/

@media (min-width: 1366px) and (max-width: 1599px) {

  body:not(.sn-listing-layout-ready)
  .sn-grid-listing-section
  #imoveis-grid {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;

    margin: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;

    position: relative !important;
    left: auto !important;
    transform: none !important;

    visibility: visible !important;
  }

  body:not(.sn-listing-layout-ready)
  .sn-grid-listing-section
  #cards-grid.sn-listing-cards-grid {
    display: grid !important;

    grid-template-columns:
      repeat(3, minmax(0, 1fr)) !important;

    column-gap: 3px !important;
    row-gap: 5px !important;

    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
  }
}

/* SN_CSS_ARCH_LISTING_EXCLUSIVIDADES_GRID_V1 */

/* SN_EXCLUSIVIDADES_GRID_FORCE_V2 */

/*
  Exclusividades não têm filtro lateral.
  O wrapper criado pelas listings deve ocupar toda a largura.
*/
html body.sn-exclusividades-grid-page
.sn-grid-listing-section
.sn-listing-desktop-layout {
  display: block !important;

  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;
  padding: 0 !important;

  grid-template-columns: none !important;
  column-gap: 0 !important;

  box-sizing: border-box !important;
}


/* Oculta qualquer elemento residual do filtro. */
html body.sn-exclusividades-grid-page
#filter-drawer,

html body.sn-exclusividades-grid-page
#filter-overlay,

html body.sn-exclusividades-grid-page
#filter-trigger,

html body.sn-exclusividades-grid-page
.sn-listing-filter-row,

html body.sn-exclusividades-grid-page
.sn-listing-filter-row-with-map {
  display: none !important;
}


/* Área externa do grid sempre em largura total. */
html body.sn-exclusividades-grid-page
.sn-grid-listing-section
#imoveis-grid,

html body.sn-exclusividades-grid-page
.sn-grid-listing-section
.sn-listing-desktop-layout
> #imoveis-grid {
  display: block !important;

  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;
  padding: 0 !important;

  position: relative !important;
  left: auto !important;
  right: auto !important;

  transform: none !important;
  visibility: visible !important;

  grid-column: auto !important;

  box-sizing: border-box !important;
}


/* Regra comum e definitiva de espaçamento. */
html body.sn-exclusividades-grid-page
.sn-grid-listing-section
#cards-grid.sn-listing-cards-grid,

html body.sn-exclusividades-grid-page
.sn-grid-listing-section
.sn-listing-desktop-layout
#cards-grid.sn-listing-cards-grid {
  display: grid !important;

  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;
  padding: 0 !important;

  column-gap: 3px !important;
  row-gap: 5px !important;
  gap: 5px 3px !important;

  box-sizing: border-box !important;
}


/* Cards sem largura antiga fixa. */
html body.sn-exclusividades-grid-page
#cards-grid.sn-listing-cards-grid
> article.sn-card,

html body.sn-exclusividades-grid-page
#cards-grid.sn-listing-cards-grid
> * {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;

  box-sizing: border-box !important;
}


/* 1ª camada: celular. */
@media (max-width: 767px) {
  html body.sn-exclusividades-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      minmax(0, 1fr) !important;
  }
}


/* 2ª camada: tablet menor. */
@media (min-width: 768px) and (max-width: 1023px) {
  html body.sn-exclusividades-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(2, minmax(0, 1fr)) !important;
  }
}


/* 3ª camada: tablet grande. */
@media (min-width: 1024px) and (max-width: 1365px) {
  html body.sn-exclusividades-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(3, minmax(0, 1fr)) !important;
  }
}


/* 4ª camada: desktop médio. */
@media (min-width: 1366px) and (max-width: 1599px) {
  html body.sn-exclusividades-grid-page
  .sn-grid-listing-section
  #imoveis-grid {
    width: 99vw !important;
    max-width: 99vw !important;

    margin-left: calc(50% - 49.5vw) !important;
    margin-right: calc(50% - 49.5vw) !important;
  }

  html body.sn-exclusividades-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(4, minmax(0, 1fr)) !important;

    column-gap: 3px !important;
    row-gap: 5px !important;
    gap: 5px 3px !important;
  }
}


/* 5ª camada: desktop largo. */
@media (min-width: 1600px) {
  html body.sn-exclusividades-grid-page
  .sn-grid-listing-section
  #imoveis-grid {
    width: 99vw !important;
    max-width: 99vw !important;

    margin-left: calc(50% - 49.5vw) !important;
    margin-right: calc(50% - 49.5vw) !important;
  }

  html body.sn-exclusividades-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(4, minmax(0, 1fr)) !important;

    column-gap: 3px !important;
    row-gap: 5px !important;
    gap: 5px 3px !important;
  }
}



/* SN_CSS_ARCH_LISTING_GUIAS_GRID_V1 */

/* SN_GUIAS_GRID_HOME_24_V1 */

/*
  Listings de guias com o mesmo padrão visual da Home:

  até 767px:       1 coluna
  768–1023px:      2 colunas
  1024–1365px:     3 colunas
  1366–1599px:     4 colunas
  1600px+:         4 colunas

  Espaçamento:
  horizontal: 3px
  vertical:   5px
*/


/* O guia não possui filtro lateral. */
html body.sn-guias-grid-page
.sn-grid-listing-section
.sn-listing-desktop-layout {
  display: block !important;

  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;
  padding: 0 !important;

  grid-template-columns: none !important;
  column-gap: 0 !important;

  box-sizing: border-box !important;
}


/* Remove elementos residuais do filtro de imóveis. */
html body.sn-guias-grid-page
#filter-drawer,

html body.sn-guias-grid-page
#filter-overlay,

html body.sn-guias-grid-page
#filter-trigger,

html body.sn-guias-grid-page
.sn-listing-filter-row,

html body.sn-guias-grid-page
.sn-listing-filter-row-with-map {
  display: none !important;
}


/* Área externa do grid. */
html body.sn-guias-grid-page
.sn-grid-listing-section
#imoveis-grid,

html body.sn-guias-grid-page
.sn-grid-listing-section
.sn-listing-desktop-layout
> #imoveis-grid {
  display: block !important;

  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;
  padding: 0 !important;

  position: relative !important;
  left: auto !important;
  right: auto !important;

  transform: none !important;
  visibility: visible !important;

  grid-column: auto !important;

  box-sizing: border-box !important;
}


/* Grid e espaçamento iguais aos da Home. */
html body.sn-guias-grid-page
.sn-grid-listing-section
#cards-grid.sn-listing-cards-grid,

html body.sn-guias-grid-page
.sn-grid-listing-section
.sn-listing-desktop-layout
#cards-grid.sn-listing-cards-grid {
  display: grid !important;

  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;
  padding: 0 !important;

  column-gap: 3px !important;
  row-gap: 5px !important;
  gap: 5px 3px !important;

  box-sizing: border-box !important;
}


/* Neutraliza larguras antigas dos cards de guia. */
html body.sn-guias-grid-page
#cards-grid.sn-listing-cards-grid
> * {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;

  box-sizing: border-box !important;
}


/* 1ª faixa — celular. */
@media (max-width: 767px) {
  html body.sn-guias-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      minmax(0, 1fr) !important;
  }
}


/* 2ª faixa — tablet menor. */
@media (min-width: 768px) and (max-width: 1023px) {
  html body.sn-guias-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(2, minmax(0, 1fr)) !important;
  }
}


/* 3ª faixa — tablet grande. */
@media (min-width: 1024px) and (max-width: 1365px) {
  html body.sn-guias-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(3, minmax(0, 1fr)) !important;
  }
}


/* 4ª faixa — desktop médio. */
@media (min-width: 1366px) and (max-width: 1599px) {
  html body.sn-guias-grid-page
  .sn-grid-listing-section
  #imoveis-grid {
    width: 99vw !important;
    max-width: 99vw !important;

    margin-left: calc(50% - 49.5vw) !important;
    margin-right: calc(50% - 49.5vw) !important;
  }

  html body.sn-guias-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(4, minmax(0, 1fr)) !important;

    column-gap: 3px !important;
    row-gap: 5px !important;
    gap: 5px 3px !important;
  }
}


/* 5ª faixa — desktop largo. */
@media (min-width: 1600px) {
  html body.sn-guias-grid-page
  .sn-grid-listing-section
  #imoveis-grid {
    width: 99vw !important;
    max-width: 99vw !important;

    margin-left: calc(50% - 49.5vw) !important;
    margin-right: calc(50% - 49.5vw) !important;
  }

  html body.sn-guias-grid-page
  #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(4, minmax(0, 1fr)) !important;

    column-gap: 3px !important;
    row-gap: 5px !important;
    gap: 5px 3px !important;
  }
}



/* SN_CSS_ARCH_LISTING_SPECIAL_GRID_GEOMETRY_V1
 *
 * Geometria canônica das páginas sem filtro lateral:
 * - Exclusividades
 * - Guias
 *
 * Replica exatamente o estado visual atualmente produzido
 * pelas funções JavaScript especiais.
 *
 * O JavaScript ainda permanece ativo nesta fase.
 */

html body.sn-exclusividades-grid-page
section.sn-listing-section.sn-grid-listing-section
> #imoveis-grid,

html body.sn-guias-grid-page
section.sn-listing-section.sn-grid-listing-section
> #imoveis-grid {
  display: block !important;

  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;

  margin-left: 0 !important;
  margin-right: 0 !important;

  padding: 0 !important;

  position: relative !important;

  left: auto !important;
  right: auto !important;

  transform: none !important;
  visibility: visible !important;

  box-sizing: border-box !important;
}


/*
 * Exclusividades:
 * preserva o min-width histórico herdado do common.
 */
html body.sn-exclusividades-grid-page
section.sn-listing-section.sn-grid-listing-section
> #imoveis-grid
> #cards-grid.sn-listing-cards-grid {
  display: grid !important;

  width: 100% !important;
  max-width: none !important;

  margin: 0 !important;
  padding: 0 !important;

  column-gap: 3px !important;
  row-gap: 5px !important;
  gap: 5px 3px !important;

  box-sizing: border-box !important;
}


/*
 * Guias:
 * o JavaScript histórico define min-width:0.
 */
html body.sn-guias-grid-page
section.sn-listing-section.sn-grid-listing-section
> #imoveis-grid
> #cards-grid.sn-listing-cards-grid {
  display: grid !important;

  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;
  padding: 0 !important;

  column-gap: 3px !important;
  row-gap: 5px !important;
  gap: 5px 3px !important;

  box-sizing: border-box !important;
}


html body.sn-exclusividades-grid-page
section.sn-listing-section.sn-grid-listing-section
> #imoveis-grid
> #cards-grid.sn-listing-cards-grid
> *,

html body.sn-guias-grid-page
section.sn-listing-section.sn-grid-listing-section
> #imoveis-grid
> #cards-grid.sn-listing-cards-grid
> * {
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;

  margin: 0 !important;

  box-sizing: border-box !important;
}


@media (max-width: 767px) {
  html body.sn-exclusividades-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid
  > #cards-grid.sn-listing-cards-grid,

  html body.sn-guias-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid
  > #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      minmax(0, 1fr) !important;
  }
}


@media (min-width: 768px) and (max-width: 1023px) {
  html body.sn-exclusividades-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid
  > #cards-grid.sn-listing-cards-grid,

  html body.sn-guias-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid
  > #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(2, minmax(0, 1fr)) !important;
  }
}


@media (min-width: 1024px) and (max-width: 1365px) {
  html body.sn-exclusividades-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid
  > #cards-grid.sn-listing-cards-grid,

  html body.sn-guias-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid
  > #cards-grid.sn-listing-cards-grid {
    grid-template-columns:
      repeat(3, minmax(0, 1fr)) !important;
  }
}


@media (min-width: 1366px) {
  html body.sn-exclusividades-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid,

  html body.sn-guias-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid {
    width: 99vw !important;
    max-width: 99vw !important;

    margin-left:
      calc(50% - 49.5vw) !important;

    margin-right:
      calc(50% - 49.5vw) !important;
  }


  html body.sn-exclusividades-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid
  > #cards-grid.sn-listing-cards-grid {
    min-width: 99vw !important;

    grid-template-columns:
      repeat(4, minmax(0, 1fr)) !important;
  }


  html body.sn-guias-grid-page
  section.sn-listing-section.sn-grid-listing-section
  > #imoveis-grid
  > #cards-grid.sn-listing-cards-grid {
    min-width: 0 !important;

    grid-template-columns:
      repeat(4, minmax(0, 1fr)) !important;
  }
}
