  /* grid principal (layout.md §16) + bottom sheet mobile (§18.2) */
  .wrap { max-width: 120rem; }
  .search-grid { display: grid; grid-template-columns: clamp(280px, 22vw, 320px) minmax(0, 1fr); gap: 24px; align-items: start; }
  .filters-pane { position: sticky; top: calc(clamp(56px, 7vh, 72px) + 12px);
    max-height: calc(100svh - clamp(56px, 7vh, 72px) - 24px); overflow-y: auto; padding-right: .3rem; }
  .results-pane { min-width: 0; container-type: inline-size; }
  .sheet-toggle, .sheet-head, .sheet-footer, .filters-fab { display: none; }
  body.la-filters-open { overflow: hidden; }
  @media (max-width: 1023px) {
    .search-grid { display: block; }
    .brandbar { flex-wrap: wrap; overflow: visible; }
    .filters-pane { display: none; position: fixed; inset: 0; z-index: 60; background: #fff;
      max-height: none; padding: 0 1rem 1rem; overflow-y: auto; }
    .sheet-toggle:checked ~ .search-grid .filters-pane { display: block; }
    .sheet-head { display: flex; align-items: center; gap: .7rem; position: sticky; top: 0;
      background: #fff; padding: .9rem 0 .6rem; border-bottom: 1px solid #e2e6ec; z-index: 1; }
    .sheet-head .sheet-close { margin-left: auto; font-size: 1.2rem; cursor: pointer; padding: .2rem .5rem; }
    .sheet-footer { display: flex; gap: .7rem; position: sticky; bottom: 0; background: #fff;
      padding: .8rem 0; border-top: 1px solid #e2e6ec; }
    .sheet-footer button { flex: 1; }
    .sheet-footer .sheet-clear { align-self: center; padding: .5rem .8rem; }
    .filters-fab { display: block; position: fixed; right: 1rem; bottom: 1rem; z-index: 55;
      background: #1c4fd6; color: #fff; padding: .65rem 1.1rem; border-radius: 999px;
      cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.28); font-size: .95rem; }
    .filters-pane label:has(input[type="checkbox"]), .la-select {
      min-height: 44px; display: flex; align-items: center; }
  }
  a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
  textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
    outline: 3px solid #1c4fd6; outline-offset: 2px; }
  .empty-state { padding: 1.2rem; border: 1px dashed #c6ccd4; border-radius: 8px; margin-top: 1rem; }
  .results-grid > .empty-state { grid-column: 1 / -1; width: 100%; box-sizing: border-box; }
  .empty-state ul { line-height: 1.9; }
  /* skeleton (§29/§13.3): cobre barra, contagem, filtros e cards sem
     remover nenhum bloco do fluxo, portanto preserva o footprint. */
  body.la-loading .brandbar,
  body.la-loading .filters-pane,
  body.la-loading .results-heading,
  body.la-loading .results-grid { position: relative; overflow: hidden; }
  body.la-loading .brandbar > *,
  body.la-loading .filters-pane > *,
  body.la-loading .results-heading > *,
  body.la-loading .results-grid > * { visibility: hidden; }
  body.la-loading .results-heading { color: transparent; }
  body.la-loading .brandbar::before,
  body.la-loading .filters-pane::before,
  body.la-loading .results-heading::before,
  body.la-loading .results-grid::before { content: ''; position: absolute; inset: 0; z-index: 2;
    background: repeating-linear-gradient(90deg, #eef1f5 0 300px, #f7f8fa 300px 316px);
    animation: la-shimmer 1.1s linear infinite; border-radius: 8px; }
  body.la-loading .results-grid::before { min-height: 18rem; }
  @keyframes la-shimmer { from { opacity: .65; } 50% { opacity: 1; } to { opacity: .65; } }
  .brandbar { --brand-size: clamp(2.25rem, 5vw, 3rem); --brand-gap: clamp(.25rem, 1.2vw, .55rem); display: grid; grid-template-columns: repeat(auto-fill, var(--brand-size));
    justify-content: space-between; align-items: center; gap: var(--brand-gap); padding: .7rem .2rem; border-bottom: 1px solid #e2e6ec; margin-bottom: 1rem; }
  .brandbar a, .brandbar span.disabled { width: var(--brand-size); height: var(--brand-size); display: inline-flex; align-items: center; justify-content: center;
    padding: .12rem; border-radius: 8px; background: #f0f2f5; text-decoration: none; color: #1c2430; border: 1px solid transparent; box-sizing: border-box; }
  .brandbar a:hover { border-color: #9eb5ea; background: #e7edf9; }
  .brandbar a.active { background: #fff; border: 2px solid #1c4fd6; box-shadow: 0 0 0 2px rgba(28,79,214,.12); }
  .brandbar a.active .brand-icon { opacity: 1; filter: none; }
  .brandbar span.disabled { position: relative; background: #f7f8fa; border: 1px solid #d7dce3; opacity: .68; cursor: help; }
  .brandbar span.disabled:focus-visible { outline: 3px solid #1c4fd6; outline-offset: 2px; }
  .brandbar .brand-disabled-glyph { display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 100%;
    border-radius: 6px; color: #687486; font-size: .9rem; font-weight: 750; letter-spacing: .02em; }
  .brandbar .brand-hint { position: absolute; left: 50%; bottom: calc(100% + .35rem); z-index: 20;
    transform: translateX(-50%); visibility: hidden; opacity: 0; pointer-events: none; white-space: nowrap;
    padding: .3rem .45rem; border-radius: 5px; background: #1c2430; color: #fff; font-size: .72rem;
    line-height: 1.2; box-shadow: 0 3px 10px rgba(0,0,0,.18); transition: opacity .12s ease, visibility .12s ease; }
  .brandbar .brand-item:hover .brand-hint, .brandbar .brand-item:focus-visible .brand-hint {
    visibility: visible; opacity: 1; }
  .brandbar .brand-logo-fallback { display: none; }
  .brandbar .brand-item.brand-logo-missing .brand-logo-fallback { display: inline-flex; }
  .brandbar .brand-item.brand-logo-missing .brand-icon { display: none; }
  .brandbar .brand-icon { display: block; width: auto; height: auto; max-width: 100%; max-height: 100%; object-fit: contain;
    flex: 0 1 auto; opacity: .72; filter: grayscale(.25); }
  .brandbar .brand-item[hidden] { display: none; }
  /* Moldura do controle +/-: mesma pegada (largura/altura) de um logo. As
     duas metades são linhas 1fr de um grid com uma trilha central fixa de
     1px para o separador — a soma das duas metades é sempre exatamente a
     altura útil (após borda e padding do box-border), sem depender de
     bordas assimétricas entre os botões que desalinhariam as metades. */
  .brandbar .brand-controls { width: var(--brand-size); height: var(--brand-size); box-sizing: border-box;
    display: grid; grid-template-rows: 1fr 1px 1fr; padding: 2px; overflow: hidden;
    border: 1px solid #9aa6b5; border-radius: 9px; background: #fff; align-self: stretch; }
  .brandbar .brand-control-sep { background: #d7dce3; }
  .brandbar .brand-control { box-sizing: border-box; width: 100%; height: 100%; min-height: 0; min-width: 0;
    margin: 0; padding: 0; border: 0; position: relative;
    background: transparent; color: #1c2430; cursor: pointer; }
  .brandbar .brand-control-less { border-radius: 6px 6px 0 0; }
  .brandbar .brand-control-more { border-radius: 0 0 6px 6px; }
  .brandbar .brand-control:hover:not(:disabled) { background: #f4f7fd; color: #1c4fd6; }
  .brandbar .brand-control:focus-visible { z-index: 1; outline: none; box-shadow: inset 0 0 0 2px #1c4fd6; }
  /* Os símbolos são desenhados via pseudo-elementos (barras) em vez do
     glifo de fonte: garante peso e comprimento idênticos entre "−" e "+"
     em qualquer navegador/fonte, satisfazendo "tamanhos visuais
     equivalentes" sem depender de métricas tipográficas. */
  .brandbar .brand-control::before { content: ''; position: absolute; top: 50%; left: 50%;
    width: 11px; height: 2px; background: currentColor; border-radius: 1px; transform: translate(-50%, -50%); }
  .brandbar .brand-control-more::after { content: ''; position: absolute; top: 50%; left: 50%;
    width: 2px; height: 11px; background: currentColor; border-radius: 1px; transform: translate(-50%, -50%); }
  .brandbar .brand-control.is-unavailable { visibility: hidden; pointer-events: none; }
  .opt-row { display: flex; align-items: center; gap: .4rem; padding: .15rem 0; font-size: .88rem; min-width: 0; }
  .opt-row .state-btn, .characteristic-mode-button { min-width: 2.4em; text-align: center; padding: .05rem .4rem; border-radius: 4px;
    border: 1px solid #c6ccd4; color: #1c2430; font-family: monospace; flex: 0 0 auto; cursor: pointer; user-select: none; }
  .opt-row .state-btn.st-req, .characteristic-mode-button.st-req { background: #1c4fd6; color: #fff; border-color: #1c4fd6; }
  .opt-row .state-btn.st-want, .characteristic-mode-button.st-want { background: #d8e3fb; border-color: #1c4fd6; }
  .opt-row .not-btn, .characteristic-exclude { padding: .05rem .4rem; border-radius: 4px; border: 1px solid #c6ccd4; color: #8a1f11; flex: 0 0 auto; cursor: pointer; user-select: none; }
  .opt-row .not-btn.active, .characteristic-exclude.active { background: #f4c9c2; border-color: #8a1f11; }
  .opt-row [role="button"][aria-disabled="true"] { cursor: progress; opacity: .65; }
  .opt-label { flex: 1; overflow-wrap: anywhere; }
  fieldset { border: 1px solid #e2e6ec; border-radius: 6px; margin: .8rem 0; }
  legend { font-weight: 600; padding: 0 .4rem; }
  .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
  .model-search { margin: .8rem 0; }
  .model-search input { width: 100%; max-width: none; }
  .results-heading { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; }
  .results-heading h2 { margin: 0; flex: 1 1 auto; }
  .search-submit { width: auto; min-width: 5.5rem; margin: 0; padding: .5rem .9rem; }
  .technical-toggle { display: inline-flex; align-items: center; gap: .4rem; margin: 0; font-size: .82rem; color: var(--muted); cursor: pointer; white-space: nowrap; }
  .technical-toggle input { position: absolute; opacity: 0; width: 1px; height: 1px; }
  .technical-toggle .toggle-track { width: 2.2rem; height: 1.2rem; border-radius: 999px; background: #aeb6c2; position: relative; transition: background .15s ease; }
  .technical-toggle .toggle-track::after { content: ''; position: absolute; top: .15rem; left: .15rem; width: .9rem; height: .9rem; border-radius: 50%; background: #fff; transition: transform .15s ease; box-shadow: 0 1px 2px rgba(0,0,0,.2); }
  .technical-toggle input:checked + .toggle-track { background: #1c4fd6; }
  .technical-toggle input:checked + .toggle-track::after { transform: translateX(1rem); }
  .technical-toggle input:focus-visible + .toggle-track { outline: 3px solid #1c4fd6; outline-offset: 2px; }
  .sort-label { margin: 0; font-size: .82rem; color: var(--muted); font-weight: 600; }
  .sort-select { width: auto; min-width: 11rem; max-width: none; }
  .sort-submit, .limpar-filtros { width: auto; min-width: 5.5rem; margin: 0; padding: .45rem .8rem; text-align: center; text-decoration: none; }
  .pagination { display: flex; align-items: center; justify-content: center; gap: .35rem; flex-wrap: wrap; margin: 1.2rem 0 .4rem; }
  .pagination a, .pagination span { min-width: 2.25rem; min-height: 2.25rem; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; padding: .35rem .55rem; border: 1px solid #c6ccd4; border-radius: 5px; text-decoration: none; color: #1c2430; font-size: .85rem; }
  .pagination a:hover { border-color: #1c4fd6; background: #e7edf9; }
  .pagination a[aria-current="page"] { background: #1c4fd6; color: #fff; border-color: #1c4fd6; font-weight: 700; }
  .pagination .pagination-disabled { color: #9aa3af; background: #f5f6f8; }
  .pagination .pagination-gap { border-color: transparent; background: transparent; min-width: 1.25rem; }
  .amb-options label { display: block; margin: .3rem 0; }
  /* Unidade base: ficha ocupa 1 coluna e anúncio ocupa 2. Os breakpoints
     consideram a largura real da área de resultados, não a tela inteira. */
  .results-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .75rem; margin-top: 1rem; align-items: stretch; }
  .results-grid .la-card { width: 100%; grid-column: span 2; }
  .results-grid .la-card.catalog { grid-column: span 1; }
  @container (min-width: 38rem) { .results-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
  @container (min-width: 56rem) { .results-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
  @container (min-width: 74rem) { .results-grid { grid-template-columns: repeat(8, minmax(0, 1fr)); } }
  @container (min-width: 92rem) { .results-grid { grid-template-columns: repeat(10, minmax(0, 1fr)); } }
  .device-toggle { font-size: .78rem; }
  .device-toggle a { margin-left: .4rem; }
  .device-toggle a.active { font-weight: 700; }
  .characteristic-filter { margin:.35rem .45rem; padding:.45rem; border:1px solid #cbd2dc; border-radius:5px; background:rgba(255,255,255,.72); }
  .characteristic-filter-title { display:block; margin:0 0 .4rem; font-size:.85rem; font-weight:600; color:#1c2430; }
  .characteristic-filter-grid { display:grid; grid-template-columns:auto auto minmax(0,1fr) minmax(0,1fr); gap:.4rem; align-items:end; }
  .characteristic-filter label { margin:0; font-size:.82rem; font-weight:400; color: var(--muted); }
  .characteristic-filter input, .characteristic-filter select { font-size:.85rem; width:100%; box-sizing:border-box; }
  .characteristic-mode-control { align-self:end; }
  .characteristic-mode-button { background:transparent; font-size:.85rem; }
  .characteristic-exclude { margin:0; background:transparent; font:inherit; }
  .characteristic-exclude:hover { background:#f8e4e1; border-color:#8a1f11; }
  .characteristic-min, .characteristic-max { min-width:0; font-size:.72rem !important; }
  /* opções em múltiplas colunas, encolhendo conforme a largura (item 5) */
  /* no máximo 3 colunas mesmo em telas muito largas: a largura mínima de
     cada trilha cresce até 1/3 do container, então um 4º item nunca cabe */
  .opt-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(max(10.5rem, (100% - 1.8rem) / 3), 1fr)); gap: .1rem .9rem; padding: .5rem .6rem; }

  /* localização: campos de coordenada nunca aparecem para o usuário —
     só existem preenchidos via geolocalização autorizada (item 2) */
  .geo-coords { display: none; }
  .geo-status { font-size: .82rem; color: var(--muted); margin: .3rem 0; }
  .geo-status.ok { color: var(--ok-fg); }
  .geo-radius { display: none; }
  .geo-radius.show { display: block; }

  /* especificações técnicas: um bloco por categoria, fundo alternado por
     bloco e por linha par/ímpar dentro do bloco (item 6) */
  .spec-block { margin: 0; border-top: 1px solid #e2e6ec; }
  .spec-block:first-of-type { border-top: none; }
  .spec-block:nth-of-type(odd) { background: #e4e9f2; }
  .spec-block:nth-of-type(even) { background: #ffffff; }
  .spec-block summary { margin: 0; padding: .6rem .6rem .3rem; font-size: .92rem; font-weight: 700; color: #1c2430; cursor: pointer; }
  .spec-block .characteristic-filter:nth-of-type(odd) { background: rgba(255,255,255,.78); }
  .spec-block .characteristic-filter:nth-of-type(even) { background: rgba(255,255,255,.48); }

  /* chips de filtros aplicados (layout.md §15) */
  .chips { display: flex; flex-wrap: wrap; gap: .45rem; margin: .3rem 0 1rem; }
  .chip { display: inline-flex; align-items: center; gap: .35rem; padding: .2rem .55rem;
    border-radius: 999px; background: #e7edf9; color: #1c2430; font-size: .82rem; }
  .chip a { text-decoration: none; color: #5a6472; font-weight: 700; }
  .chip a:hover { color: #8a1f11; }
  .chip.clear { background: transparent; border: 1px dashed #c6ccd4; }
  .see-all { font-style: italic; }

  /* seção lateral de marcas (layout.md §6) */
  .brand-bulk a { margin-right: .8rem; font-size: .85rem; }
  #brand-search { width: 100%; box-sizing: border-box; margin: .3rem 0 .5rem; padding: .4rem; border: 1px solid #c6ccd4; border-radius: 4px; }
  .brand-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: .1rem .8rem; }
  .brand-row { display: flex; align-items: center; gap: .4rem; min-height: 40px; padding: 0 .4rem;
    text-decoration: none; color: #1c2430; font-size: .88rem; border-radius: 4px; }
  .brand-row .brand-icon { width: 28px; height: 28px; object-fit: contain; flex: 0 0 28px; }
  .brand-row em { margin-left: auto; font-style: normal; color: #5a6472; }
  .brand-row.active { background: #fff; border: 1px solid #1c4fd6; font-weight: 600; }
  .brand-row.active .brand-icon { opacity: 1; filter: none; }
  .brand-row.disabled { color: #a3aab5; border: 1px solid #d7dce3; opacity: .5; }
  .brand-row:hover:not(.disabled) { background: #f0f2f5; }

  /* nota de segurança: estrelas clicáveis, só CSS (item 4) */
  .star-rating { display: inline-flex; flex-direction: row-reverse; gap: .1rem; font-size: 1.3rem; }
  .star-rating input { position: absolute; opacity: 0; width: 1px; height: 1px; }
  .star-rating label { cursor: pointer; color: #c6ccd4; line-height: 1; }
  .star-rating label.star-clear-label { font-size: .75rem; color: var(--muted); align-self: center; margin-left: .3rem; }
  .star-rating input:checked ~ label:not(.star-clear-label) { color: #e0a800; }
  .star-rating:hover label:not(.star-clear-label) { color: #c6ccd4; }
  .star-rating label:not(.star-clear-label):hover,
  .star-rating label:not(.star-clear-label):hover ~ label:not(.star-clear-label) { color: #e0a800; }
  .star-rating input:focus-visible ~ label { outline: 2px solid #1c4fd6; outline-offset: 2px; }
