/* ============================================================
   ILX Filter Widget v1.6 — CSS scopé .ilx-filter
   Tokens info-lux + 3 modes (page / full / form) + tree picker
   v1.6 : redesign premium aéré (tree, tabs, tags, cards)
   v1.6.1 : profondeur commune + champ recherche live dans le picker
   v1.6.2 : profondeur 4 + recherche live aussi pour Rubriques/Annuaire/Agenda
   v1.6.4 : fix z-index — le menu deroulant passe au-dessus du widget
            suivant de la sidebar (Dernieres publications)
   ============================================================ */
.ilx-filter{
  --ilxf-vert:#a1cd38;
  --ilxf-vert-vif:#7CDA24;
  --ilxf-vert-fonce:#4a6b14;
  --ilxf-rouge:#c80000;
  --ilxf-noir:#1a1a1a;
  --ilxf-gris-1:#f6f7f4;
  --ilxf-gris-2:#e6e8e2;
  --ilxf-gris-3:#9aa19a;
  --ilxf-radius:14px;
  --ilxf-shadow:0 4px 18px rgba(20,40,10,.08);
  --ilxf-shadow-h:0 8px 28px rgba(20,40,10,.14);
  --ilxf-trans:.18s ease;

  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--ilxf-noir);line-height:1.5;max-width:100%;
  position:static;z-index:auto;
}
.ilx-filter *{box-sizing:border-box}

/* ============================================================
   TOOLBAR (filtres en haut)
   ============================================================ */
.ilx-filter__toolbar{
  background:#fff;border:1px solid var(--ilxf-gris-2);border-radius:var(--ilxf-radius);
  padding:14px 16px;margin-bottom:18px;box-shadow:var(--ilxf-shadow);
}
.ilx-filter--page{
  /* containment strict pour ne PAS déborder de la colonne content
     (et donc ne pas cacher la sidebar de droite si elle existe) */
  max-width:100%;width:100%;
}
.ilx-filter--page .ilx-filter__toolbar{
  /* top configurable : JS détecte la hauteur du menu fixe et set --ilxf-sticky-top,
     ou override manuel via attribut shortcode sticky_top="80" */
  position:sticky;top:var(--ilxf-sticky-top,0);z-index:10;
  margin:0 0 22px;padding:14px 16px;background:#fff;
  border:1px solid var(--ilxf-gris-2);border-radius:var(--ilxf-radius);
  box-shadow:0 4px 14px rgba(0,0,0,.06);
  width:100%;max-width:100%;
}
.ilx-filter__toolbar-grid{
  display:grid;grid-template-columns:1.3fr 1.3fr 1.4fr auto;gap:12px;align-items:end;
}
@media (max-width:880px){
  .ilx-filter__toolbar-grid{grid-template-columns:1fr 1fr;gap:10px}
  .ilx-filter__actions{grid-column:1/-1;justify-content:flex-end}
}
.ilx-filter__field{display:flex;flex-direction:column;gap:6px;min-width:0}
.ilx-filter__field label{
  font-size:11px;font-weight:700;color:#444;text-transform:uppercase;letter-spacing:.5px;
}
.ilx-filter__actions{display:flex;gap:8px}

/* ============================================================
   BOUTONS
   ============================================================ */
.ilx-filter__btn{
  padding:10px 16px;border:0;border-radius:10px;cursor:pointer;font-weight:700;font-size:14px;
  font-family:inherit;white-space:nowrap;color:#1a1a1a;
  transition:transform var(--ilxf-trans),box-shadow var(--ilxf-trans),background var(--ilxf-trans);
}
.ilx-filter__btn.primary{background:var(--ilxf-vert);color:#0c1a00}
.ilx-filter__btn.primary:hover{background:var(--ilxf-vert-vif);box-shadow:var(--ilxf-shadow-h)}
.ilx-filter__btn.ghost{background:#fff;color:#444;border:1px solid var(--ilxf-gris-2)}
.ilx-filter__btn.ghost:hover{background:var(--ilxf-gris-1)}

/* ============================================================
   TREE PICKER (selects pliables +/-) — v1.6 premium aéré
   ============================================================ */
.ilx-tree{position:relative}
/* ------------------------------------------------------------
   FIX EMPILEMENT SIDEBAR (z-index)
   Le conteneur .ilx-filter est en position:static / z-index:auto :
   le panneau déroulant (absolu) se retrouvait DERRIÈRE le widget
   suivant de la sidebar (« Dernières publications »).
   Dès qu'un menu est ouvert, on élève tout le module filtre pour
   qu'il passe au-dessus des widgets qui le suivent.
   ------------------------------------------------------------ */
.ilx-filter--form{position:relative}
.ilx-filter--form:has(.ilx-tree.is-open){z-index:1000}
.ilx-tree.is-open{z-index:1000} /* fallback navigateurs sans :has() */
.ilx-tree__trigger{
  width:100%;padding:12px 40px 12px 14px;border:1px solid var(--ilxf-gris-2);border-radius:12px;
  background:#fff;font-size:14px;text-align:left;cursor:pointer;font-family:inherit;color:#222;
  transition:border-color var(--ilxf-trans),box-shadow var(--ilxf-trans),background var(--ilxf-trans);
  position:relative;line-height:1.3;font-weight:500;
}
.ilx-tree__trigger:hover{border-color:var(--ilxf-gris-3);background:#fafbf6}
.ilx-tree__trigger::after{
  content:"▾";position:absolute;right:14px;top:50%;transform:translateY(-50%);
  color:var(--ilxf-gris-3);font-size:12px;transition:transform var(--ilxf-trans),color var(--ilxf-trans);
}
.ilx-tree.is-open .ilx-tree__trigger::after{transform:translateY(-50%) rotate(180deg);color:var(--ilxf-vert-fonce)}
.ilx-tree__trigger:focus,.ilx-tree.is-open .ilx-tree__trigger{
  outline:none;border-color:var(--ilxf-vert);box-shadow:0 0 0 3px rgba(161,205,56,.22);background:#fff;
}
.ilx-tree__trigger.has-value{
  font-weight:700;color:var(--ilxf-vert-fonce);
  border-color:var(--ilxf-vert);background:rgba(161,205,56,.06);
}
.ilx-tree__panel{
  position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:1001;
  background:#fff;border:1px solid var(--ilxf-gris-2);border-radius:14px;
  box-shadow:0 14px 40px rgba(20,40,10,.14);
  max-height:460px;padding:10px;
  display:none;flex-direction:column;
}
.ilx-tree.is-open .ilx-tree__panel{display:flex}
.ilx-tree__scroll{
  overflow-y:auto;flex:1;min-height:0;
  padding:4px 2px 2px;margin:0 -2px;
}
.ilx-tree__scroll::-webkit-scrollbar{width:8px}
.ilx-tree__scroll::-webkit-scrollbar-track{background:transparent}
.ilx-tree__scroll::-webkit-scrollbar-thumb{background:var(--ilxf-gris-2);border-radius:4px}
.ilx-tree__scroll::-webkit-scrollbar-thumb:hover{background:var(--ilxf-gris-3)}
.ilx-tree__search{
  width:100%;padding:9px 12px;border:1px solid var(--ilxf-gris-2);border-radius:10px;
  background:var(--ilxf-gris-1);font-size:13.5px;font-family:inherit;color:#222;
  margin-bottom:8px;flex-shrink:0;
  transition:border-color var(--ilxf-trans),box-shadow var(--ilxf-trans),background var(--ilxf-trans);
}
.ilx-tree__search:focus{
  outline:none;background:#fff;border-color:var(--ilxf-vert);
  box-shadow:0 0 0 3px rgba(161,205,56,.22);
}
.ilx-tree__search::-webkit-search-cancel-button{cursor:pointer}
.ilx-tree__empty{
  padding:24px 16px;text-align:center;color:var(--ilxf-gris-3);
  font-size:13px;font-style:italic;
}
.ilx-tree__item.is-hidden{display:none}
.ilx-tree__pick.is-match{
  background:rgba(255,235,150,.45);
  color:var(--ilxf-vert-fonce);font-weight:700;
}
.ilx-tree__pick.is-match small{background:rgba(255,255,255,.7);color:#5a6b14}
.ilx-tree__pick.is-match:hover{background:rgba(255,235,150,.7)}

/* Pane rubriques/annuaire/agenda dans le picker extra : propager le flex column
   pour que le search reste sticky en haut et que le scroll prenne la hauteur restante */
.ilx-tree__panel [data-pane]{display:none;flex-direction:column;min-height:0;flex:1}
.ilx-tree__panel [data-pane]:not([hidden]){display:flex}
.ilx-tree.is-open .ilx-tree__panel{animation:ilxFadeIn .15s ease}
@keyframes ilxFadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.ilx-tree__panel::-webkit-scrollbar{width:8px}
.ilx-tree__panel::-webkit-scrollbar-track{background:transparent}
.ilx-tree__panel::-webkit-scrollbar-thumb{background:var(--ilxf-gris-2);border-radius:4px}
.ilx-tree__panel::-webkit-scrollbar-thumb:hover{background:var(--ilxf-gris-3)}
.ilx-tree__list{list-style:none;margin:0;padding:0}
.ilx-tree__item{margin:0}
.ilx-tree__row{display:flex;align-items:center;gap:6px;padding:1px 0}
.ilx-tree__toggle{
  width:24px;height:24px;border:1px solid var(--ilxf-gris-2);background:#fff;color:#777;
  border-radius:50%;cursor:pointer;font-weight:700;font-size:14px;line-height:1;
  flex-shrink:0;display:flex;align-items:center;justify-content:center;
  font-family:inherit;padding:0;
  transition:all var(--ilxf-trans);
}
.ilx-tree__toggle:hover{background:var(--ilxf-vert);color:#0c1a00;border-color:var(--ilxf-vert);transform:scale(1.1)}
.ilx-tree__toggle.is-open{background:var(--ilxf-noir);color:#fff;border-color:var(--ilxf-noir)}
.ilx-tree__leaf{
  width:24px;height:24px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;
  color:var(--ilxf-gris-3);font-size:14px;line-height:1;
}
.ilx-tree__leaf::before{content:"•"}
.ilx-tree__pick{
  flex:1;background:transparent;border:0;text-align:left;padding:8px 12px;border-radius:9px;
  cursor:pointer;font-size:14px;color:#222;font-family:inherit;font-weight:500;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  transition:background var(--ilxf-trans),color var(--ilxf-trans),padding-left var(--ilxf-trans);
}
.ilx-tree__pick small{
  color:#7a8475;font-size:11px;font-weight:700;
  background:var(--ilxf-gris-1);padding:2px 9px;border-radius:11px;
  flex-shrink:0;letter-spacing:.3px;transition:background var(--ilxf-trans),color var(--ilxf-trans);
}
.ilx-tree__pick:hover{background:var(--ilxf-gris-1);padding-left:16px}
.ilx-tree__pick:hover small{background:#fff;color:#444}
.ilx-tree__pick.is-selected{
  background:linear-gradient(135deg,var(--ilxf-vert),var(--ilxf-vert-vif));
  color:#0c1a00;font-weight:800;padding-left:16px;
  box-shadow:0 3px 10px rgba(161,205,56,.35);
}
.ilx-tree__pick.is-selected small{background:rgba(255,255,255,.55);color:#0c1a00}
.ilx-tree__children{
  list-style:none;margin:3px 0 3px 17px;padding:0 0 0 14px;
  border-left:2px solid var(--ilxf-gris-2);
}
.ilx-tree__children[hidden]{display:none}
.ilx-tree__clear{
  display:block;width:100%;margin-top:10px;padding:10px;font-size:11.5px;font-weight:700;
  background:transparent;border:0;color:var(--ilxf-gris-3);cursor:pointer;
  border-top:1px solid var(--ilxf-gris-2);font-family:inherit;letter-spacing:.5px;
  text-transform:uppercase;
  transition:color var(--ilxf-trans),background var(--ilxf-trans);
}
.ilx-tree__clear:hover{color:var(--ilxf-rouge);background:#fff5f5}
.ilx-tree__hint{
  padding:10px 12px;margin-top:6px;font-size:12px;color:#3a4730;
  background:linear-gradient(135deg,rgba(161,205,56,.12),rgba(124,218,36,.08));
  border-radius:10px;font-style:italic;
  border-left:3px solid var(--ilxf-vert);
}

/* ============================================================
   TABS Rubriques / Annuaire / Agenda — v1.6 segment pill moderne
   ============================================================ */
.ilx-filter__tabs{
  display:flex;background:var(--ilxf-gris-1);border-radius:12px;padding:4px;gap:4px;margin-bottom:8px;
  border:1px solid var(--ilxf-gris-2);
}
.ilx-filter__tabs button{
  flex:1;background:transparent;border:0;padding:9px 10px;border-radius:9px;
  cursor:pointer;font-size:12px;font-weight:700;color:#555;font-family:inherit;
  letter-spacing:.4px;text-transform:uppercase;
  transition:background var(--ilxf-trans),color var(--ilxf-trans),box-shadow var(--ilxf-trans),transform var(--ilxf-trans);
}
.ilx-filter__tabs button.is-active{
  background:var(--ilxf-noir);color:#fff;
  box-shadow:0 3px 10px rgba(0,0,0,.2);
}
.ilx-filter__tabs button:not(.is-active):hover{background:#fff;color:#1a1a1a;transform:translateY(-1px)}
.ilx-filter__tabs button[data-tab="agenda"]{
  background:linear-gradient(135deg,var(--ilxf-vert),var(--ilxf-vert-vif));color:#0c1a00;
  box-shadow:0 3px 10px rgba(161,205,56,.35);
}
.ilx-filter__tabs button[data-tab="agenda"]:hover{
  filter:brightness(1.08);transform:translateY(-1px);
  box-shadow:0 5px 14px rgba(161,205,56,.45);
}
.ilx-filter__tabs button[data-tab="agenda"].is-active{
  background:linear-gradient(135deg,var(--ilxf-vert-vif),var(--ilxf-vert));
  color:#0c1a00;
  box-shadow:0 5px 16px rgba(161,205,56,.5);
}

/* ============================================================
   TAGS ACTIFS — v1.6 pastilles premium avec ombre douce
   ============================================================ */
.ilx-filter__tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;min-height:6px}
.ilx-filter__tag{
  background:linear-gradient(135deg,var(--ilxf-vert),var(--ilxf-vert-vif));color:#0c1a00;
  padding:6px 6px 6px 14px;border-radius:24px;
  font-size:12.5px;font-weight:700;letter-spacing:.2px;
  display:inline-flex;align-items:center;gap:8px;
  box-shadow:0 3px 10px rgba(161,205,56,.32);
  transition:transform var(--ilxf-trans),box-shadow var(--ilxf-trans);
}
.ilx-filter__tag:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(161,205,56,.42)}
.ilx-filter__tag.is-extra{
  background:linear-gradient(135deg,#1a1a1a,#2c2c2c);color:#fff;
  box-shadow:0 3px 10px rgba(0,0,0,.28);
}
.ilx-filter__tag.is-extra:hover{box-shadow:0 5px 14px rgba(0,0,0,.38)}
.ilx-filter__tag button{
  background:rgba(0,0,0,.22);border:0;color:#0c1a00;border-radius:50%;
  width:20px;height:20px;font-size:13px;line-height:1;cursor:pointer;padding:0;
  display:inline-flex;align-items:center;justify-content:center;font-weight:700;
  transition:background var(--ilxf-trans),transform var(--ilxf-trans);
}
.ilx-filter__tag button:hover{background:rgba(0,0,0,.4);transform:rotate(90deg)}
.ilx-filter__tag.is-extra button{background:rgba(255,255,255,.25);color:#fff}
.ilx-filter__tag.is-extra button:hover{background:rgba(255,255,255,.45)}

/* ============================================================
   RÉSULTATS — grille 2 colonnes en mode page
   ============================================================ */
.ilx-filter__results{}
.ilx-filter__h2{
  margin:8px 0 18px;font-size:24px;font-weight:800;
  display:flex;align-items:baseline;gap:12px;color:#1a1a1a;
  letter-spacing:-.3px;
}
.ilx-filter__h2 small{
  font-size:12.5px;color:#555;font-weight:700;letter-spacing:.3px;
  padding:4px 11px;background:var(--ilxf-gris-1);border-radius:14px;
  border:1px solid var(--ilxf-gris-2);
}
.ilx-filter__grid{display:grid;gap:22px}
.ilx-filter--page .ilx-filter__grid{grid-template-columns:1fr 1fr}
.ilx-filter--full .ilx-filter__grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
@media (max-width:720px){.ilx-filter__grid{grid-template-columns:1fr!important;gap:18px}}

.ilx-filter__card{
  background:#fff;border:1px solid var(--ilxf-gris-2);border-radius:16px;
  overflow:hidden;display:flex;flex-direction:column;
  transition:transform var(--ilxf-trans),box-shadow var(--ilxf-trans),border-color var(--ilxf-trans);
}
.ilx-filter__card:hover{
  transform:translateY(-4px);
  box-shadow:0 14px 32px rgba(20,40,10,.16);
  border-color:var(--ilxf-vert);
}
.ilx-filter__cover{
  aspect-ratio:16/9;display:block;text-decoration:none;overflow:hidden;
  background:linear-gradient(135deg,#c8e094,#6fa31f);
  background-size:cover;background-position:center;
  transition:transform .45s ease;
}
.ilx-filter__card:hover .ilx-filter__cover{transform:scale(1.04)}
.ilx-filter__cover--blank{background:var(--ilxf-gris-1)}
.ilx-filter__card-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:10px}
.ilx-filter__card-cats{display:flex;flex-wrap:wrap;gap:6px}
.ilx-cat-chip{
  background:var(--ilxf-vert);color:#0c1a00;padding:4px 11px;border-radius:20px;
  font-size:11px;font-weight:800;text-decoration:none;letter-spacing:.4px;line-height:1.4;
  text-transform:uppercase;
  transition:background var(--ilxf-trans),transform var(--ilxf-trans),box-shadow var(--ilxf-trans);
}
.ilx-cat-chip:hover{
  background:var(--ilxf-vert-vif);color:#0c1a00;
  transform:translateY(-1px);text-decoration:none;
  box-shadow:0 3px 8px rgba(161,205,56,.4);
}
.ilx-filter__card-title{
  margin:2px 0 0;font-size:17px;line-height:1.35;font-weight:700;letter-spacing:-.1px;
}
.ilx-filter__card-title a{color:#1a1a1a;text-decoration:none;transition:color var(--ilxf-trans)}
.ilx-filter__card-title a:hover{color:var(--ilxf-vert-fonce);text-decoration:none}
.ilx-filter__card-date{
  font-size:11.5px;color:var(--ilxf-gris-3);margin-top:auto;font-weight:600;
  display:inline-flex;align-items:center;gap:5px;letter-spacing:.2px;
}
.ilx-filter__card-date::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ilxf-vert);display:inline-block}

.ilx-filter__empty{
  grid-column:1/-1;padding:40px 20px;text-align:center;border:2px dashed var(--ilxf-gris-2);
  border-radius:var(--ilxf-radius);color:var(--ilxf-gris-3);background:#fff;
}
.ilx-filter__loading{opacity:.45;pointer-events:none;transition:opacity var(--ilxf-trans)}

/* ============================================================
   PAGINATION — fix : chiffres noirs sur fond blanc (le thème WP
   surcharge button{color:#fff} → on force la couleur ici)
   ============================================================ */
.ilx-filter__pager{display:flex;justify-content:center;gap:6px;margin-top:24px;flex-wrap:wrap}
.ilx-filter__pager button{
  background:#fff;border:1px solid var(--ilxf-gris-2);padding:8px 14px;border-radius:8px;
  cursor:pointer;font-weight:600;font-family:inherit;color:#1a1a1a;font-size:14px;
  transition:all var(--ilxf-trans);min-width:42px;
}
.ilx-filter__pager button:hover:not([disabled]){
  background:var(--ilxf-vert);border-color:var(--ilxf-vert);color:#0c1a00;
}
.ilx-filter__pager button[aria-current="true"]{
  background:var(--ilxf-noir);color:#fff;border-color:var(--ilxf-noir);
}
.ilx-filter__pager button[disabled]{opacity:.4;cursor:not-allowed}
.ilx-filter__pager-dots{padding:8px 4px;color:var(--ilxf-gris-3)}

.ilx-filter-error{padding:14px;border:1px solid #f3c2c2;background:#fff5f5;color:#7a1717;border-radius:10px}

/* ============================================================
   MODE FORM — mini widget compact pour sidebar
   ============================================================ */
.ilx-filter--form{display:block;max-width:100%}
.ilx-filter--form .ilx-filter__card{
  background:#fff;border:1px solid var(--ilxf-gris-2);border-radius:var(--ilxf-radius);
  box-shadow:var(--ilxf-shadow);overflow:visible;margin:0;
}
.ilx-filter--form .ilx-filter__card>header{
  margin:0;padding:12px 14px;background:var(--ilxf-noir);color:#fff;font-size:13px;
  letter-spacing:.5px;text-transform:uppercase;display:flex;align-items:center;gap:8px;font-weight:700;
}
.ilx-filter--form .ilx-filter__card>header .dot{
  width:8px;height:8px;border-radius:50%;background:var(--ilxf-vert);
}
.ilx-filter--form .ilx-filter__card .body{padding:12px 14px}
.ilx-filter--form label{
  display:block;font-size:11px;font-weight:700;color:#444;
  text-transform:uppercase;letter-spacing:.5px;margin:10px 0 6px;
}
.ilx-filter--form label:first-child{margin-top:0}
.ilx-filter--form .ilx-tree__trigger{padding:9px 32px 9px 11px;font-size:13.5px}
.ilx-filter--form .ilx-filter__btn{padding:10px 12px;font-size:13.5px;flex:1}
.ilx-filter--form .ilx-filter__actions{margin-top:14px}

/* ============================================================
   MODE AGENDA — filtres date + lieu + cat + grille 2 cols
   ============================================================ */
.ilx-filter--agenda .ilx-filter__toolbar-grid--agenda{
  grid-template-columns:130px 130px 1.3fr 1.3fr auto;
}
@media (max-width:880px){
  .ilx-filter--agenda .ilx-filter__toolbar-grid--agenda{
    grid-template-columns:1fr 1fr;
  }
}
.ilx-filter__date-input{
  padding:10px 12px;border:1px solid var(--ilxf-gris-2);border-radius:10px;
  font-size:14px;background:#fff;color:#222;font-family:inherit;width:100%;
  transition:border-color var(--ilxf-trans),box-shadow var(--ilxf-trans);
}
.ilx-filter__date-input:focus{
  outline:none;border-color:var(--ilxf-vert);box-shadow:0 0 0 3px rgba(161,205,56,.22);
}

.ilx-agenda__card{position:relative}
.ilx-agenda__date{
  position:absolute;top:12px;right:12px;z-index:2;
  background:var(--ilxf-vert);color:#0c1a00;padding:6px 12px;border-radius:8px;
  font-weight:800;font-size:13px;letter-spacing:.3px;
  box-shadow:0 3px 10px rgba(0,0,0,.15);
}
.ilx-agenda__lieu{
  font-size:13px;font-weight:600;color:var(--ilxf-vert-fonce);
  display:flex;align-items:center;gap:4px;
}
.ilx-filter__grid--agenda{grid-template-columns:1fr 1fr}
@media (max-width:720px){.ilx-filter__grid--agenda{grid-template-columns:1fr}}
