/* =====================================================================
   GABARIT « PAGE PRODUIT RÉSEAU » — feuille partagée
   ---------------------------------------------------------------------
   Sert TOUTES les pages support × réseau (carte/plaque × Google, Instagram,
   WhatsApp, Facebook, TikTok, personnalisée). Rien de propre à un produit
   ici : ni nom, ni prix, ni image, ni lien — tout cela vit dans le HTML de
   chaque page. Cette feuille ne décrit que la composition.

   À charger APRÈS ../../styles.css (elle en surcharge des composants :
   .kk-faq__item, .kk-btn, .kktop).

   Parti pris de la page : c'est une fiche de vente. Tout ce qui décide de
   l'achat (prix, dégressivité, CTA, réassurances) est DANS le hero, à
   droite du texte, sur le même plan que la photo — donc au premier pli
   sans avoir à scroller. Le reste confirme, dans cet ordre : les 3 angles,
   les 3 étapes, le comparatif carte/plaque, la FAQ. Densité tenue par un
   seul rail (1080) et trois plans : le plan studio (hero), #FFF (les
   preuves), --surface-sunken (les blocs insérés). Aucune couture dégradée :
   des coupes franches et des blocs encartés en radius 28/20.
   ===================================================================== */

/* Plan studio de la page : couleur EXACTE du fond cuit des packshots servis
   (pipette sur les 4 coins des fichiers produits/*.webp). --kk-plan n'existe
   que dans la portée de .kktop ; ici le plan doit courir de la barre promo au
   bas du hero, donc il a son propre token, déclaré sur la page. */
body{--pc-plan:#F1F5FB}

/* ---- 1 · En-tête : la pilule de nav vit dans .kktop (le CSS de la nav y
     est scopé), mais SANS le contrat « hauteur d'un viewport » du hero de
     l'accueil : ici le plan continue simplement dans le hero. ---- */
.pc-top.kktop{
  display:block;min-height:0;height:auto;
  background:var(--pc-plan);   /* même plan que le hero */
}

/* ---- 1b · Panier dans la pilule (.kk-navcart) + entrée « Mon panier » du
     drawer mobile (.kk-mob__cart) : bloc CANON, défini une seule fois dans
     styles.css, chargé par toutes les pages. Rien à redupliquer ici. ---- */

/* ---- 2 · HERO SPLIT ------------------------------------------------
   Grille 2 colonnes : la copie et le bloc d'achat s'empilent à gauche,
   la photo tient toute la colonne droite. La photo est un packshot à
   fond cuit identique au plan : elle affleure le plan, donc aucun cadre,
   aucune ombre CSS, aucun bord. ------------------------------------- */
.pc-hero{background:var(--pc-plan);padding-bottom:clamp(30px,4vw,56px)}

/* Fil d'Ariane discret, posé sur le plan, aligné au rail. */
.pc-crumb{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:2px 0 clamp(14px,1.8vw,22px);font-size:13px;color:var(--text-muted)}
.pc-crumb a{color:var(--text-muted);border-bottom:1px solid transparent}
.pc-crumb a:hover{color:var(--brand);border-bottom-color:currentColor}
.pc-crumb__sep{width:10px;height:10px;flex:none;fill:var(--ku-blue-200)}
.pc-crumb__here{color:var(--text);font-weight:600}

/* ---- 2a · BANDEAU « BIENTÔT DISPONIBLE » ---------------------------
   Retrait temporaire d'un support : la fiche reste en ligne, la vente est
   coupée. Le bandeau se lit juste après le fil d'Ariane, avant le titre.
   Bloc blanc net sur le plan studio, filet bleu à 1 px, radius 16 (un cran
   sous la carte d'achat : c'est une note, pas une carte). Aucune pastille,
   aucune couleur d'alerte — il informe, il ne vend pas.
   POUR ROUVRIR LA VENTE : retirer les <aside class="pc-soon"> des fiches
   concernées et ces règles (voir SUPPORTS_EN_VENTE, commun/panier.js). ---- */
.pc-soon{display:flex;align-items:flex-start;gap:11px;
  margin:0 0 clamp(16px,2vw,24px);padding:13px 16px;
  background:var(--surface);border:1px solid var(--ku-blue-100);border-radius:var(--r-lg)}
.pc-soon__ic{width:19px;height:19px;flex:none;margin-top:1px;color:var(--brand)}
.pc-soon__txt{margin:0;font-size:14px;line-height:1.5;color:var(--text-soft);max-width:62em}
.pc-soon__txt b{color:var(--text);font-weight:700}
.pc-soon__txt a{color:var(--brand);font-weight:700;
  border-bottom:1px solid var(--ku-blue-200);transition:border-color .2s var(--ease)}
.pc-soon__txt a:hover{border-bottom-color:currentColor}

.pc-hero__grid{
  /* Hauteur désirée du packshot : c'est LA mesure de référence du hero. La
     largeur de la colonne photo peut s'en déduire (voir écran court), donc
     un seul chiffre à régler. */
  --pc-shot-h:clamp(340px,58svh,560px);
  display:grid;gap:clamp(20px,2.6vw,40px) clamp(26px,3.6vw,56px);
  grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);
  grid-template-areas:"copy shot" "buy shot";
  grid-template-rows:auto auto;align-items:start;
}
.pc-hero__copy{grid-area:copy;max-width:30em}
.pc-hero__buy{grid-area:buy;max-width:33em}
/* Support retiré de la vente : sans stepper, sans dégressivité et sans
   réassurances, la carte de prix perd la moitié de sa hauteur et la colonne
   de gauche devient bien plus courte que le packshot. La grille distribuait
   alors le vide ENTRE la copie et la carte, qui décrochait du texte. La
   deuxième rangée absorbe désormais tout le reste : la carte reste collée
   sous la copie, le vide passe dessous, contre le bas du packshot. */
@media (min-width:901px){
  .pc-hero__grid--soon{grid-template-rows:auto 1fr}
  .pc-hero__grid--soon .pc-hero__buy{align-self:start}
}

.pc-h1{
  font-weight:700;font-size:clamp(31px,3.9vw,50px);line-height:1.06;
  letter-spacing:-.02em;color:var(--text);margin:0;text-wrap:balance;
}
.pc-lede{margin:14px 0 0;font-size:clamp(16px,1.35vw,18.5px);line-height:1.5;color:var(--text-soft)}
.pc-lede b{color:var(--text);font-weight:700}

/* Preuve courte : les 5 étoiles sont le SEUL or de la page, et elles ne
   parlent que d'avis. */
.pc-proof{display:flex;align-items:center;gap:9px;margin:16px 0 0;
  font-size:13.5px;color:var(--text-muted);line-height:1.4}
.pc-proof .ku-stars{fill:var(--star);flex:none}
.pc-proof b{color:var(--text);font-weight:700}

/* ---- 2b · BLOC ACHAT (le cœur du gabarit) ----
   Carte blanche encartée sur le plan : prix, dégressivité, CTA, et une
   ligne de réassurances. Compact : 4 lignes, aucune décoration. ---- */
.pc-buy{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);
  padding:clamp(16px,1.5vw,20px) clamp(16px,1.6vw,22px) 14px;
  box-shadow:var(--el-8);
}
.pc-buy__price{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.pc-buy__val{font-size:clamp(30px,3vw,38px);font-weight:800;letter-spacing:-.02em;color:var(--text);line-height:1}
.pc-buy__ttc{font-size:14px;font-weight:600;color:var(--text-muted)}
.pc-buy__ship{font-size:13.5px;font-weight:600;color:var(--brand);margin-left:auto}
/* Support retiré de la vente : la même ligne annonce le prix à venir, donc
   en encre de note. Le passage en pleine largeur sous 600 px reste acquis. */
.pc-buy__ship--soon{color:var(--text-muted)}
/* Le CTA du bloc porte le nom complet du produit visé : sur les libellés les
   plus longs il passe sur deux lignes en petit écran (voir la règle à
   440 px), elles doivent rester centrées, et la flèche ne doit pas se
   laisser écraser par le texte. */
.pc-buy__cta a.kk-btn{text-align:center}
.pc-buy__cta a.kk-btn svg{flex:none}

/* Dégressivité : deux paliers, deux repères hexagonaux — la formulation
   exacte du configurateur, rien de plus. */
.pc-degress{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin:12px 0 0;padding:9px 12px;border-radius:var(--r-md);
  background:var(--brand-soft);font-size:13.5px;color:var(--text-soft);line-height:1.35}
.pc-degress__lab{font-weight:700;color:var(--brand)}
.pc-degress__ticks{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.pc-degress__tick{display:inline-flex;align-items:center;gap:7px}
.pc-degress__tick .ku-hex{width:11px;height:11px;fill:var(--brand)}
.pc-degress__tick b{color:var(--text);font-weight:700}

.pc-buy__cta{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 0}
.pc-buy__cta .kk-btn{padding:15px 26px;border-radius:var(--r-pill);font-weight:700}
.pc-buy__cta .kk-btn--cyan{background:var(--brand);color:#fff;flex:1 1 13em;
  box-shadow:0 12px 26px -12px rgba(44,75,255,.5);transition:background .2s var(--ease),transform .2s var(--ease)}
.pc-buy__cta .kk-btn--cyan:hover{background:var(--brand-hover);transform:translateY(-1px)}
.pc-buy__alt{display:inline-flex;align-items:center;justify-content:center;gap:7px;
  width:100%;margin:10px 0 0;padding:13px 18px;
  font-size:14.5px;font-weight:700;color:var(--brand);border-radius:var(--r-pill);
  box-shadow:inset 0 0 0 1.5px var(--ku-blue-200);transition:box-shadow .2s var(--ease),background .2s var(--ease)}
.pc-buy__alt:hover{background:var(--brand-soft);box-shadow:inset 0 0 0 1.5px var(--brand)}

/* ---- 2c · ACHAT DIRECT : quantité + « Ajouter au panier » ----------
   Le panier est le geste par défaut de la page. Le stepper est collé au
   bouton (une seule rangée de 48 px, cibles ≥44 px) et le configurateur
   descend d'un cran, en ligne de texte sous la carte d'achat : il ne sert
   plus qu'à l'option logo. --------------------------------------- */
.pc-qty{display:inline-flex;align-items:center;flex:none;background:var(--surface);
  border-radius:var(--r-pill);box-shadow:inset 0 0 0 1.5px var(--ku-blue-200)}
.pc-qty__btn{width:44px;height:48px;flex:none;display:inline-flex;align-items:center;
  justify-content:center;padding:0;border:0;background:none;color:var(--brand);
  border-radius:var(--r-pill);cursor:pointer;transition:background .2s var(--ease)}
.pc-qty__btn svg{width:16px;height:16px}
.pc-qty__btn:hover{background:var(--brand-soft)}
.pc-qty__btn:focus-visible{outline:2px solid var(--brand);outline-offset:-3px}
/* 16px minimum : en dessous, Safari iOS zoome sur le champ à la mise au point. */
.pc-qty__val{width:44px;height:48px;padding:0;border:0;background:none;text-align:center;
  color:var(--text);font-family:inherit;font-size:16px;font-weight:700;line-height:1;
  -moz-appearance:textfield;appearance:textfield}
.pc-qty__val::-webkit-outer-spin-button,
.pc-qty__val::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.pc-qty__val:focus-visible{outline:2px solid var(--brand);outline-offset:-2px;border-radius:10px}

.pc-add{display:inline-flex;align-items:center;justify-content:center;gap:9px;
  min-height:48px;cursor:pointer;border:0;font-family:inherit}
.pc-add svg{flex:none}
.pc-add .pc-add__ok{display:none}
.pc-add.is-added .pc-add__ic{display:none}
.pc-add.is-added .pc-add__ok{display:inline-block}
.pc-buy__cta .pc-add{font-size:15.5px}

/* Ligne secondaire : sobre, hors de la carte blanche, ton de note. */
.pc-buy__cfg{margin:12px 2px 0;font-size:13.5px;line-height:1.5;color:var(--text-muted)}
.pc-buy__cfg a{color:var(--brand);font-weight:600;border-bottom:1px solid transparent;
  transition:border-color .2s var(--ease)}
.pc-buy__cfg a:hover{border-bottom-color:currentColor}

/* Anneau de focus des CTA pleins : le composant du design system pose un
   liseré BLANC à offset 0 et compte sur son halo bleu en box-shadow — que la
   surcharge d'ombre de ce gabarit effaçait, rendant le focus invisible sur
   carte blanche. Ici : liseré blanc rentré + anneau bleu dessiné. */
.pc-buy__cta .kk-btn--cyan:focus-visible,
.pc-card__cta--solid:focus-visible,
.pc-sticky__cta:focus-visible,
.pc-close .kk-btn--white:focus-visible{
  outline:2px solid #fff;outline-offset:-4px;
  box-shadow:0 0 0 3px var(--brand),0 0 0 6px rgba(44,75,255,.3);
}
.pc-close .kk-btn--white:focus-visible{outline-color:var(--brand);box-shadow:0 0 0 3px #fff}

.pc-assur{display:flex;flex-wrap:wrap;gap:6px 18px;margin:14px 0 0;
  padding-top:12px;border-top:1px solid var(--border)}
.pc-assur li{display:inline-flex;align-items:center;gap:7px;font-size:13px;
  font-weight:600;color:var(--text-soft)}
.pc-assur svg{width:16px;height:16px;color:var(--brand)}

/* Packshot du hero : boîte au ratio du fichier (2/3), image agrandie de
   13 % dans une boîte qui la rogne — les marges mortes du fichier partent,
   le produit gagne en présence, et comme le fond cuit est EXACTEMENT le
   plan de la section, aucun bord n'apparaît.

   La colonne est un conteneur de largeur : la boîte prend la plus grande
   taille 2:3 qui tient À LA FOIS dans la hauteur d'écran allouée et dans
   92 % de la largeur de sa colonne (92 % = la respiration qui l'empêche de
   coller au rail). Sans cette seconde borne, sur écran court la photo
   rétrécissait par la hauteur et laissait ~200 px de plan vide dans la
   colonne. La première déclaration de height est le repli des navigateurs
   sans unités cq* (Safari < 16). */
.pc-hero__shotcol{grid-area:shot;align-self:center;container-type:inline-size}
.pc-hero__shot{position:relative;overflow:hidden;margin-inline:auto;
  height:var(--pc-shot-h);
  height:min(var(--pc-shot-h),138cqw);   /* 138cqw = 1,5 × 92cqw */
  aspect-ratio:2/3;width:auto}
/* max-width/max-height:none est OBLIGATOIRE sur tous les cadres à inset
   négatif : le reset global styles.css `img{max-width:100%}` plafonnerait
   width:126% à 100 % alors que left:-13% resterait appliqué — la photo
   partirait de 13 % vers la gauche avec une bande morte à droite. Le
   débordement doit être symétrique sur les 4 côtés. */
.pc-hero__shot img{position:absolute;inset:-13%;width:126%;height:126%;
  max-width:none;max-height:none;object-fit:contain}
/* ⚠️ Le zoom ci-dessus est calibré sur les fichiers CARTE, qui portent 15,9 %
   de marge morte à gauche. Les fichiers PLAQUE n'en ont que 1 % (l'ombre
   touche le bord) : le même zoom mangeait 9 % de la largeur DANS le produit —
   le bord gauche de la plaque était tranché net. Une plaque remplit déjà
   86 % de la largeur de son fichier : elle s'affiche donc sans zoom. */
.pc-hero__shot img[src*="/plaque-"]{inset:0;width:100%;height:100%}

/* ---- 3 · BANDE 3 ANGLES -------------------------------------------
   Plan blanc, cadres DESSINÉS assumés (filet + radius 20 + fond studio
   à l'intérieur) : le packshot portrait et la photo de comptoir
   partagent la même boîte, donc le même statut de « vue ». --------- */
.pc-gal{background:var(--surface);padding:clamp(34px,4.4vw,60px) 0 clamp(30px,4vw,54px)}
.pc-secthead{display:flex;align-items:flex-end;justify-content:space-between;
  gap:16px 28px;flex-wrap:wrap;margin:0 0 clamp(18px,2vw,26px)}
.pc-secthead h2{font-weight:700;font-size:clamp(24px,2.5vw,32px);line-height:1.15;
  letter-spacing:-.01em;color:var(--text);margin:0}
.pc-secthead h2 .hl{color:var(--brand)}
.pc-secthead p{font-size:14.5px;color:var(--text-muted);margin:0;max-width:30em}

.pc-gal__row{display:grid;gap:clamp(12px,1.4vw,18px);
  grid-template-columns:1fr 1fr 1.42fr}
.pc-shot{margin:0}
.pc-shot__frame{
  position:relative;overflow:hidden;border:1px solid var(--border);
  border-radius:var(--r-xl);background:var(--pc-plan);height:clamp(210px,23vw,320px);
}
/* Même rognage des marges mortes que dans le hero : dans un cadre de 300 px,
   un packshot 800×1200 « contain » ne montrerait que 110 px de produit. */
.pc-shot__frame img{position:absolute;inset:-10%;width:120%;height:120%;
  max-width:none;max-height:none;object-fit:contain}
/* Voir .pc-hero__shot img : les fichiers plaque n'ont pas de marge morte
   latérale à rogner. (La vue en situation est exclue : elle a son propre
   cadrage plein en cover, juste en dessous.) */
.pc-shot__frame:not(.pc-shot__frame--scene) img[src*="/plaque-"]{inset:0;width:100%;height:100%}
/* Vue en situation : photo de scène, donc cadrage plein (cover) dans le
   même cadre dessiné. */
.pc-shot__frame--scene img{inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 52%}
.pc-shot figcaption{display:flex;align-items:center;gap:8px;margin:10px 2px 0;
  font-size:13px;font-weight:600;color:var(--text-soft)}
.pc-shot figcaption .ku-hex{width:11px;height:11px;fill:var(--ku-blue-300)}

/* ---- 4 · ÉTAPES · bloc inséré (radius 28) sur le plan blanc -------- */
.pc-steps{background:var(--surface);padding:0 0 clamp(34px,4.4vw,60px)}
.pc-steps__panel{background:var(--surface-sunken);border-radius:var(--r-2xl);
  padding:clamp(24px,3vw,40px) clamp(20px,2.6vw,36px)}
.pc-steps__hd{display:flex;align-items:center;justify-content:space-between;
  gap:14px 26px;flex-wrap:wrap;margin:0 0 clamp(18px,2.2vw,26px)}
.pc-steps__hd h2{font-weight:700;font-size:clamp(23px,2.4vw,30px);line-height:1.15;
  color:var(--text);margin:0}
.pc-steps__hd h2 .hl{color:var(--brand)}
.pc-badge{display:inline-flex;align-items:center;gap:8px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--r-pill);padding:8px 15px;
  font-size:13px;font-weight:600;color:var(--text-soft)}
.pc-badge svg{width:15px;height:15px;color:var(--brand)}

.pc-steps__grid{display:grid;gap:clamp(12px,1.4vw,18px);grid-template-columns:repeat(3,1fr)}
.pc-step{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);
  padding:16px 18px 14px;display:flex;flex-direction:column;gap:10px}
.pc-step__art{border-radius:var(--r-md);background:var(--ku-blue-25);
  height:96px;display:grid;place-items:center}
.pc-step__art svg{width:132px;height:76px}
.pc-step h3{font-size:16.5px;font-weight:700;color:var(--text);margin:0;line-height:1.25}
.pc-step p{font-size:14px;line-height:1.45;color:var(--text-soft);margin:0}

/* ---- 5 · PASSERELLE · comparatif carte / plaque côte à côte -------- */
.pc-bridge{background:var(--surface);scroll-margin-top:18px;padding:0 0 clamp(34px,4.4vw,60px)}
.pc-cmp{display:grid;gap:clamp(14px,1.6vw,20px);grid-template-columns:1fr 1fr;align-items:stretch}
.pc-card{position:relative;display:flex;flex-direction:column;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-2xl);
  padding:clamp(16px,1.7vw,22px)}
/* Le support courant est en vedette : filet bleu à 2 px. Pas d'ombre portée :
   la hiérarchie est dessinée, pas soufflée. */
.pc-card--current{border:2px solid var(--brand)}
.pc-card__tag{position:absolute;top:-11px;left:clamp(16px,1.7vw,22px);
  display:inline-flex;align-items:center;gap:7px;background:var(--brand);color:#fff;
  border-radius:var(--r-pill);padding:5px 13px;font-size:12px;font-weight:700;letter-spacing:.02em}
.pc-card__tag .ku-hex{width:11px;height:11px;fill:#fff}
.pc-card__row{display:flex;align-items:center;gap:clamp(12px,1.4vw,18px)}
.pc-card__shot{position:relative;overflow:hidden;flex:none;
  width:clamp(92px,9.5vw,120px);aspect-ratio:2/3;
  border:1px solid var(--border);border-radius:var(--r-md);background:var(--pc-plan)}
.pc-card__shot img{position:absolute;inset:-14%;width:128%;height:128%;
  max-width:none;max-height:none;object-fit:contain}
/* Voir .pc-hero__shot img : zoom calibré sur les cartes, jamais sur les
   plaques (marge gauche 1 % en trois-quarts, 6 % de face). Sans cette règle
   la vignette plaque du comparatif était coupée des deux côtés. */
.pc-card__shot img[src*="/plaque-"]{inset:0;width:100%;height:100%}
.pc-card__hd{min-width:0}
.pc-card__kind{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--brand);margin:0 0 5px}
.pc-card__hd h3{font-size:clamp(17px,1.6vw,20px);font-weight:700;color:var(--text);margin:0;line-height:1.2}
.pc-card__price{display:flex;align-items:baseline;gap:2px 7px;flex-wrap:wrap;margin:9px 0 0}
.pc-card__price b{font-size:23px;font-weight:800;color:var(--text);line-height:1}
.pc-card__price span{font-size:12.5px;font-weight:600;color:var(--text-muted)}
.pc-card__list{margin:14px 0 0;display:grid;gap:8px}
.pc-card__list li{display:flex;gap:9px;font-size:13.5px;line-height:1.4;color:var(--text-soft)}
.pc-card__list .ku-hex{width:12px;height:12px;margin-top:3px;flex:none;fill:var(--brand)}
.pc-card__foot{margin-top:auto;padding-top:16px}
/* Support retiré de la vente : son pied porte un ÉTAT, à la place du bouton
   d'ajout. L'action passe à la carte voisine, dont le CTA devient plein. */
.pc-card__soon{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:100%;margin:0;padding:13px 20px;border-radius:var(--r-pill);
  font-size:14.5px;font-weight:700;color:var(--brand);background:var(--brand-soft)}
.pc-card__soon svg{width:17px;height:17px;flex:none}
.pc-card__cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;
  padding:13px 20px;border-radius:var(--r-pill);font-size:14.5px;font-weight:700;
  transition:background .2s var(--ease),box-shadow .2s var(--ease),transform .2s var(--ease)}
.pc-card__cta--solid{background:var(--brand);color:#fff}
.pc-card__cta--solid:hover{background:var(--brand-hover);transform:translateY(-1px)}
.pc-card__cta--line{color:var(--brand);box-shadow:inset 0 0 0 1.5px var(--ku-blue-200)}
.pc-card__cta--line:hover{background:var(--brand-soft);box-shadow:inset 0 0 0 1.5px var(--brand)}

/* Chips réseaux : le même support, un autre réseau. */
.pc-nets{margin:clamp(22px,2.6vw,32px) 0 0}
.pc-nets__lab{font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--text-muted);margin:0 0 12px}
.pc-chips{display:flex;flex-wrap:wrap;gap:10px}
.pc-chip{display:inline-flex;align-items:center;gap:9px;min-height:44px;
  padding:10px 16px;border-radius:var(--r-pill);background:var(--surface-sunken);
  border:1px solid var(--border);font-size:14px;font-weight:600;color:var(--text);
  transition:border-color .2s var(--ease),background .2s var(--ease),color .2s var(--ease)}
.pc-chip:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}
.pc-chip__ic{width:17px;height:17px;fill:var(--brand)}
.pc-chip__ic--line{fill:none;stroke:var(--brand);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pc-note{margin:12px 0 0;font-size:12.5px;color:var(--text-muted);line-height:1.5}

/* ---- 6 · FAQ · une colonne, largeur de lecture (pattern .kk-faq de
     l'accueil : .kk-faq__list, 820 px centrés). Les questions sont
     mutuellement exclusives (attribut name), comme à l'accueil. ---- */
.pc-faq{background:var(--surface-sunken);padding:clamp(34px,4.4vw,58px) 0}
/* Le chapeau se cale sur la colonne des questions, pas sur le rail entier :
   un titre étalé sur 1080 au-dessus d'une colonne de 820 ne tient pas. Le
   sous-titre passe SOUS le titre : côte à côte dans 820 px, il se déchirait
   sur deux lignes courtes. */
.pc-faq .pc-secthead{display:block;max-width:820px;margin-inline:auto}
.pc-faq .pc-secthead p{margin-top:9px;max-width:42em}
@media (max-width:767px){.pc-faq .pc-secthead{max-width:none}}
.pc-faq .kk-faq__item{background:var(--surface);border:1px solid var(--border)}
.pc-faq .kk-faq__item[open]{background:var(--surface)}
.pc-faq .kk-faq__item summary{padding:16px 20px;font-size:15px}
.pc-faq .kk-faq__item p{font-size:14.5px;line-height:1.45;margin:8px 20px}
/* Le renvoi vers la FAQ complète s'aligne sur la colonne des questions. */
.pc-faq__more{margin:clamp(16px,2vw,22px) auto 0;max-width:820px;
  font-size:14px;color:var(--text-muted)}
@media (max-width:767px){.pc-faq__more{max-width:none}}
.pc-faq__more a{color:var(--brand);font-weight:700}
.pc-faq__more a:hover{text-decoration:underline}

/* ---- 6b · Pied de page : l'entrée de la page courante reste un lien
     (jamais de lien mort), mais elle se signale — repère hexagonal et
     texte plein — au lieu de se confondre avec ses voisines. ---- */
.kk-foot__col a[aria-current="page"]{font-weight:700;position:relative}
.kk-foot__col a[aria-current="page"]::before{
  content:"";position:absolute;left:7px;top:50%;transform:translateY(-50%);
  width:2px;height:1em;border-radius:1px;background:var(--link-on-dark);
}
/* Le décalage au survol est réservé aux liens qui mènent ailleurs. */
.kk-foot__col a[aria-current="page"]:hover{padding-left:20px;color:#fff}

/* ---- 7 · Relance finale · bande bleue insérée --------------------- */
.pc-close{background:var(--surface-sunken);padding:0 0 clamp(38px,5vw,64px)}
.pc-close__band{background:var(--brand);border-radius:var(--r-2xl);color:#fff;
  padding:clamp(22px,2.6vw,34px) clamp(20px,2.6vw,34px);
  display:flex;align-items:center;justify-content:space-between;gap:16px 28px;flex-wrap:wrap}
.pc-close__txt{margin:0;font-size:clamp(18px,1.9vw,24px);font-weight:700;line-height:1.25;max-width:24em}
.pc-close__sub{margin:6px 0 0;font-size:14px;font-weight:500;color:var(--ku-blue-100)}
.pc-close .kk-btn--white{background:#fff;color:var(--brand);padding:15px 28px;border-radius:var(--r-pill);font-weight:700}
.pc-close .kk-btn--white:hover{background:var(--ku-blue-50)}

/* ---- 8 · Barre d'achat collante · mobile uniquement ---------------
   Elle n'apparaît qu'une fois le bloc d'achat passé : avant, elle
   dirait deux fois la même chose au même endroit. --------------- */
.pc-sticky{display:none}
@media (max-width:820px){
  .pc-sticky{
    display:block;position:fixed;left:0;right:0;bottom:0;z-index:80;
    background:color-mix(in srgb,#fff 94%,transparent);
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
    border-top:1px solid var(--border);
    padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));
    transform:translateY(102%);opacity:0;visibility:hidden;
    transition:transform .26s var(--curve-decel),opacity .2s linear,visibility .26s;
  }
  .pc-sticky.is-on{transform:none;opacity:1;visibility:visible}
  .pc-sticky__in{display:flex;align-items:center;gap:12px}
  .pc-sticky__price{font-size:15px;font-weight:700;color:var(--text);white-space:nowrap}
  .pc-sticky__price span{font-size:12px;font-weight:600;color:var(--text-muted)}
  .pc-sticky__cta{flex:1;min-height:48px;display:inline-flex;align-items:center;
    justify-content:center;background:var(--brand);color:#fff;border-radius:var(--r-pill);
    font-size:15px;font-weight:700;padding:12px 18px}
  /* La barre est fixe : la page réserve sa hauteur, sinon la dernière ligne
     du pied de page reste sous elle, inatteignable. */
  body{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
}

/* ---- 9 · Sacrifices : uniquement des bascules de composition ------ */
@media (max-height:760px) and (min-width:901px){
  .pc-h1{font-size:clamp(28px,3.1vw,38px)}
  .pc-lede{font-size:15.5px;margin-top:11px}
  /* Écran court : la photo perd de la hauteur, donc de la largeur. Sa
     colonne se resserre d'autant (et le bloc d'achat cesse d'être bridé à
     33em) pour que les deux se touchent presque : c'est ce qui supprime la
     bande de plan vide entre le bloc d'achat et le packshot. */
  .pc-hero__grid{
    --pc-shot-h:clamp(300px,66svh,440px);
    gap:14px clamp(20px,2.4vw,34px);
    /* La colonne photo vaut EXACTEMENT la largeur du packshot plus sa
       respiration : h ÷ 1,38 = (h ÷ 1,5) ÷ 0,92. Plus de colonne trop large
       à moitié vide, donc plus de bande de plan mort entre les deux blocs. */
    grid-template-columns:minmax(0,1fr) calc(var(--pc-shot-h) / 1.38);
  }
  .pc-hero__buy{max-width:none}
}
@media (max-width:1080px){
  .pc-gal__row{grid-template-columns:1fr 1fr;grid-template-rows:auto auto}
  .pc-gal__row .pc-shot--scene{grid-column:1 / -1}
  /* Sous 1080 px la bande passe à DEUX colonnes larges. Avec une hauteur
     figée, le cadre devenait PAYSAGE (329 × 210 à 768 px) : le packshot,
     portrait 2/3, n'y occupait plus que 34 % de la largeur, entre deux gros
     aplats de plan vide. Les cadres reprennent donc le ratio 7/8 du desktop
     et grandissent avec leur colonne — 0,875 est aussi le seuil sous lequel
     le zoom de 120 % cesserait de rogner latéralement.
     La vue en situation, elle, passe pleine largeur : gardée basse (230 px),
     son cover rognait 24 à 27 % de la hauteur et décapitait le terminal de
     paiement. Elle reprend le ratio de son fichier — 3/2, plein cadre. */
  .pc-shot__frame{height:auto;aspect-ratio:7/8}
  .pc-shot__frame--scene{height:auto;aspect-ratio:3/2}
}
@media (max-width:900px){
  .pc-hero__grid{--pc-shot-h:clamp(300px,42svh,420px);
    grid-template-columns:1fr;grid-template-areas:"copy" "buy" "shot";gap:18px}
  .pc-hero__copy,.pc-hero__buy{max-width:none}
  .pc-steps__grid{grid-template-columns:1fr}
  .pc-step{flex-direction:row;align-items:flex-start;gap:14px}
  .pc-step__art{flex:none;width:132px;height:84px}
  .pc-step__art svg{width:116px;height:66px}
  .pc-cmp{grid-template-columns:1fr}
}
@media (max-width:600px){
  .pc-gal__row{grid-template-columns:1fr 1fr}
  .pc-buy__ship{margin-left:0;width:100%}
  /* Le stepper se resserre par son AFFICHEUR, jamais par ses boutons : les
     deux cibles restent à 44 × 48 px. Le CTA prend tout le reste. */
  .pc-buy__cta{gap:8px}
  .pc-qty__val{width:32px}
  .pc-buy__cta .kk-btn--cyan{flex:1 1 0;min-width:0;padding:14px 12px;font-size:15px;gap:7px}
  .pc-close__band{flex-direction:column;align-items:flex-start}
  .pc-close .kk-btn--white{width:100%;justify-content:center}
  .pc-step{flex-direction:column}
  .pc-step__art{width:100%;height:88px}
}
@media (max-width:440px){
  /* Le libellé passe avant l'icône : à cette largeur, « Ajouter au panier »
     doit tenir sur UNE ligne à côté du stepper. La coche d'ajout, elle,
     reste — c'est la confirmation du geste. */
  .pc-buy__cta .pc-add__ic{display:none}
  /* Même arbitrage pour le CTA de renvoi : « Voir la plaque Personnalisée
     NFC/QR » demande 269 px et n'en a que 248 à 360 px, il passera sur deux
     lignes de toute façon. La flèche posée à côté d'un libellé sur deux
     lignes se lit mal : elle sort, le libellé reste centré. */
  .pc-buy__cta a.kk-btn svg{display:none}
}
@media (max-width:360px){
  /* Dernier cran : plutôt que de casser le libellé du CTA en deux, on lui
     donne la pleine largeur sous le stepper. */
  .pc-buy__cta .kk-btn--cyan{flex:1 1 100%}
}
@media (max-width:420px){
  /* Deux vignettes de face/trois-quarts + la vue en situation pleine
     largeur. Les cadres gardent le ratio 7/8 (défini à 1080 px) : à 320 px la
     colonne tombe à 128 px et une hauteur figée de 190 px ramenait le cadre
     au ratio 2/3, ce qui réactivait le rognage LATÉRAL du zoom. */
  .pc-shot figcaption{font-size:12.5px}
}
@media (prefers-reduced-motion:reduce){
  .pc-sticky,.pc-buy__cta .kk-btn--cyan,.pc-card__cta,.pc-chip,.pc-buy__alt,
  .pc-qty__btn,.pc-buy__cfg a,.pc-soon__txt a,.kktop .kk-navcart{transition:none}
  .pc-buy__cta .kk-btn--cyan:hover,.pc-card__cta--solid:hover{transform:none}
}
