CSS avancé et classes stables
Quand les tokens ne suffisent pas — masquer un élément, en déplacer un autre, un détail bien à toi —
tu peux écrire du CSS directement sur les classes du widget. Seules celles de cette liste
ont un support garanti : le reste du markup est interne et peut changer sans préavis.
Où va ce CSS
Dans le Custom CSS du panneau (Apparence → Avancé).
Le widget vit dans un shadow DOM, donc le CSS de ta boutique n'atteint pas ces classes —
l'éditeur du panneau injecte le tien à l'intérieur. Les tokens --fdl-*
sont l'exception : eux, tu peux les déclarer depuis l'extérieur.
Classes avec support stable
Structure
| Sélecteur | Ce que c'est |
| .findalo-search-host | Host du widget dans ta page (hors du shadow). L'endroit où déclarer les tokens --fdl-* depuis ta propre feuille de styles. |
| .kos-search | Racine du widget dans le shadow. Portée des tokens dans le Custom CSS du panneau. |
| .topbar | En-tête du moteur de recherche : logo, panier et fermeture. |
| .logo | Lien du logo de la boutique dans l'en-tête. |
Recherche
| Sélecteur | Ce que c'est |
| .search-box | Boîte de l'input de recherche. Porte la classe .searching tant qu'une recherche est en cours. |
| .search-box input | L'input de recherche. |
Filtres
| Sélecteur | Ce que c'est |
| .filter-bar | Barre sous l'en-tête : chips des filtres actifs, compteur et tri. |
| .active-chip | Chip d'un filtre actif. |
| .sort-select | Sélecteur de tri. |
| .facets | Sidebar des filtres (marque, catégorie, caractéristiques…). |
| .facet-section | Bloc d'une facette dans la sidebar. |
| .facet-label | Une option de filtre (checkbox + texte). |
Résultats
| Sélecteur | Ce que c'est |
| .results | Conteneur principal des résultats. |
| .grid | Grille des résultats (utilise les colonnes configurées dans le panneau). En vue liste, porte aussi .grid--list. |
| .result-banner | Bannière promotionnelle au-dessus des résultats. |
Card produit
| Sélecteur | Ce que c'est |
| .card | Card produit. |
| .card .img | Boîte d'image de la card. |
| .card .name | Nom du produit. |
| .card .price-row | Ligne des prix (actuel + barré s'il y a une promo). |
| .card .badge | Étiquette de la card (promo, épuisé, nouveauté…). |
| .card .add-to-cart | Bouton « Ajouter au panier » de la card. |
Écran initial
| Sélecteur | Ce que c'est |
| .empty-state | Écran initial (avant la saisie) : récents, populaires, mis en avant. |
| .section-title | Titre de chaque section de l'écran initial. |
| .popular-card | Card du carrousel des populaires / mis en avant. |
| .recent-item | Item des recherches récentes. |
| .pre-search-banner | Bannière de l'écran initial. |
| .discovery-rail | Rail de découverte (accès aux classements) de l'écran initial. |
Overlays
| Sélecteur | Ce que c'est |
| .qv-panel | Panneau du modal d'aperçu rapide. |
| .quiz-panel | Panneau du quiz / de la recherche guidée. |
Recettes
Masquer « Ajouter au panier » dans une catégorie
/* Les produits pointent vers leur fiche : filtre par l'URL de la catégorie */
.card[href*="/tarjetas-regalo/"] .add-to-cart { display: none; } Grille plus dense sur les grands écrans
@media (min-width: 1280px) {
.grid { grid-template-columns: repeat(6, 1fr) !important; }
} En-tête sticky au scroll
.kos-search .topbar { position: sticky; top: 0; z-index: 5; } Limites : le CSS custom accepte jusqu'à 100 000 caractères si tu le colles dans le panneau ; s'il arrive par l'Automatisation IA, la limite est de 20 000, pour qu'un humain puisse le relire.
Les règles dont le sélecteur cible les classes ou l'attribut du badge (.f_brand_*, [data-findalo-brand]) sont SUPPRIMÉES à l'enregistrement —la règle entière, remplacée par un commentaire— et le panneau t'indique combien vont tomber avant que tu enregistres. C'est un filtre par motif, pas une détection d'intention : une règle qui masque le badge autrement passe le filtre, et c'est alors l'integrity check du widget qui la coupe à l'exécution.