Findalo

CSS avanzado y clases estables

Cuando los tokens no llegan — ocultar un elemento, mover otro, un detalle muy tuyo — puedes escribir CSS directamente sobre las clases del widget. Solo las de esta lista tienen soporte garantizado: el resto del markup es interno y puede cambiar sin aviso.

Dónde va este CSS

En el Custom CSS del panel (Apariencia → Avanzado). El widget vive en un shadow DOM, así que el CSS de tu tienda no llega a estas clases — el editor del panel inyecta el tuyo dentro. Los tokens --fdl-* son la excepción: esos sí puedes declararlos desde fuera.

Clases con soporte estable

Estructura

Selector Qué es
.findalo-search-host Host del widget en tu página (fuera del shadow). El sitio donde declarar los tokens --fdl-* desde tu propia hoja de estilos.
.kos-search Raíz del widget dentro del shadow. Ámbito de los tokens en el Custom CSS del panel.
.topbar Cabecera del buscador: logo, cesta y cerrar.
.logo Enlace del logo del comercio en la cabecera.

Buscador

Selector Qué es
.search-box Caja del input de búsqueda. Lleva la clase .searching mientras hay una búsqueda en vuelo.
.search-box input El input de búsqueda.

Filtros

Selector Qué es
.filter-bar Barra bajo la cabecera: chips de filtros activos, contador y orden.
.active-chip Chip de un filtro activo.
.sort-select Selector de ordenación.
.facets Sidebar de filtros (marca, categoría, características…).
.facet-section Bloque de una faceta dentro del sidebar.
.facet-label Una opción de filtro (checkbox + texto).

Resultados

Selector Qué es
.results Contenedor principal de resultados.
.grid Rejilla de resultados (usa las columnas configuradas en el panel). Con vista lista lleva además .grid--list.
.result-banner Banner promocional sobre los resultados.

Card de producto

Selector Qué es
.card Card de producto.
.card .img Caja de imagen de la card.
.card .name Nombre del producto.
.card .price-row Fila de precios (actual + tachado si hay oferta).
.card .badge Etiqueta de la card (oferta, agotado, novedad…).
.card .add-to-cart Botón «Añadir al carrito» de la card.

Pantalla inicial

Selector Qué es
.empty-state Pantalla inicial (antes de escribir): recientes, populares, destacados.
.section-title Título de cada sección de la pantalla inicial.
.popular-card Card del carrusel de populares/destacados.
.recent-item Item de búsquedas recientes.
.pre-search-banner Banner de la pantalla inicial.
.discovery-rail Rail de descubrimiento (accesos a rankings) de la pantalla inicial.

Overlays

Selector Qué es
.qv-panel Panel del modal de vista rápida.
.quiz-panel Panel del quiz / buscador guiado.

Recetas

Ocultar «Añadir al carrito» en una categoría

/* Los productos enlazan a su ficha: filtra por la URL de la categoría */
.card[href*="/tarjetas-regalo/"] .add-to-cart { display: none; }

Rejilla más densa en pantallas grandes

@media (min-width: 1280px) {
  .grid { grid-template-columns: repeat(6, 1fr) !important; }
}

Cabecera pegajosa al hacer scroll

.kos-search .topbar { position: sticky; top: 0; z-index: 5; }

Límites: el CSS custom admite hasta 100.000 caracteres si lo pegas en el panel; si entra por la Automatización IA el tope es de 20.000, para que un humano pueda revisarlo. Las reglas cuyo selector apunte a las clases o al atributo del badge (.f_brand_*, [data-findalo-brand]) se BORRAN al guardar —la regla entera, sustituida por un comentario— y el panel te dice cuántas caerán antes de que guardes. Es un filtro por patrón, no una detección de intenciones: una regla que oculte el badge por otra vía pasa el filtro, y entonces la corta el integrity check del widget en tiempo de ejecución.