.hv-pf{max-width:1280px;margin:0 auto;padding:0 20px 50px}
.hv-pf.has-side{display:grid;grid-template-columns:240px minmax(0,1fr);gap:0 44px;align-items:start}
/* colonne de filtres */
.hv-pf__side{position:sticky;top:90px;max-height:calc(100vh - 110px);overflow:auto;padding:4px 6px 20px 0;scrollbar-width:thin}
.hv-pf__group{display:block;margin:0 0 30px}
.hv-pf__label{display:block;margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid #222;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.hv-pf__btn{display:flex;justify-content:space-between;align-items:baseline;gap:10px;width:100%;margin:0;padding:6px 0 6px 12px;border:0;border-left:2px solid transparent;border-radius:0;background:none;color:#555;font:inherit;font-size:14px;text-align:left;cursor:pointer;transition:color .15s,border-color .15s}
.hv-pf__btn small{flex:none;font-size:12px;opacity:.5}
.hv-pf__btn:hover{color:#000;border-left-color:#bbb}
.hv-pf__btn.is-active{color:#000;font-weight:700;border-left-color:#000}
.hv-pf__btn.is-active small{opacity:.8}
.hv-pf__group:not(.is-open) .hv-pf__btn.is-extra{display:none}
.hv-pf__more{display:block;margin:6px 0 0;padding:6px 0 6px 12px;border:0;background:none;color:#000;font:inherit;font-size:13px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.hv-pf__reset{display:block;margin:0;padding:0;border:0;background:none;color:#000;font:inherit;font-size:13px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.hv-pf__reset[hidden]{display:none}
.hv-pf__toggle{display:none}
/* grille */
.hv-pf__count{margin:0 0 16px;font-size:13px;letter-spacing:.06em;text-transform:uppercase;opacity:.65}
.hv-pf__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.hv-pf.has-side .hv-pf__grid{grid-template-columns:repeat(3,1fr)}
.hv-pf__item{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;background:#111}
.hv-pf__item[hidden]{display:none}
.hv-pf__item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.hv-pf__item:hover img{transform:scale(1.05)}
.hv-pf__title{position:absolute;left:0;right:0;bottom:0;padding:26px 12px 10px;color:#fff;font-size:13px;background:linear-gradient(transparent,rgba(0,0,0,.75));opacity:0;transition:opacity .25s}
.hv-pf__item:hover .hv-pf__title,.hv-pf__item:focus-visible .hv-pf__title{opacity:1}
.hv-pf__empty{padding:50px 0;text-align:center}
@media (max-width:1100px){.hv-pf.has-side .hv-pf__grid{grid-template-columns:repeat(2,1fr)}.hv-pf__grid{grid-template-columns:repeat(3,1fr)}}
/* mobile : la colonne se replie derrière un bouton « Filtrer » */
@media (max-width:860px){
.hv-pf.has-side{display:block}
.hv-pf__toggle{display:flex;justify-content:space-between;align-items:center;width:100%;box-sizing:border-box;margin:0 0 14px;padding:13px 16px;border:1px solid #222;border-radius:0;background:#fff;color:#222;font:inherit;font-size:13px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer}
.hv-pf__toggle::after{content:"+";font-size:18px;line-height:1}
.hv-pf__toggle[aria-expanded=true]::after{content:"\2212"}
.hv-pf__toggle-n:not(:empty){margin-left:6px;opacity:.7}
.hv-pf__side{display:none;position:static;max-height:none;margin:0 0 20px;padding:0 0 4px}
.hv-pf.is-open .hv-pf__side{display:block}
/* cibles tactiles d'au moins 44 px */
.hv-pf__btn{padding-top:12px;padding-bottom:12px}
.hv-pf__more,.hv-pf__reset{padding-top:12px;padding-bottom:12px}
.hv-pf__toggle{min-height:48px}
}
@media (max-width:700px){.hv-pf{padding:0 16px 30px}.hv-pf__grid,.hv-pf.has-side .hv-pf__grid{grid-template-columns:repeat(2,1fr);gap:8px}.hv-pf__title{opacity:1}}
@media (prefers-reduced-motion:reduce){.hv-pf__item img{transition:none}}

/* pages d'entrée thème / ville */
.hv-landing{max-width:1280px;margin:0 auto;padding:0 20px 50px}
.hv-landing__kicker{margin:8px 0 0;font-size:13px;letter-spacing:.14em;text-transform:uppercase;opacity:.6;text-align:center}
.hv-landing__intro{max-width:780px;margin:0 auto 34px;font-size:16px;line-height:1.75;text-align:center}
.hv-landing__intro p{margin:0 0 14px}
.hv-landing__more{margin:44px 0 0;padding-top:26px;border-top:1px solid #e3e3e3;text-align:center}
.hv-landing__more h2{margin:0 0 14px;font-size:13px;letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.hv-landing__more p{margin:0 0 14px;line-height:2.2}
.hv-landing__more a{display:inline-block;margin:0 4px 6px;padding:5px 14px;border:1px solid #ccc;border-radius:999px;font-size:13px;color:#222;text-decoration:none}
.hv-landing__more a:hover{border-color:#222;background:#222;color:#fff}
.hv-landing__more small{opacity:.6;margin-left:2px}
.hv-landing__more .hv-landing__all{border:0;padding:0;text-decoration:underline;text-underline-offset:3px}
.hv-landing__more .hv-landing__all:hover{background:none;color:inherit}
