/* Universal Product Grid. Gaps are validated server-side to 2-16px; columns are per breakpoint. */
.fv-grid{position:relative;min-width:0}
.fv-product-grid{display:grid;margin:0;padding:0;list-style:none;align-items:stretch;min-width:0;
  grid-template-columns:repeat(var(--fv-cols-m,2),minmax(0,1fr));column-gap:var(--fv-gap-c-m,16px);row-gap:var(--fv-gap-r-m,16px)}
.fv-product-grid__item{min-width:0;display:flex}
.fv-product-grid__item>.fv-card{width:100%}
@media (min-width:768px){.fv-product-grid{grid-template-columns:repeat(var(--fv-cols-t,4),minmax(0,1fr));column-gap:var(--fv-gap-c-t,16px);row-gap:var(--fv-gap-r-t,16px)}}
@media (min-width:1024px){.fv-product-grid{grid-template-columns:repeat(var(--fv-cols-l,4),minmax(0,1fr));column-gap:var(--fv-gap-c-l,16px);row-gap:var(--fv-gap-r-l,16px)}}
@media (min-width:1200px){.fv-product-grid{grid-template-columns:repeat(var(--fv-cols-d,5),minmax(0,1fr));column-gap:var(--fv-gap-c-d,16px);row-gap:var(--fv-gap-r-d,16px)}}
.fv-grid__nav{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-block:var(--fv-space-4)}
.fv-grid__nav ul{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.fv-grid__nav .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;padding:0 10px;border:1px solid var(--fv-border);border-radius:var(--fv-radius-btn);color:var(--fv-ink);text-decoration:none}
.fv-grid__nav .page-numbers.current{background:var(--fv-primary);border-color:var(--fv-primary);color:var(--fv-bg)}
.fv-grid__nav .fv-btn{background:var(--fv-cream);color:var(--fv-ink);border:1px solid var(--fv-border)}
.fv-grid__sentinel{width:100%;height:1px}
.fv-grid__loader{display:flex;justify-content:center;padding:var(--fv-space-3)}
.fv-grid[data-loading="replace"] .fv-grid__loader{position:absolute;inset:0;align-items:center;background:transparent;pointer-events:none;z-index:30}
.fv-grid__loader[hidden],.fv-grid__error[hidden]{display:none}
.fv-grid[aria-busy="true"] .fv-product-grid{opacity:.7;transition:opacity var(--fv-dur)}
.fv-grid__error{display:flex;align-items:center;justify-content:center;gap:12px;padding:var(--fv-space-2);color:var(--fv-error)}
.fv-grid__empty{text-align:center;color:var(--fv-muted)}
