/* ============================================================
   CARAT V2 — COMPOSANT DE FICHE PRODUIT (13/11/2026)
   Un seul gabarit pour les quatre Signatures. La couleur vient de
   [data-scent] (--sc-accent, --sc-tint…, product-scent.css) ; le contenu
   et les photographies viennent de la page. Script : src/js/v2-produit.js.

   Ordre : désir photographique → identification → achat → compréhension
   olfactive → projection chez soi → réassurance → découverte.
   Remplace v2-fiche.css une fois la fiche pilote validée.
   ============================================================ */
.v2p {
  --v2-encre: #211B15; --v2-encre-2: rgba(33, 27, 21, .7); --v2-filet: rgba(33, 27, 21, .13);
  --v2-papier: #F8F4EC; --v2-ease: cubic-bezier(.22, .61, .36, 1);
  --v2-accent-texte: color-mix(in srgb, var(--sc-accent-dk) 62%, var(--sc-ink));
  /* Bouton d'achat : la teinte de la Signature, assombrie pour un texte blanc lisible (≥ 4,5:1). */
  --v2p-cta-1: color-mix(in srgb, var(--sc-accent-dk) 76%, var(--sc-ink));
  --v2p-cta-2: color-mix(in srgb, var(--sc-accent-dk) 54%, var(--sc-ink));
  /* 60 px = hauteur de la barre de navigation fixe : la photographie commence juste dessous. */
  display: block; padding-top: 60px; background: var(--v2-papier); color: var(--v2-encre);
}
.v2p *, .v2p *::before, .v2p *::after { box-sizing: border-box; }
.v2p .nw { white-space: nowrap; }
/* :where() garde ces remises à zéro sans poids : chaque bloc règle ensuite ses propres marges. */
.v2p :where(h1, h2, h3, p, ul, dl, dd, figure) { margin: 0; padding: 0; }
.v2p :where(ul) { list-style: none; }
.v2p :where(button) { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }

/* Titre de section entre deux filets. */
.v2p-filets { display: flex; align-items: center; gap: 16px; color: var(--v2-accent-texte); font: 600 11.5px/1.2 var(--f-sans); letter-spacing: .24em; text-transform: uppercase; text-align: center; }
.v2p-filets::before, .v2p-filets::after { content: ''; flex: 1; height: 1px; background: var(--sc-line); }
.v2p-etiquette { color: var(--v2-encre-2); font: 600 11px/1 var(--f-sans); letter-spacing: .2em; text-transform: uppercase; }

/* Nuage de Poudre : thème tiré du rose de l'étiquette. Défini ici tant que la
   Signature n'est pas au catalogue (les trois autres sont dans product-scent.css). */
[data-scent="nuage-poudre"] {
  --sc-accent: #B57B84; --sc-accent-dk: #8E5760; --sc-accent-lt: #E6C4C8;
  --sc-tint: #F8EFEE; --sc-tint-2: #F0E1E0; --sc-ink: #2E2223; --sc-ink-soft: #70585A;
  --sc-line: rgba(181, 123, 132, .26);
  --sc-btn: linear-gradient(135deg, #C9959C 0%, #A66B74 100%); --sc-btn-shadow: rgba(166, 107, 116, .4);
}

/* ── 1 · Désir : galerie au pouce, vignettes explicites ─────────── */
.v2p-haut { position: relative; }
.v2p-galerie { position: relative; }
.v2p-galerie__rail { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
.v2p-galerie__rail::-webkit-scrollbar { display: none; }
.v2p-galerie__rail:focus-visible { outline: 2px solid var(--sc-accent-dk); outline-offset: -2px; }
.v2p-vue { flex: 0 0 100%; aspect-ratio: 39 / 43; scroll-snap-align: start; background: var(--sc-tint-2); }
.v2p-vue__zoom { display: block; width: 100%; height: 100%; cursor: zoom-in; }
.v2p-vue__zoom:focus-visible { outline: 2px solid var(--sc-accent-dk); outline-offset: -4px; }
.v2p-vue img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: var(--cadre, 50% 50%); }
.v2p-vue--packshot img { object-fit: contain; }
/* Voile ivoire sous le titre posé sur la première photographie (mobile). */
.v2p-vue--titre { position: relative; }
.v2p-vue--titre::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(100deg, rgba(250, 247, 242, .82) 0%, rgba(250, 247, 242, .5) 30%, rgba(250, 247, 242, 0) 56%); }
/* Nectar Doré (14/11) : la promesse, plus longue, descend sur les fruits de la photographie ; voile renforcé
   pour garder ≥ 4,5:1 sous la dernière ligne (mesuré à 375, 390 et 430 px). */
[data-scent="nectar-dore"] .v2p-vue--titre::after { background: linear-gradient(100deg, rgba(250, 247, 242, .9) 0%, rgba(250, 247, 242, .72) 34%, rgba(250, 247, 242, 0) 62%); }
[data-surimpression="sombre"] .v2p-vue--titre::after { background: linear-gradient(100deg, rgba(20, 14, 10, .62) 0%, rgba(20, 14, 10, .32) 32%, rgba(20, 14, 10, 0) 58%); }

.v2p-vignettes { position: relative; z-index: 2; display: flex; gap: 8px; margin-top: -30px; padding: 0 16px; }
.v2p-vignettes button { position: relative; flex: 1 1 0; min-width: 0; aspect-ratio: 7 / 6; overflow: hidden; border-radius: 9px; background: var(--sc-tint-2); box-shadow: 0 0 0 2px #fff, 0 8px 18px -10px rgba(33, 27, 21, .55); transition: box-shadow .3s var(--v2-ease), transform .3s var(--v2-ease); }
.v2p-vignettes img { display: block; width: 100%; height: 100%; object-fit: cover; }
.v2p-vignettes button[aria-current] { box-shadow: 0 0 0 2px var(--sc-accent-dk), 0 8px 18px -10px rgba(33, 27, 21, .55); }
.v2p-vignettes button:focus-visible { outline: 2px solid var(--v2-encre); outline-offset: 3px; }
.v2p-vignettes button:active { transform: scale(.96); }
/* Galerie à trois vues (13/11 : pilote, puis les quatre fiches) : vignettes à la même taille qu'à cinq, alignées à gauche.
   Gardée ciblée sur exactement trois vignettes : sans elle, trois vignettes s'étireraient au tiers de la largeur. */
@media (max-width: 899px) {
  .v2p-vignettes button:first-child:nth-last-child(3), .v2p-vignettes button:first-child:nth-last-child(3) ~ button { flex: 0 0 calc((100% - 32px) / 5); }
}

/* ── 2 · Identification ────────────────────────────────────────── */
/* Sur mobile, le nom se lit sur la photographie : le prix et le bouton remontent dans le premier écran. */
.v2p-tete { position: absolute; z-index: 1; top: 22px; left: 20px; width: min(38%, 150px); pointer-events: none; transition: opacity .35s var(--v2-ease); }
.v2p-haut.est-ailleurs .v2p-tete { opacity: 0; }
.v2p-fil { display: none; }
/* Pastille posée sur la photographie : fond ivoire translucide pour garder ≥ 4,5:1 quelle que soit l'image (12/11). */
.v2p-famille { display: inline-block; padding: 7px 11px 6px; border-radius: 99px; background: rgba(250, 247, 242, .78); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--sc-accent-dk) 55%, transparent); color: var(--v2-accent-texte); font: 600 11px/1 var(--f-sans); letter-spacing: .14em; text-transform: uppercase; white-space: nowrap; }
.v2p-tete h1 { margin-top: 14px; font: 500 clamp(36px, 10.4vw, 44px)/.98 var(--f-serif); letter-spacing: -.01em; }
.v2p-promesse { margin-top: 12px; font: italic 500 17px/1.28 var(--f-italic); }
.v2p-promesse::after { content: ''; display: block; width: 34px; height: 1px; margin-top: 14px; background: var(--sc-accent-dk); }
[data-surimpression="sombre"] .v2p-tete { color: #FBF6EE; }
[data-surimpression="sombre"] .v2p-famille { background: rgba(20, 14, 10, .5); color: #FBF6EE; box-shadow: inset 0 0 0 1px rgba(251, 246, 238, .7); }
[data-surimpression="sombre"] .v2p-promesse::after { background: #E2C48A; }

/* ── 3 · Achat ─────────────────────────────────────────────────── */
.v2p-achat { padding: 18px 20px 26px; }
.v2p-prix { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0 14px; color: var(--v2-encre-2); font: 400 14.5px/1.2 var(--f-sans); }
.v2p-prix b { color: var(--v2-encre); font: 500 31px/1 var(--f-serif); letter-spacing: -.01em; }
.v2p-prix span { position: relative; }
.v2p-prix b + span { padding-left: 15px; }
.v2p-prix b + span::before { content: ''; position: absolute; left: 0; top: -4px; bottom: -4px; width: 1px; background: var(--v2-filet); }
.v2p-prix span + span::before { content: '·'; margin-right: 14px; }
.v2p .v2p-actions { display: block; margin: 16px 0 0; padding: 0; }
.v2p-cta {
  display: flex; align-items: center; justify-content: center; gap: 12px; width: 100%; height: 56px; border-radius: 99px;
  background: linear-gradient(135deg, var(--v2p-cta-1), var(--v2p-cta-2)); color: #fff; text-decoration: none;
  box-shadow: 0 14px 26px -16px var(--sc-btn-shadow);
  font: 600 12.5px/1 var(--f-sans); letter-spacing: .2em; text-transform: uppercase;
  transition: transform .25s var(--v2-ease), filter .25s var(--v2-ease);
}
.v2p-cta svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.v2p-cta:active { transform: scale(.985); }
.v2p-cta:focus-visible { outline: 2px solid var(--v2-encre); outline-offset: 3px; }
@media (hover: hover) { .v2p-cta:hover { filter: brightness(1.08); } }
.v2p-cta[disabled] { background: none; box-shadow: inset 0 0 0 1px rgba(33, 27, 21, .24); color: #5A4A40; cursor: default; }
.v2p .vente-note { margin: 0 0 8px; }
/* Trois faits vérifiés, sans pictogramme. */
.v2p-reperes { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 16px; }
.v2p-reperes li { padding: 2px 8px; color: var(--v2-encre-2); font: 400 12px/1.4 var(--f-sans); text-align: center; }
.v2p-reperes li + li { border-left: 1px solid var(--v2-filet); }
/* Lien de 44 px de haut au toucher ; la marge négative garde la hauteur de la rangée. */
.v2p-reperes a { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; margin: -6px 0; color: inherit; text-decoration: underline; text-decoration-color: rgba(33, 27, 21, .3); text-underline-offset: 3px; }
.v2p-reperes a:focus-visible { outline: 2px solid var(--sc-accent-dk); outline-offset: 2px; }

/* ── 4 · Compréhension olfactive ───────────────────────────────── */
.v2p-olfactif { padding: 38px 20px 36px; background: var(--sc-tint); }
.v2p-olfactif__bloc { margin-top: 26px; }
/* Signature sans accords photographiés (notes encore à confirmer) : une seule colonne. */
.v2p-olfactif__corps--seul { display: block !important; max-width: 560px; }
.v2p-notes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
.v2p-notes li { text-align: center; }
.v2p-notes img { display: block; width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 10px; background: var(--sc-tint-2); }
.v2p-notes b { display: block; margin-top: 10px; font: 500 16.5px/1.15 var(--f-serif); }
.v2p-notes i { display: block; margin-top: 4px; color: var(--v2-encre-2); font: italic 400 13.5px/1.25 var(--f-italic); }
.v2p-impression { margin-top: 12px; max-width: 30ch; font: italic 500 21px/1.3 var(--f-italic); }
.v2p-caractere { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.v2p-caractere li { padding: 8px 14px 7px; border-radius: 99px; box-shadow: inset 0 0 0 1px var(--sc-line); font: 400 13px/1 var(--f-sans); letter-spacing: .04em; }

/* ── 5 · Expérience : une photographie, un titre, un texte court ── */
/* 14/11 : textes de deux ou trois paragraphes. Sur mobile, seul le titre se pose sur la photographie
   (dans son haut calme, sous un voile qui suit la hauteur du titre) ; les paragraphes passent dessous,
   sur le fond de la section : la personne photographiée n'est jamais recouverte. */
.v2p-experience { position: relative; overflow: hidden; background: var(--sc-tint-2); }
.v2p-experience img { display: block; width: 100%; aspect-ratio: 39 / 40; object-fit: cover; object-position: var(--cadre, 50% 100%); }
.v2p-experience__titre { position: absolute; z-index: 1; inset: 0 0 auto; padding: 28px 22px var(--voile-fin, 52px); background: linear-gradient(to bottom, var(--sc-tint) 0%, color-mix(in srgb, var(--sc-tint) 82%, transparent) 52%, transparent 100%); }
.v2p-experience h2 { margin-top: 12px; max-width: 15em; font: 500 clamp(27px, 7.6vw, 34px)/1.1 var(--f-serif); }
.v2p-experience__texte { padding: 24px 22px 34px; }
.v2p-experience p { max-width: 36ch; color: var(--v2-encre); font: 300 15.5px/1.6 var(--f-sans); }
.v2p-experience p + p { margin-top: 12px; }

/* ── 6 · Projection : trois situations ─────────────────────────── */
/* 14/11 : un intitulé (Cormorant) et une phrase (Jost léger) par situation, entre filets fins. */
.v2p-pieces { padding: 38px 20px 6px; }
.v2p-pieces img { display: block; width: 100%; margin-top: 22px; aspect-ratio: 3 / 2; object-fit: cover; object-position: var(--cadre, 50% 50%); border-radius: 12px; }
.v2p-pieces ul { margin-top: 8px; }
.v2p-pieces li { padding: 16px 0 15px; }
.v2p-pieces li + li { border-top: 1px solid var(--v2-filet); }
.v2p-pieces h3 { font: 500 20px/1.2 var(--f-serif); }
.v2p-pieces li p { margin-top: 5px; max-width: 44ch; color: var(--v2-encre-2); font: 300 14.5px/1.5 var(--f-sans); }

/* ── 7 · Réassurance : les questions, en accordéons natifs ─────── */
.v2p-questions { padding: 38px 20px 10px; }
.v2p-questions h2, .v2p-suite h2 { margin-bottom: 14px; font: 500 clamp(25px, 6.8vw, 31px)/1.15 var(--f-serif); }
.v2p-questions details { border-top: 1px solid var(--v2-filet); }
.v2p-questions details:last-of-type { border-bottom: 1px solid var(--v2-filet); }
.v2p-questions summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 56px; cursor: pointer; list-style: none; font: 400 15.5px/1.3 var(--f-sans); }
.v2p-questions summary::-webkit-details-marker { display: none; }
.v2p-questions summary::after { content: '+'; flex: none; display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--sc-line); color: var(--v2-accent-texte); font: 300 17px/1 var(--f-sans); transition: transform .3s var(--v2-ease); }
.v2p-questions details[open] summary::after { transform: rotate(45deg); }
.v2p-questions summary:focus-visible { outline: 2px solid var(--sc-accent-dk); outline-offset: 2px; }
.v2p-questions details p { margin: 0 0 18px; max-width: 60ch; color: var(--v2-encre-2); font: 300 14.5px/1.65 var(--f-sans); }
.v2p-questions a { padding: 12px 0; color: var(--v2-encre); text-underline-offset: 4px; }

/* ── 8 · Découverte : les autres Signatures, puis L'Atelier et le Coffret ── */
.v2p-suite { padding: 34px 20px 50px; }
.v2p-suite__grille { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.v2p-mini { display: block; color: var(--v2-encre); text-decoration: none; }
/* Cadre 2:3 = format du packshot : le flacon se voit en entier, de la gâchette à la base (12/11). */
.v2p-mini span { display: block; overflow: hidden; aspect-ratio: 2 / 3; border-radius: 10px; background: var(--teinte); }
.v2p-mini img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }
.v2p-mini b { display: block; margin-top: 9px; font: 500 15px/1.2 var(--f-serif); }
.v2p-mini i { display: block; margin-top: 3px; color: var(--v2-encre-2); font: 400 11px/1.4 var(--f-sans); font-style: normal; letter-spacing: .12em; text-transform: uppercase; }
.v2p-mini:focus-visible { outline: 2px solid var(--sc-accent-dk); outline-offset: 3px; }
.v2p-suite__liens { margin-top: 26px; border-top: 1px solid var(--v2-filet); }
.v2p-suite__liens a { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 64px; padding: 10px 0; border-bottom: 1px solid var(--v2-filet); color: var(--v2-encre); text-decoration: none; }
.v2p-suite__liens b { display: block; font: 500 17px/1.2 var(--f-serif); }
.v2p-suite__liens small { display: block; margin-top: 3px; color: var(--v2-encre-2); font: 300 13px/1.35 var(--f-sans); }
.v2p-suite__liens a > span:last-child { flex: none; font: 400 15px/1 var(--f-serif); white-space: nowrap; }
.v2p-suite__liens a:focus-visible { outline: 2px solid var(--sc-accent-dk); outline-offset: 2px; }

/* ── Agrandissement d'une photographie ─────────────────────────── */
.v2p-loupe { width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; background: #14100C; color: #F7F2EA; }
.v2p-loupe::backdrop { background: #14100C; }
.v2p-loupe__cadre { width: 100%; height: 100%; overflow: auto; overscroll-behavior: contain; display: grid; place-items: center; }
.v2p-loupe__cadre img { display: block; width: 100%; height: auto; max-height: 100%; object-fit: contain; cursor: zoom-in; touch-action: pan-x pan-y pinch-zoom; }
.v2p-loupe.est-zoome .v2p-loupe__cadre { display: block; }
.v2p-loupe.est-zoome .v2p-loupe__cadre img { width: 220%; max-width: none; max-height: none; cursor: zoom-out; }
.v2p-loupe__fermer, .v2p-loupe__nav { position: absolute; z-index: 1; display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; background: rgba(20, 16, 12, .62); color: #F7F2EA; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.v2p-loupe__fermer { top: calc(12px + env(safe-area-inset-top, 0px)); right: 12px; }
.v2p-loupe__nav { top: 50%; margin-top: -23px; }
.v2p-loupe__nav--prec { left: 10px; } .v2p-loupe__nav--suiv { right: 10px; }
.v2p-loupe svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; }
.v2p-loupe button:focus-visible { outline: 2px solid #F7F2EA; outline-offset: 2px; }
.v2p-loupe__compte { position: absolute; left: 0; right: 0; bottom: calc(14px + env(safe-area-inset-bottom, 0px)); text-align: center; font: 400 12px/1 var(--f-sans); letter-spacing: .14em; pointer-events: none; }

/* ── Barre d'achat collante : #sc-buybar existant, en plus compact ── */
.sc-buybar.v2p-barre { gap: 12px; padding: 7px 14px calc(7px + env(safe-area-inset-bottom, 0px)) 16px; }
.v2p-barre .sc-buybar__name { font-size: 15.5px; }
.v2p-barre .sc-buybar__price { margin-top: 2px; font-size: 12px; }
.v2p-barre .sc-buybar__btn { min-height: 44px; padding: 0 22px; border-radius: 99px; font-size: 11.5px; letter-spacing: .16em; }
.v2p-barre .sc-buybar__btn.est-ajoute { background: none; box-shadow: inset 0 0 0 1px rgba(201, 162, 77, .7); color: #E9D29A; }

/* ── Grand écran : galerie à gauche, achat à droite ────────────── */
@media (min-width: 900px) {
  .v2p { padding-top: 132px; }
  .v2p-haut { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 68px; align-items: center; max-width: 1180px; margin: 0 auto; padding: 0 40px 70px; }
  .v2p-galerie { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 16px; align-items: start; }
  .v2p-galerie__rail { grid-column: 2; grid-row: 1; border-radius: 4px; }
  .v2p-vue { aspect-ratio: 4 / 5; }
  .v2p-vue--titre::after { display: none; }
  .v2p-vignettes { grid-column: 1; grid-row: 1; flex-direction: column; gap: 12px; margin: 0; padding: 0; }
  .v2p-vignettes button { flex: none; width: 76px; }
  .v2p-achat { padding: 0; max-width: 470px; }
  .v2p-tete, [data-surimpression="sombre"] .v2p-tete { position: static; width: auto; color: var(--v2-encre); pointer-events: auto; opacity: 1 !important; }
  .v2p-fil { display: flex; align-items: center; gap: 8px; width: max-content; min-height: 32px; margin-bottom: 14px; color: var(--v2-encre-2); font: 400 12.5px/1 var(--f-sans); letter-spacing: .04em; text-decoration: none; }
  .v2p-fil:focus-visible { outline: 2px solid var(--sc-accent-dk); outline-offset: 3px; }
  .v2p-famille, [data-surimpression="sombre"] .v2p-famille { background: none; -webkit-backdrop-filter: none; backdrop-filter: none; color: var(--v2-accent-texte); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--sc-accent-dk) 55%, transparent); }
  .v2p-tete h1 { margin-top: 18px; font-size: 60px; }
  .v2p-promesse { margin-top: 16px; font-size: 23px; }
  [data-surimpression="sombre"] .v2p-promesse::after { background: var(--sc-accent-dk); }
  .v2p-prix { margin-top: 26px; }
  .v2p-prix b { font-size: 36px; }
  .v2p .v2p-actions { margin-top: 22px; }
  .v2p-reperes { margin-top: 20px; }
  .v2p-reperes li { font-size: 13px; }

  .v2p-olfactif { padding: 76px max(40px, calc((100vw - 1020px) / 2)); }
  .v2p-olfactif__corps { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 72px; align-items: center; margin-top: 16px; }
  .v2p-notes { gap: 18px; }
  .v2p-notes b { font-size: 21px; } .v2p-notes i { font-size: 16px; }
  .v2p-impression { font-size: 28px; }

  .v2p-experience { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; max-width: 1100px; margin: 76px auto 0; border-radius: 14px; }
  /* Photographies composées « haut calme, sujet en bas » : le cadre 5:4 retire le haut, jamais la personne. */
  .v2p-experience img { aspect-ratio: 5 / 4; object-position: var(--cadre-l, 50% 100%); }
  .v2p-experience figcaption { padding: 0 52px; }
  .v2p-experience__titre { position: static; padding: 0; background: none; }
  .v2p-experience__texte { padding: 0; margin-top: 18px; }
  .v2p-experience h2 { font-size: 40px; } .v2p-experience p { max-width: 42ch; font-size: 16.5px; }

  .v2p-pieces { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 0 64px; align-items: center; max-width: 1100px; margin: 0 auto; padding: 76px 40px 0; }
  .v2p-pieces .v2p-filets { grid-column: 1 / -1; margin-bottom: 30px; }
  .v2p-pieces img { grid-column: 2; grid-row: 2; margin: 0; aspect-ratio: 5 / 4; object-position: var(--cadre-l, 50% 50%); }
  .v2p-pieces ul { grid-column: 1; grid-row: 2; margin: 0; }
  .v2p-pieces li { padding: 22px 0; }
  .v2p-pieces h3 { font-size: 25px; }
  .v2p-pieces li p { margin-top: 7px; font-size: 15.5px; }

  .v2p-questions, .v2p-suite { max-width: 820px; margin-inline: auto; padding-inline: 40px; }
  .v2p-questions { padding-top: 76px; }
  .v2p-suite { padding-top: 60px; padding-bottom: 90px; }
  .v2p-suite__grille { gap: 22px; }
  .v2p-loupe__cadre img { width: auto; height: 100%; max-width: 100%; }
  .v2p-loupe.est-zoome .v2p-loupe__cadre img { width: auto; height: 190%; }
}
@media (prefers-reduced-motion: reduce) {
  .v2p-cta, .v2p-tete, .v2p-vignettes button, .v2p-questions summary::after { transition: none; }
}
