/**
 * lanaree-busca — estilos do autocomplete (fase 3).
 * Pills no mesmo vocabulário visual das pills de variação do lanaree-pdp
 * (borda fina, uppercase, tracking) — decisão do mockup aprovado em 2026-08-03.
 * Carregado em toda página do frontend desde a fase 4 (v0.7.0) — o widget
 * vive no ícone de busca nativo do header, não mais só numa página de teste.
 */

.lnr-busca {
	position: relative;
	max-width: 640px;
	margin: 0 auto;
	/* Ao rolar o campo pro topo no foco (mobile), respeita header sticky. */
	scroll-margin-top: 96px;
}
.lnr-busca__form { position: relative; margin: 0; }

.lnr-busca__input {
	width: 100%;
	padding: 12px 40px 12px 42px;
	border: 1px solid #c9c9c9;
	border-radius: 2px;
	/* 16px, não 15px: abaixo de 16px o Safari iOS dá zoom automático no
	   documento inteiro ao focar o campo (reportado pela Luiza com vídeo,
	   2026-08-04 — a navbar "descia" junto, sintoma clássico desse zoom
	   de viewport, não um bug nosso de layout). 16px é o menor valor que
	   não dispara esse comportamento nativo do WebKit. */
	font-size: 16px;
	letter-spacing: 0.03em;
	background-color: #fff;
	color: #151515;
	/* Lupa embutida (SVG inline — zero request extra). */
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23999999' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.5' y2='16.5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: 14px center;
}
.lnr-busca__input:focus { outline: none; border-color: #151515; }
/* X nativo do WebKit fora — o nosso botão é consistente entre navegadores. */
.lnr-busca__input::-webkit-search-cancel-button,
.lnr-busca__input::-webkit-search-decoration { -webkit-appearance: none; appearance: none; }

.lnr-busca__limpar {
	position: absolute;
	right: 6px;
	top: 50%;
	/* +1px no fim: flex centraliza a CAIXA da linha, mas o glifo "×" em si
	   tem tinta visual um pouco acima do centro geométrico dessa caixa —
	   típico de fonte, sobra mesmo com flex (relatado pela Luiza,
	   2026-08-04, depois do fix da v0.7.7 não bastar). */
	transform: translateY(calc(-50% + 1px));
	width: 32px;
	height: 32px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: none;
	background: transparent;
	color: #999;
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
	padding: 0;
}
.lnr-busca__limpar:hover { color: #151515; }
.lnr-busca__limpar[hidden] { display: none; }

.lnr-busca__dropdown {
	position: absolute;
	z-index: 220;
	left: 0;
	right: 0;
	top: calc(100% + 4px);
	background: #fff;
	border: 1px solid #e0e0e0;
	border-radius: 2px;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
	padding: 12px;
}
.lnr-busca__dropdown[hidden] { display: none; }

.lnr-busca__titulo {
	margin: 0 0 10px;
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #999;
}

/* Destaques (curadoria pelo flag "Destacado" nativo do WooCommerce,
   v0.6.6) vêm depois das pills de pesquisa — respiro extra pra separar os
   dois grupos visualmente. */
.lnr-busca__titulo--destaques { margin-top: 14px; }

.lnr-busca__pills { display: flex; flex-wrap: wrap; gap: 8px; }
/* Mobile: carrossel horizontal de pills (ref Zee.Dog, pedido 2026-08-04) —
   uma linha deslizável economiza a altura que o teclado disputa. */
@media (max-width: 782px) {
	.lnr-busca__pills {
		flex-wrap: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		padding-bottom: 4px;
		margin-right: -12px; /* pills "vazam" até a borda do dropdown */
		padding-right: 12px;
	}
	.lnr-busca__pills::-webkit-scrollbar { display: none; }
	.lnr-busca__pill { flex-shrink: 0; white-space: nowrap; }
}
.lnr-busca__pill {
	/* Espelha as chips da home (.lan-chip, medidas ao vivo em 2026-08-04:
	   Roboto 10px, peso 500, tracking 2px, padding 10px) — mesma família
	   visual de "sugestão clicável". */
	padding: 10px;
	border: 1px solid #c9c9c9;
	border-radius: 2px;
	background: transparent;
	color: #555;
	font-family: 'Roboto', sans-serif;
	font-size: 10px;
	font-weight: 500;
	letter-spacing: 2px;
	text-transform: uppercase;
	line-height: 1;
	cursor: pointer;
}
@media (hover: hover) and (pointer: fine) {
	.lnr-busca__pill:hover { border-color: #151515; color: #151515; }
}

/* !important de propósito: o CSS de lista do Uncode vence a especificidade
   simples e devolvia os bullets (visto no aceite do staging). */
.lnr-busca__dropdown ul.lnr-busca__lista,
.lnr-busca__dropdown li.lnr-busca__item {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
}
.lnr-busca__link {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 8px;
	border-radius: 2px;
	text-decoration: none;
	color: inherit;
}
.lnr-busca__item--ativo .lnr-busca__link,
.lnr-busca__link:hover { background: #f4f4f4; }

.lnr-busca__thumb { flex-shrink: 0; border-radius: 2px; object-fit: cover; }
.lnr-busca__textos { display: flex; flex-direction: column; min-width: 0; }
.lnr-busca__nome {
	font-size: 13px;
	color: #151515;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.lnr-busca__preco { font-size: 12px; color: #777; }

/* À esquerda com seta, não mais centralizado — mockup aprovado pela
   Luiza (2026-08-04, opção A): num painel full-width a versão centralizada
   ficava com o texto flutuando isolado num mar de espaço vazio; à
   esquerda ele continua o fluxo natural de leitura logo abaixo dos cards,
   consistente com os títulos "Pesquisas em alta"/"Destaques". */
.lnr-busca__ver-todos {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 6px;
	/* Respiro maior antes do divisor de cima (era 10px — pedido da Luiza,
	   2026-08-04, mais um ajuste fino depois do alinhamento simétrico). */
	padding: 16px 8px 10px;
	border-top: 1px solid #eee;
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: #555;
	text-decoration: none;
}
.lnr-busca__ver-todos:hover { color: #151515; }
.lnr-busca__ver-todos-seta { font-size: 13px; line-height: 1; }

.lnr-busca__mensagem { margin: 4px; font-size: 13px; color: #777; }
/* Neutro, não vermelho de alarme (aceite 2026-08-04) — mesmo peso do resto
   do texto secundário do widget, não uma cor de erro que grita. */
.lnr-busca__mensagem--erro { color: #555; }

/* Só o estado de erro centraliza — os demais seguem à esquerda (ver
   dropdown.classList em busca.js: o modificador é removido em toda troca
   de conteúdo, então nunca vaza pro próximo estado). */
.lnr-busca__dropdown--centralizado { text-align: center; }

/* Link de texto, não botão com borda (aceite 2026-08-04) — mesmo peso
   visual do .lnr-busca__ver-todos: um retry não é um CTA primário. */
.lnr-busca__tentar {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 4px 0 0;
	padding: 4px 0;
	border: none;
	background: transparent;
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #555;
	cursor: pointer;
}
.lnr-busca__tentar:hover { color: #151515; }
.lnr-busca__tentar-icone { font-size: 14px; line-height: 1; }

/* Região aria-live visível só para leitores de tela. */
.lnr-busca__vivo {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* ---------------------------------------------------------------------
 * Fase 4 (v0.7.2) — compatibilidade com o overlay de busca nativo do Uncode.
 *
 * Achado ao vivo no staging (não hipotético): o container do tema
 * (#masthead .overlay) usa height:auto + overflow:hidden. O tema calcula
 * altura só do <form> e corta o resto — pills/Destaques/resultados
 * renderizavam certo no DOM mas ficavam invisíveis. Escopado pela classe
 * `.lnr-busca-overlay-integrado`, que o JS (lnrBuscaIniciarIntegracaoHeader)
 * adiciona SÓ nos overlays onde de fato encontrou nosso widget — troca de
 * `:has()` pedida na revisão técnica (2026-08-04): mais previsível que um
 * seletor CSS "adivinhando" a mesma condição que o JS já resolveu.
 *
 * v0.7.5: `.open` adicionado à condição (era só `.lnr-busca-overlay-integrado`,
 * aplicava aos DOIS overlays — mobile e desktop — o tempo todo, aberto ou
 * fechado). Bug real reportado pela Luiza com print: um segundo "×" solto
 * aparecia no canto do painel. Causa: o `overflow:visible!important` sem
 * `.open` também descolapsava o overlay FECHADO (que o tema normalmente
 * mantém invisível via height:auto+overflow:hidden, a mesma mecânica do
 * bug original desta seção) — o botão de fechar nativo do tema
 * (`.menu-close-search`) desse overlay fechado vazava pra tela, e cliques
 * perto dele fechavam o painel em vez de limpar o campo (o clique
 * acertava esse botão alheio, não o nosso `.lnr-busca__limpar`). Com
 * `.open`, os overrides só valem enquanto o overlay realmente aberto —
 * o fechado volta a ficar colapsado/invisível como o tema espera.
 * ------------------------------------------------------------------- */
.overlay.overlay-search.lnr-busca-overlay-integrado.open {
	overflow: visible !important;
}

/* O tema aplica padding-top/bottom:100px em QUALQUER <form> dentro desse
   overlay (pensado pra um campo solitário, centralizado tipo Google) — o
   nosso formulário é compacto por design e herdava esse respiro gigante
   sem servir a propósito nenhum aqui. */
.overlay.overlay-search.lnr-busca-overlay-integrado.open .lnr-busca__form {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	max-width: none !important;
}

/* ---------------------------------------------------------------------
 * Fase 4 (v0.7.3/v0.7.4) — layout do painel dentro do overlay (feedback
 * visual da Luiza no staging real, 2026-08-04, duas rodadas): full-width
 * e à esquerda no desktop; respiro lateral no mobile; Destaques em cards
 * horizontais só no desktop (ref. Zee.Dog); ícone da lupa vira o X que o
 * PRÓPRIO tema já usa pra fechar; fundo da página escurecido atrás do
 * painel.
 *
 * v0.7.4, dois bugs que a Luiza pegou ao vivo: (a) título "Pesquisas em
 * alta"/"Destaques" centralizado — o tema herda text-align:center do
 * .search-container ancestral, e nada nosso revertia isso dentro do
 * overlay (texto centraliza mesmo em elementos de bloco); corrigido com
 * text-align:left explícito, escopado só aqui. (b) faixa com "fundo
 * vazado" (página por trás aparecendo) entre o campo e o dropdown, e
 * padding do dropdown diferente do padding do campo — causa raiz era o
 * dropdown ser position:absolute (herdado do uso original em
 * post_content, onde não pode empurrar layout): um elemento absoluto com
 * left:0/right:0 se posiciona pela borda do pai, IGNORANDO o padding
 * dele — por isso o dropdown não herdava os mesmos 32px/16px do campo, e
 * a fresta de 4px de gap (top: calc(100% + 4px) no CSS base) não tinha
 * fundo próprio cobrindo. Corrigido tornando o dropdown NORMAL FLOW
 * dentro do overlay (não mais absolute) — herda o padding do .lnr-busca
 * automaticamente (mesmo padding do campo, sem cálculo duplicado nem
 * gap) e a caixa do overlay passa a incluir a altura real do dropdown.
 * ------------------------------------------------------------------- */
.overlay.overlay-search.lnr-busca-overlay-integrado.open .lnr-busca {
	max-width: none !important;
	margin: 0 !important;
	/* Topo mais enxuto que os lados/base (pedido da Luiza, 2026-08-04:
	   painel "alguns px mais pra cima") — o tema já traz respiro próprio
	   acima do form, duplicar o padding empurrava tudo pra baixo à toa. */
	padding: 4px 32px 12px;
	background: #fff; /* cobre qualquer fresta residual — nunca mostra a página por trás */
	text-align: left !important; /* o tema centraliza texto no .search-container ancestral */
}
@media (max-width: 782px) {
	.overlay.overlay-search.lnr-busca-overlay-integrado.open .lnr-busca { padding: 4px 16px 12px; }
}
.overlay.overlay-search.lnr-busca-overlay-integrado.open .lnr-busca__dropdown {
	position: static;
	left: auto;
	right: auto;
	top: auto;
	width: auto;
	/* 20px (era 8px) — respiro maior entre o campo e "Pesquisas em alta",
	   pedido da Luiza (2026-08-04). */
	margin: 20px 0 0;
	padding: 0;
	border: none;
	box-shadow: none;
}

/* v0.7.6 — bug real reportado pela Luiza com print (o "terceiro X"), causa
 * raiz confirmada via DOM ao vivo (getBoundingClientRect real, não
 * suposição): o `.menu-close-search` do PRÓPRIO tema — botão de fechar
 * interno do painel, sempre presente, `z-index:10003` — ocupa uma caixa
 * (~84×114px) que ENGLOBA a área inteira do nosso `.lnr-busca__limpar`
 * (32×32px, sem z-index próprio). Dois efeitos: (1) o glifo dele (mesmo
 * ícone "\e117") aparecia como um X solto no meio do painel; (2) cliques
 * ali eram capturados por ELE (z-index mais alto), não pelo nosso botão —
 * por isso limpar o campo fechava o painel em vez de apagar o texto. Como
 * já temos fechar via ícone da navbar (lupa↔X, com aria-expanded/label
 * corretos — ver lnrBuscaIniciarIntegracaoHeader), esse botão interno do
 * tema é redundante. `display:none` não quebra o fallback de fechar pelo
 * scrim (fecharViaTema() chama `.click()` nele, que funciona em elemento
 * oculto — só deixa de RECEBER clique do usuário, o que é o objetivo). */
.overlay.overlay-search.lnr-busca-overlay-integrado.open .menu-close-search {
	display: none !important;
}

/* Desktop: Destaques E resultados normais em cards horizontais (imagem em
   cima, texto embaixo) — modificador compartilhado desde a v0.7.10 (era
   exclusivo dos Destaques; pedido da Luiza, mockup aprovado 2026-08-04:
   "RESULTADOS PARA riviera" com o mesmo tratamento visual). No mobile os
   dois seguem lista vertical — esta regra é só @media desktop. */
@media (min-width: 783px) {
	.lnr-busca__lista--cards {
		display: flex !important;
		gap: 14px;
		overflow-x: auto;
		padding-bottom: 2px;
	}
	.lnr-busca__lista--cards .lnr-busca__item { flex: 0 0 140px; }
	.lnr-busca__lista--cards .lnr-busca__link {
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
		padding: 4px;
	}
	.lnr-busca__lista--cards .lnr-busca__thumb {
		width: 100%;
		height: auto;
		aspect-ratio: 1;
	}
	.lnr-busca__lista--cards .lnr-busca__nome { white-space: normal; }
}

/* Gatilho da lupa (fora do nosso markup — é o ícone nativo do tema no
   header): troca de glifo enquanto o painel está aberto, sincronizada
   via JS observando a MESMA classe "open" que o tema já alterna
   (lnrBuscaEstadoGatilho, testável em Node — ver tests/test-ui.js). O
   pseudo-elemento fica no PRÓPRIO ícone (não no <a> inteiro, que tem
   padding/label escondido extra deslocando o centro) — X nasce
   exatamente onde a lupa estava, sem depender de medir o botão inteiro. */
.trigger-overlay[data-area="search"] .fa-search3 { position: relative; }
.trigger-overlay[data-area="search"].lnr-busca-fechar .fa-search3 { visibility: hidden; }
.trigger-overlay[data-area="search"].lnr-busca-fechar .fa-search3::after {
	content: "\e117";
	font-family: "uncodeicon";
	visibility: visible;
	position: absolute;
	top: 0;
	left: 0;
	font-size: inherit;
	line-height: inherit;
	color: inherit;
}

/* Fundo da página escurecido atrás do painel.
 *
 * v0.7.4 — SEM z-index (de propósito, depois de um bug real, não
 * hipótese): a primeira versão usava z-index alto num elemento filho de
 * document.body, e isso ficava ACIMA do painel de busca inteiro — visto
 * ao vivo no staging (a Luiza reportou com print o componente de busca
 * "ficando escurecido"). Medindo o z-index REAL do overlay em produção
 * (não o que o CSS-fonte do tema sugere): 0, não o 10002 esperado —
 * alguma regra mais específica sobrescreve em runtime. Empilhar por
 * NÚMERO contra um valor que o próprio tema muda por baixo dos panos é
 * frágil por definição. Solução: ordem no DOM, sem depender de nenhum
 * número — o JS (ver `lnrBuscaIniciarIntegracaoHeader` em busca.js)
 * insere cada scrim como PRIMEIRO FILHO do overlay correspondente (era
 * irmão logo antes dele até a v0.8.0 — mudou porque o `init.js` do
 * PRÓPRIO tema tem seu próprio "fechar ao clicar fora" que trata
 * qualquer coisa fora da subárvore `.overlay-search` como clique de
 * fora; como filho, o scrim entra nessa subárvore e o tema não fecha
 * mais sozinho). Elementos sem z-index pintam na ordem em que aparecem
 * no documento — o resto do conteúdo do overlay, vindo DEPOIS do scrim
 * (que é o primeiro filho), SEMPRE pinta por cima dele, garantido pela
 * especificação, não por coincidência de números. position:fixed segue
 * posicionando pela viewport — nem overlay nem #masthead têm
 * transform/filter, não viram containing block de elementos fixed
 * (confirmado: painel e scrim continuam fixos à tela). */
.lnr-busca-scrim {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	background: rgba(21, 21, 21, 0.55);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.2s ease;
}
.lnr-busca-scrim--visivel { opacity: 1; pointer-events: auto; }
