/* Approved card footer: name + count, then the existing set + price row. */
.card-caption { display:flex; align-items:flex-start; gap:.4rem; margin-top:.4rem; min-width:0; }
.card-caption > :first-child { flex:1; min-width:0; }
.card-caption > .card-quantity { position:static; flex:none; min-width:1.7rem; padding:.08rem .35rem; border:1px solid var(--border); border-radius:4px; background:var(--surface-2); color:var(--gold-bright); font-size:.75rem; line-height:1.35; font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap; text-align:center; }
.ctile .card-caption .cname { margin:0; }
/* Native FoilRibbon geometry: finish on the right; Need/Has stays on the left. */
.card-finish { position:absolute; top:0; left:auto; right:0; width:clamp(13.8px,30.666667%,101.2px); height:auto; aspect-ratio:1; container-type:inline-size; overflow:hidden; pointer-events:none; z-index:3; font:900 7.5px/1.2 Arial,sans-serif; }
.card-finish > span { position:absolute; display:block; width:160%; top:25%; left:75%; transform:translate(-50%,-50%) rotate(45deg); font-size:16.304348cqw; padding:3.26087cqw 0; text-align:center; background:linear-gradient(90deg,#88aadd,#ddaa88,#88ddaa); color:#111; }
.card-finish > span > span { display:block; }
.card-finish.card-finish-long { width:clamp(20.4px,45.333333%,149.6px); }
.card-finish-long > span { font-size:8.82353cqw; padding:2.205882cqw 0; }
.collection-card .card-art { display:block; position:relative; overflow:hidden; border-radius:7px; aspect-ratio:488/680; background:var(--surface-2); }
.collection-card .card-caption strong { margin:0; }
.collection-card .card-meta { display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:.2rem .4rem; margin-top:.2rem; color:var(--muted); font-size:.72rem; }
.collection-card .card-price { color:var(--gold-bright); font-weight:600; margin-left:auto; white-space:nowrap; }
.compact .collection-card .card-caption { margin-top:0; }
.plaque .card-caption { margin-top:0; align-items:center; }
.plaque .card-quantity { font-size:.66rem; line-height:1.2; padding:0 .3rem; min-width:1.4rem; }
.plaque-row .tile-price { margin-left:auto; }
.plaque-row .tile-wish { margin-left:0; }
/* The same foil sweep as collection detail, with the same reduced-motion
   fallback. Only the image frame shimmers; names and prices stay steady. */
.card-sheen::after { content:""; position:absolute; inset:-30%; pointer-events:none; background:linear-gradient(115deg,transparent 38%,rgba(255,255,255,.10) 44%,rgba(150,225,255,.30) 48%,rgba(255,230,160,.34) 52%,rgba(255,165,225,.28) 56%,rgba(255,255,255,.10) 62%,transparent 68%); transform:translateX(-60%); animation:card-foil-sweep 4.5s linear infinite; animation-delay:calc(var(--foil-offset,0) * -4.5s); }
.card-sheen.card-etched::after { animation-duration:7s; animation-delay:calc(var(--foil-offset,0) * -7s); filter:saturate(.5); }
@keyframes card-foil-sweep { from { transform:translateX(-60%); } to { transform:translateX(60%); } }
@media(prefers-reduced-motion:reduce) { .card-sheen::after { animation:none; transform:translateX(0); opacity:.8; } }
