/* ============================================================
   card-v23.css — la carte produit, une seule fois.

   Elle vivait en deux exemplaires : le dessin v23 enfermé dans
   la feuille de style de l'accueil, et un dessin de la v15
   (grande photo, puces « boutiques · âge », bouton corail plein,
   case Comparer, bouton d'alerte) servi par app.js sur les six
   pages de rayon. Deux siècles de design d'écart entre une page
   et celle qui la précède.

   Les classes gardent leurs noms v7-* : l'accueil les utilise
   déjà, et les renommer aurait touché 400 lignes pour rien.
   ============================================================ */
.v7-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--b,#E8E1DD);border-radius:var(--rr,16px);overflow:hidden;text-decoration:none;transition:border-color .18s,transform .18s,box-shadow .18s}
.v7-card:hover{border-color:var(--b2,#DDD0C8);transform:translateY(-2px);box-shadow:0 12px 26px rgba(28,28,28,.06)}
.v7-media{position:relative;aspect-ratio:4/3;background:var(--bg2,#FAF7F5)}
.v7-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1}
.v7-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;background-image:repeating-linear-gradient(135deg,transparent 0 10px,rgba(0,0,0,.02) 10px 11px)}
.v7-ph em{font-style:normal;display:inline-flex;color:var(--b2,#DDD0C8)}
.v7-ph span{font-family:var(--font-mono,ui-monospace,Menlo,monospace);font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--soft,#7D726D)}
.v7-tag{position:absolute;z-index:2;top:10px;left:10px;padding:4px 10px;background:#fff;border:1px solid var(--b,#E8E1DD);color:var(--ink2,#3A3A3A);border-radius:var(--r-pill,999px);font-family:var(--font-mono,ui-monospace,Menlo,monospace);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase}
.v7-cbody{padding:15px 16px 16px;display:flex;flex-direction:column;flex:1}
.v7-cbrand{font-family:var(--font-mono,ui-monospace,Menlo,monospace);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--soft,#7D726D);margin-bottom:5px}
.v7-cname{font-family:var(--font-display,Georgia,serif);font-size:16px;font-weight:500;color:var(--ink,#1C1C1C);line-height:1.28;margin:0 0 12px}
.v7-cprice{display:flex;align-items:baseline;gap:8px;margin-top:auto}
.v7-cprice b{font-family:var(--font-display,Georgia,serif);font-size:21px;font-weight:600;color:var(--coral,#E07B65);line-height:1;font-variant-numeric:tabular-nums}
.v7-cprice s{font-size:12.5px;color:var(--soft,#7D726D)}
.v7-cmeta{font-size:12.5px;color:var(--mid,#6B615C);margin-top:8px;line-height:1.45}
.v7-cmeta b{color:var(--ink2,#3A3A3A);font-weight:600}
.v7-cgo{margin-top:12px;padding-top:11px;border-top:1px solid var(--bg2,#FAF7F5);font-size:13px;font-weight:700;color:var(--ink,#1C1C1C)}
.v7-card:hover .v7-cgo{color:var(--coral,#E07B65)}

/* Favori : la seule commande conservée du dessin précédent. La retirer
   sans la remplacer aurait été une perte de fonction déguisée en refonte.
   44px de cible tactile, dont 34 visibles — le reste est du débord. */
.v7-fav{position:absolute;z-index:3;top:4px;right:4px;width:44px;height:44px;border:0;background:none;padding:0;display:grid;place-items:center;cursor:pointer;color:var(--mid,#6B615C)}
.v7-fav::before{content:"";position:absolute;width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.92);border:1px solid var(--b,#E8E1DD);transition:.15s}
.v7-fav svg{position:relative;z-index:1}
.v7-fav:hover{color:var(--coral-d,#C05848)}
.v7-fav:hover::before{border-color:var(--coral-l,#ECA090)}
.v7-fav.active{color:var(--coral-d,#C05848)}

/* La grille du filtre partagé adopte la métrique de l'accueil : mêmes
   colonnes, même gouttière — sinon la même carte paraît deux tailles. */
.pf-grid{margin-top:18px;display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:14px}
@media(max-width:520px){.pf-grid{grid-template-columns:1fr 1fr;gap:10px}}
