.vd-list{--vd-ink:#111;--vd-paper:#fff;--vd-muted:#666;--vd-line:#ddd;--vd-radius:4px;margin:1.5em 0;color:var(--vd-ink)}
.vd-list *,.vd-list *::before,.vd-list *::after{box-sizing:border-box}

/* filters */
.vd-filters{display:flex;flex-wrap:wrap;gap:.75em 1em;align-items:flex-end;margin:0 0 1.5em;padding:1em;border:1px solid var(--vd-line);border-radius:var(--vd-radius)}
.vd-filters label{display:flex;flex-direction:column;gap:.25em;font-size:.85em;color:var(--vd-muted)}
.vd-filters select,.vd-filters input[type=search]{min-width:11em;padding:.45em .6em;border:1px solid var(--vd-ink);border-radius:var(--vd-radius);background:var(--vd-paper);color:var(--vd-ink);font:inherit}
.vd-reset{align-self:center;font-size:.9em}

/* grid */
.vd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.5em}
.vd-card{display:flex;flex-direction:column;border:1px solid var(--vd-ink);border-radius:var(--vd-radius);background:var(--vd-paper);overflow:hidden}
.vd-media{position:relative;display:block;line-height:0;background:#f4f4f4}
.vd-media img{display:block;width:100%;height:auto}
a.vd-media:focus-visible,.vd-btn:focus-visible,.vd-copy:focus-visible{outline:3px solid var(--vd-ink);outline-offset:2px}
.vd-body{display:flex;flex-direction:column;gap:.35em;padding:1em;flex:1}
.vd-shop{margin:0;font-size:.8em;text-transform:uppercase;letter-spacing:.06em;color:var(--vd-muted)}
.vd-title{margin:0;font-size:1.05em;line-height:1.3}
.vd-desc{margin:0;font-size:.9em;color:var(--vd-muted)}
.vd-price{margin:.25em 0 0;display:flex;flex-wrap:wrap;gap:.5em;align-items:baseline}
.vd-price del{color:var(--vd-muted)}
.vd-price ins{text-decoration:none;font-weight:700;font-size:1.2em}
.vd-disc{padding:.1em .5em;background:var(--vd-ink);color:var(--vd-paper);font-weight:700;font-size:.85em;border-radius:2px}
.vd-valid{margin:0;font-size:.8em;color:var(--vd-muted)}
.vd-actions{margin-top:auto;padding-top:.75em;display:flex;flex-direction:column;gap:.6em}

/* buttons */
.vd-btn{display:inline-block;padding:.6em 1em;border:2px solid var(--vd-ink);border-radius:var(--vd-radius);background:var(--vd-ink);color:var(--vd-paper);font:inherit;font-weight:600;text-align:center;text-decoration:none;cursor:pointer}
.vd-btn:hover{background:var(--vd-paper);color:var(--vd-ink)}
.vd-btn-ghost{background:var(--vd-paper);color:var(--vd-ink)}
.vd-btn-ghost:hover{background:var(--vd-ink);color:var(--vd-paper)}

/* revealed code */
.vd-code{display:flex;gap:.5em;align-items:stretch}
.vd-code[hidden]{display:none}
.vd-code code{flex:1;padding:.5em .75em;border:2px dashed var(--vd-ink);font:700 1.1em/1.4 "Courier New",monospace;text-align:center;word-break:break-all;user-select:all}
.vd-copy{padding:0 .9em;border:2px solid var(--vd-ink);border-radius:var(--vd-radius);background:var(--vd-paper);color:var(--vd-ink);font:inherit;font-weight:600;cursor:pointer}
.vd-copy:hover{background:var(--vd-ink);color:var(--vd-paper)}
.vd-card.is-loading .vd-media{opacity:.6}
.vd-card.is-loading .vd-btn{pointer-events:none}

/* expired: dimmed, grey, clearly labelled */
.vd-card.is-expired{border-color:var(--vd-line)}
.vd-card.is-expired .vd-media img{filter:grayscale(1);opacity:.5}
.vd-card.is-expired .vd-title,.vd-card.is-expired .vd-price{color:var(--vd-muted)}
.vd-badge{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-8deg);padding:.3em 1em;border:3px solid var(--vd-ink);background:var(--vd-paper);color:var(--vd-ink);font:700 1.1rem/1.2 "Courier New",monospace;letter-spacing:.15em;text-transform:uppercase}

/* pagination + empty */
.vd-pagination{margin-top:2em}
.vd-pagination ul{display:flex;flex-wrap:wrap;gap:.4em;justify-content:center;margin:0;padding:0;list-style:none}
.vd-pagination .page-numbers{display:block;padding:.4em .8em;border:1px solid var(--vd-ink);border-radius:var(--vd-radius);color:var(--vd-ink);text-decoration:none}
.vd-pagination .page-numbers.current,.vd-pagination a.page-numbers:hover{background:var(--vd-ink);color:var(--vd-paper)}
.vd-empty{padding:2em;text-align:center;border:1px dashed var(--vd-line)}

@media (prefers-reduced-motion:no-preference){.vd-card,.vd-media{transition:opacity .2s}}
