/* ==========================================================================
   BASE HÉRITÉE DE CLASSIC — À NE PAS SUPPRIMER
   --------------------------------------------------------------------------
   « use_parent_assets: true » dans config/theme.yml devrait suffire à charger
   la feuille du thème parent. Sur cette installation, ce n'est pas le cas :
   PrestaShop sert deux fois notre propre theme.css et jamais celle de classic.
   Résultat : pas de Bootstrap (les sous-menus, qui reposent sur
   .collapse{display:none}, s'affichaient tous dépliés) et pas de police
   Material Icons (les icônes sortaient en toutes lettres : « search »,
   « shopping_cart »).

   On la charge donc explicitement. Les URL relatives qu'elle contient — dont
   la police Material Icons — se résolvent bien depuis /themes/classic/assets/.
   Cette ligne doit rester AVANT nos propres règles pour que la cascade nous
   donne le dernier mot.
   ========================================================================== */
@import url("/themes/classic/assets/css/theme.css");

@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Nunito:wght@400;600;700&display=swap');

/* ==========================================================================
   POK'IN GAMES — thème « Ciel de Boules »
   Thème enfant de classic (PrestaShop 8.x)
   themes/pokin/assets/css/theme.css
   --------------------------------------------------------------------------
   1. Design tokens
   2. Base et typographie
   3. Composants du thème (boutons, cartes, badges, sections…)
   4. Raccords PrestaShop (modules classic, listing, tunnel, compte)
   ========================================================================== */
/* ============================================================
   POK'IN GAMES — Thème « Ciel de Boules »
   Design tokens — à reporter tels quels dans le thème PrestaShop 8
   (themes/pokin/assets/css/_tokens.css)
   ============================================================ */
:root{
  color-scheme: light;

  /* — Couleurs « Ciel de Boules » — */
  --pk-sky:        #DDEDF7;  /* fond de page */
  --pk-sky-deep:   #CFE3F1;  /* tuiles média, aplats secondaires */
  --pk-surface:    #FFFCF6;  /* cartes, sections alternées (blanc chaud) */
  --pk-ink:        #173A4E;  /* texte et fonds sombres */
  --pk-abricot:    #DD6432;  /* aplats chauds, badges — jamais en petit texte */
  --pk-abricot-deep:#B0491C; /* prix, accents, texte chaud (AA sur ciel) */
  --pk-soleil:     #F2B134;  /* aplats solaires : newsletter, badges */
  --pk-lagon:      #1E7A66;  /* CTA principaux, nav active */
  --pk-lagon-deep: #17624F;  /* liens et texte lagon (AA sur ciel) */

  /* neutres dérivés de l'encre, jamais de gris pur */
  --pk-muted:      #47677A;
  --pk-line:       #BFD9E8;
  --pk-line-soft:  #D6E7F2;
  --pk-ink-70:     rgba(23,58,78,.80);
  --pk-surface-70: rgba(255,252,246,.76);

  /* — Typographie — */
  --pk-display: "Fredoka", "Segoe UI", system-ui, sans-serif;
  --pk-body:    "Nunito", "Segoe UI", system-ui, sans-serif;

  --pk-t-hero:  clamp(2.9rem, 7.4vw, 5.6rem);
  --pk-t-h1:    clamp(2.3rem, 5.2vw, 3.9rem);
  --pk-t-h2:    clamp(1.95rem, 3.8vw, 3rem);
  --pk-t-h3:    clamp(1.25rem, 2vw, 1.55rem);
  --pk-t-lead:  clamp(1.05rem, 1.35vw, 1.28rem);
  --pk-t-body:  1.0625rem;
  --pk-t-small: .875rem;
  --pk-t-label: .75rem;

  /* — Espacements — */
  --pk-s1:.25rem; --pk-s2:.5rem;  --pk-s3:.75rem; --pk-s4:1rem;
  --pk-s5:1.5rem; --pk-s6:2rem;   --pk-s7:3rem;   --pk-s8:4.5rem;
  --pk-s9:7rem;
  --pk-gutter: clamp(1.15rem, 4vw, 3rem);
  --pk-max: 1240px;
  --pk-measure: 62ch;

  /* — Rayons — */
  --pk-r-pill: 999px;
  --pk-r-lg: 20px;
  --pk-r-md: 12px;
  --pk-r-sm: 6px;
}

/* ============================================================ Base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--pk-sky); color:var(--pk-ink);
  font-family:var(--pk-body); font-size:var(--pk-t-body); line-height:1.65;
  font-synthesis-weight:none;
}
/* height:auto est indispensable dès lors qu'on pose des attributs width/height
   sur les <img> (ce qu'on fait pour réserver la place et éviter les sauts de
   mise en page). Ces attributs agissent comme une hauteur : sans height:auto,
   une image en width:100% garde la hauteur de son attribut et s'étire.
   Les composants qui imposent volontairement une hauteur — .pk-card__media img,
   .ev__thumb — sont plus spécifiques et continuent de l'emporter. */
img{max-width:100%; display:block; height:auto}
h1,h2,h3,h4{font-family:var(--pk-display); font-weight:600; line-height:1.04;
  letter-spacing:-.018em; text-wrap:balance; margin:0}
p{margin:0}
a{color:var(--pk-lagon-deep); text-underline-offset:.22em; text-decoration-thickness:1.5px}
button{font:inherit; color:inherit}
/* abricot-deep et non abricot : 4,59:1 sur le ciel, au-dessus du seuil de 3:1
   exige par WCAG 1.4.11 pour les elements non textuels. */
:focus-visible{outline:3px solid var(--pk-abricot-deep); outline-offset:3px; border-radius:var(--pk-r-sm)}
@media (prefers-reduced-motion: reduce){*{animation:none!important; transition:none!important}}

/* <picture> est un simple conteneur : on le retire de la mise en page pour que
   les regles ciblant l'img (object-fit, aspect-ratio du parent) continuent de
   s'appliquer exactement comme avant l'ajout des sources WebP. */
picture{display:contents}

/* Texte reserve aux lecteurs d'ecran (mentions « nouvelle fenetre »). */
.sr-only{position:absolute!important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0}

.wrap{max-width:var(--pk-max); margin-inline:auto; padding-inline:var(--pk-gutter)}
.wrap-wide{max-width:1480px; margin-inline:auto; padding-inline:var(--pk-gutter)}
.stack{display:flex; flex-direction:column}

/* eyebrow : deux palets rouge/bleu, clin d'œil aux jetons du jeu */
.eyebrow{font-family:var(--pk-body); font-weight:700; font-size:var(--pk-t-label);
  letter-spacing:.16em; text-transform:uppercase; color:var(--pk-muted);
  display:flex; align-items:center; gap:.6rem}
.eyebrow::before{content:""; width:26px; height:11px; flex:none; border-radius:999px;
  background:
    radial-gradient(circle at 5.5px 50%, var(--pk-abricot) 5px, transparent 5.5px),
    radial-gradient(circle at 20.5px 50%, var(--pk-lagon) 5px, transparent 5.5px)}
.on-ink .eyebrow{color:var(--pk-soleil)}
.on-ink .eyebrow::before{background:
    radial-gradient(circle at 5.5px 50%, #EE7A4A 5px, transparent 5.5px),
    radial-gradient(circle at 20.5px 50%, #63C3A9 5px, transparent 5.5px)}

.lead{font-size:var(--pk-t-lead); line-height:1.6; color:var(--pk-ink-70); max-width:var(--pk-measure)}
.muted{color:var(--pk-muted)}

/* ============================================================ Boutons */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:.55rem;
  font-family:var(--pk-body); font-weight:700; font-size:1rem; letter-spacing:.005em;
  padding:.95rem 1.7rem; border-radius:var(--pk-r-pill); border:2px solid transparent;
  cursor:pointer; text-decoration:none; transition:background-color .18s, color .18s, border-color .18s, transform .18s}
.btn:hover{transform:translateY(-2px)}
.btn--primary{background:var(--pk-lagon); color:var(--pk-surface); border-color:var(--pk-lagon)}
.btn--primary:hover{background:var(--pk-lagon-deep); border-color:var(--pk-lagon-deep)}
.btn--ghost{background:transparent; color:var(--pk-ink); border-color:var(--pk-ink)}
.btn--ghost:hover{background:var(--pk-ink); color:var(--pk-sky)}
.btn--soleil{background:var(--pk-soleil); color:var(--pk-ink); border-color:var(--pk-soleil)}
.btn--soleil:hover{background:#DDB432; border-color:#DDB432}
.btn--onink{background:var(--pk-soleil); color:var(--pk-ink); border-color:var(--pk-soleil)}
.btn--onink-ghost{background:transparent; color:var(--pk-sky); border-color:var(--pk-surface-70)}
.btn--onink-ghost:hover{background:var(--pk-sky); color:var(--pk-ink); border-color:var(--pk-sky)}
.btn--sm{padding:.6rem 1.15rem; font-size:.9rem}
.btn--block{width:100%}
.btn[aria-disabled="true"]{opacity:.5; cursor:not-allowed; transform:none}

/* ============================================================ Header */

/* Conteneurs du gabarit de classic. Il enveloppe la page dans
   <header id="header"> et <section id="wrapper">, tous deux peints pour un
   thème clair : #header{background:#fff} et #wrapper{background:#f6f6f6}.
   Ces sélecteurs par id l'emportent sur .header comme sur la couleur du
   body : l'en-tête ressortait blanc, et tout le contenu — le hero compris —
   reposait sur un gris au lieu du ciel. On les rend transparents pour
   laisser passer le fond du body. Le z-index de #header n'est pas touché :
   c'est lui qui maintient l'en-tête collant au-dessus du contenu. */
#header{background:transparent; box-shadow:none}
#wrapper{background:transparent}

.topbar{background:var(--pk-ink); color:var(--pk-sky); font-size:.8rem; letter-spacing:.05em}
.topbar__in{display:flex; justify-content:center; gap:2rem; flex-wrap:wrap; padding:.55rem 0}
.topbar b{color:var(--pk-soleil); font-weight:700}

.header{position:sticky; top:0; z-index:40; background:var(--pk-sky);
  border-bottom:1px solid var(--pk-line)}
.header__in{display:flex; align-items:center; gap:var(--pk-s5); padding-block:.7rem}
.brand{flex:none; display:block; line-height:0}
.brand img{width:clamp(104px,11vw,140px); height:auto}
.nav{display:flex; gap:.35rem; margin-inline-start:auto; align-items:center}
.nav a{font-weight:500; font-size:.95rem; color:var(--pk-ink); text-decoration:none;
  padding:.5rem .8rem; border-radius:var(--pk-r-pill); white-space:nowrap}
.nav a:hover{background:var(--pk-sky-deep)}
.nav a[aria-current="page"]{background:var(--pk-lagon); color:var(--pk-surface)}
.tools{display:flex; align-items:center; gap:.15rem; margin-inline-start:.6rem}
.icon-btn{display:grid; place-items:center; width:42px; height:42px; border:0; background:none;
  border-radius:var(--pk-r-pill); cursor:pointer; position:relative}
.icon-btn:hover{background:var(--pk-sky-deep)}
.icon-btn svg{width:21px; height:21px; stroke:var(--pk-ink); fill:none; stroke-width:1.7;
  stroke-linecap:round; stroke-linejoin:round}
.cart-count{position:absolute; top:4px; right:3px; min-width:18px; height:18px; padding:0 4px;
  border-radius:999px; background:var(--pk-abricot-deep); color:#fff; font-size:.66rem; font-weight:700;
  display:grid; place-items:center; line-height:1}
.burger{display:none}
.nav__close{display:none}
@media (max-width:1000px){
  .nav{position:fixed; inset:auto 0 0 0; top:0; background:var(--pk-sky); flex-direction:column;
    align-items:stretch; justify-content:center; gap:.25rem; padding:var(--pk-s7) var(--pk-gutter);
    transform:translateX(100%); transition:transform .28s ease; z-index:60; overflow:auto}
  .nav[data-open="true"]{transform:none}
  .nav a{font-family:var(--pk-display); font-weight:700; font-size:1.6rem; padding:.7rem 1rem}
  .burger{display:grid; margin-inline-start:auto}
  .nav__close{display:grid; align-self:flex-end; margin-bottom:var(--pk-s5)}

  /* --- Menu de ps_mainmenu dans le tiroir --------------------------------
     Le module enveloppe son menu dans
     <div id="_desktop_top_menu" class="menu js-top-menu … hidden-sm-down"> :
     classic le masque sous 768px (display:none !important) et le reconstruit
     dans un #mobile_top_menu_wrapper que ce thème n'a pas. Le tiroir
     s'ouvrait donc sur un panneau vide sur téléphone.
     On le réaffiche, on empile les entrées, et on déplie les sous-menus en
     place : ce sont des .popover en position absolue, ouverts au survol sur
     desktop, et leur bouton tactile (.navbar-toggler) ne contient que des
     <i class="material-icons"> vides — inutilisable au doigt. */
  .nav #_desktop_top_menu{display:block; width:100%}
  .nav #_desktop_top_menu .top-menu{display:flex; flex-direction:column; gap:.1rem;
    margin:0; padding:0; list-style:none}
  .nav #_desktop_top_menu .top-menu > li{display:block; width:100%; float:none; margin:0}
  .nav #_desktop_top_menu .navbar-toggler{display:none}
  .nav #_desktop_top_menu .sub-menu{
    position:static; visibility:visible; opacity:1; box-shadow:none; border:0;
    width:auto; min-width:0; max-width:none; margin:0; padding:0; background:none;
    transition:none}
  .nav #_desktop_top_menu .sub-menu ul[data-depth="1"]{margin:0}
  .nav #_desktop_top_menu .sub-menu ul[data-depth="1"] > li{float:none; margin:0}
  /* classic dimensionne ces liens par « .top-menu a[data-depth="0"] »
     (0-1-2) : il faut au moins autant de poids pour retrouver la
     typographie du tiroir. white-space:normal parce que .dropdown-item
     interdit le retour à la ligne — « Location et Animation » déborderait. */
  .nav #_desktop_top_menu a[data-depth="0"]{font-family:var(--pk-display); font-weight:700;
    font-size:1.6rem; line-height:1.15; padding:.7rem 1rem; white-space:normal}
  .nav #_desktop_top_menu a[data-depth="1"]{font-family:var(--pk-body); font-size:1.05rem;
    font-weight:600; line-height:1.3; padding:.4rem 1rem .4rem 2.1rem;
    color:var(--pk-muted); text-transform:none; white-space:normal}
}
/* .hidden-sm-down de classic porte un !important : il faut le même poids. */
@media (max-width:767px){
  .nav #_desktop_top_menu{display:block !important}
}

/* ============================================================ Hero */
.hero{position:relative; overflow:hidden; padding-block:clamp(2.5rem,5vw,4.5rem) clamp(3rem,6vw,5.5rem);
  /* filigrane : boules et cochonnet, 5,5 % d'opacité */
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27175%27%20height%3D%27175%27%20viewBox%3D%270%200%20175%20175%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27rgba%2823%2C58%2C78%2C0.055%29%27%20stroke-width%3D%272.2%27%3E%3Ccircle%20cx%3D%2744%27%20cy%3D%2746%27%20r%3D%2719%27%2F%3E%3Cpath%20d%3D%27M30.3%2037.5c9.5%206.1%2017.9%206.1%2027.4%200M30.3%2054.5c9.5-6.1%2017.9-6.1%2027.4%200%27%2F%3E%3Cpath%20d%3D%27M44%2027v38%27%2F%3E%3Ccircle%20cx%3D%27130%27%20cy%3D%27116%27%20r%3D%2719%27%2F%3E%3Cpath%20d%3D%27M116.3%20107.5c9.5%206.1%2017.9%206.1%2027.4%200M116.3%20124.5c9.5-6.1%2017.9-6.1%2027.4%200%27%2F%3E%3Cpath%20d%3D%27M130%2097v38%27%2F%3E%3Ccircle%20cx%3D%27132%27%20cy%3D%2740%27%20r%3D%277%27%2F%3E%3Ccircle%20cx%3D%2742%27%20cy%3D%27130%27%20r%3D%277%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); background-repeat:repeat}
.hero__grid{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:clamp(2rem,4vw,4rem); align-items:center}
.hero__copy{display:flex; flex-direction:column; gap:var(--pk-s5); position:relative}
.hero h1{font-size:var(--pk-t-hero); font-weight:600; letter-spacing:-.028em; line-height:.98}
.hero h1 em{font-style:normal; color:var(--pk-abricot-deep)}
.hero__actions{display:flex; flex-wrap:wrap; gap:.75rem; align-items:center}
.specs{display:flex; flex-wrap:wrap; gap:.4rem .5rem; list-style:none; margin:0; padding:0}
.specs li{font-size:.83rem; font-weight:500; letter-spacing:.04em; text-transform:uppercase;
  padding:.4rem .8rem; border:1px solid var(--pk-line); border-radius:var(--pk-r-pill); color:var(--pk-muted)}

/* visuel héros + rail de score (rappel de la piste numérotée du plateau) */
.hero__media{position:relative}
.hero__media img{width:100%; border-radius:var(--pk-r-lg)}
.scoretrack{position:absolute; left:-14px; top:50%; transform:translateY(-50%);
  display:flex; flex-direction:column; gap:.15rem; font-family:var(--pk-display); font-weight:700;
  font-size:.72rem; color:var(--pk-muted); font-variant-numeric:tabular-nums; user-select:none}
.scoretrack span{width:26px; height:26px; display:grid; place-items:center;
  border-radius:999px; background:var(--pk-surface)}
/* abricot-deep : 5,16:1 avec le blanc chaud (3,31:1 avec abricot, insuffisant
   pour ce corps de texte, meme decoratif). */
.scoretrack span.is-hit{background:var(--pk-abricot-deep); color:#FFF6F0}
.scoretrack span.is-goal{background:var(--pk-ink); color:var(--pk-soleil)}
@media (max-width:900px){
  .hero__grid{grid-template-columns:1fr}
  .scoretrack{display:none}
}

/* ============================================================ Bandeau preuves */
.proof{background:var(--pk-ink); color:var(--pk-sky)}
.proof ul{display:grid; grid-template-columns:repeat(4,1fr); gap:var(--pk-s4);
  list-style:none; margin:0; padding:var(--pk-s5) 0}
.proof li{display:flex; flex-direction:column; gap:.15rem; font-size:.88rem; font-weight:500;
  color:var(--pk-surface-70); padding-left:.9rem; border-left:1px solid rgba(251,243,227,.22)}
.proof b{color:var(--pk-soleil); font-family:var(--pk-body); font-size:var(--pk-t-label);
  font-weight:700; letter-spacing:.14em; text-transform:uppercase}
@media (max-width:760px){.proof ul{grid-template-columns:repeat(2,1fr)}}

/* ============================================================ Sections */
.section{padding-block:clamp(3.5rem,7vw,var(--pk-s9))}
.section--card{background:var(--pk-sky-deep)}
.section--ink{background:var(--pk-ink); color:var(--pk-sky)}
.section--ink .lead{color:var(--pk-surface-70)}
.section__head{display:flex; flex-direction:column; gap:var(--pk-s3); margin-bottom:var(--pk-s7);
  max-width:46ch}
.section__head h2{font-size:var(--pk-t-h2)}
.cms-title{font-size:var(--pk-t-h1)}
.section__head--split{max-width:none; flex-direction:row; align-items:flex-end;
  justify-content:space-between; gap:var(--pk-s5); flex-wrap:wrap}
.section__head--split > div{display:flex; flex-direction:column; gap:var(--pk-s3); max-width:46ch}

/* ============================================================ Étapes (piste de score) */
.steps{display:grid; grid-template-columns:repeat(3,1fr); gap:var(--pk-s5); counter-reset:step}
.step{border-top:2px solid var(--pk-ink); padding-top:var(--pk-s4); display:flex;
  flex-direction:column; gap:.5rem}
.step__n{font-family:var(--pk-display); font-weight:700; font-size:2.4rem; line-height:1;
  color:var(--pk-abricot-deep); font-variant-numeric:tabular-nums}
.step h3{font-size:var(--pk-t-h3)}
.step p{font-size:.97rem; color:var(--pk-ink-70)}
@media (max-width:760px){.steps{grid-template-columns:1fr}}

/* ============================================================ Cartes produit */
.grid-3{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--pk-s5)}
.grid-2{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(1.5rem,3vw,2.5rem)}
@media (max-width:900px){.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.grid-3,.grid-2{grid-template-columns:1fr}}

.pk-card{display:flex; flex-direction:column; background:var(--pk-surface);
  border:1px solid var(--pk-line); border-radius:var(--pk-r-lg); overflow:hidden;
  text-decoration:none; color:inherit; transition:border-color .18s, transform .18s}
.section--card .pk-card{background:var(--pk-surface)}
a.pk-card:hover{border-color:var(--pk-ink); transform:translateY(-3px)}
.pk-card__media{position:relative; background:var(--pk-sky); aspect-ratio:4/3; overflow:hidden}
.pk-card__media img{width:100%; height:100%; object-fit:contain; padding:6%}
/* photos d'ambiance (non détourées) : plein cadre plutôt que détouré sur tuile */
.pk-card__media--photo img{object-fit:cover; padding:0}
.pk-card__body{padding:var(--pk-s5); display:flex; flex-direction:column; gap:.5rem; flex:1}
.pk-card__kicker{font-size:var(--pk-t-label); font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--pk-muted)}
.pk-card h3{font-size:var(--pk-t-h3)}
.pk-card p{font-size:.95rem; color:var(--pk-ink-70)}
.pk-card__foot{margin-top:auto; padding-top:var(--pk-s4); display:flex; align-items:center;
  justify-content:space-between; gap:var(--pk-s3)}
.price{font-family:var(--pk-display); font-weight:700; font-size:1.4rem; color:var(--pk-abricot-deep);
  font-variant-numeric:tabular-nums}
.pk-card__cta{font-weight:700; font-size:.92rem; color:var(--pk-lagon-deep); display:inline-flex;
  align-items:center; gap:.4rem}
a.pk-card:hover .pk-card__cta{text-decoration:underline}

/* badges */
.badge{display:inline-flex; align-items:center; gap:.4rem; font-size:var(--pk-t-label);
  font-weight:700; letter-spacing:.1em; text-transform:uppercase; padding:.4rem .75rem;
  border-radius:var(--pk-r-pill)}
.badge--stock{background:var(--pk-lagon); color:var(--pk-surface)}
.badge--precommande{background:var(--pk-soleil); color:var(--pk-ink)}
.badge--rupture{background:var(--pk-ink); color:var(--pk-soleil)}

/* carte en rupture : non cliquable, visuellement désengagée */
.pk-card--out{cursor:default}
.pk-card--out .pk-card__media{background:var(--pk-sky-deep)}
.pk-card--out .pk-card__media img{filter:saturate(.35) contrast(.95) opacity(.75)}
.pk-card--out .ribbon{position:absolute; inset-inline:0; top:38%; background:var(--pk-ink);
  color:var(--pk-soleil); font-family:var(--pk-display); font-weight:700; font-size:1.05rem;
  letter-spacing:.06em; text-transform:uppercase; text-align:center; padding:.6rem 0;
  transform:rotate(-4deg); box-shadow:0 0 0 1px rgba(43,37,33,.25)}
.pk-card--out h3{color:var(--pk-muted)}

/* ============================================================ Duo gammes (accueil) */
.duo{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(1.5rem,3vw,2.5rem)}
@media (max-width:820px){.duo{grid-template-columns:1fr}}
.duo .pk-card__media{aspect-ratio:5/4}

/* ============================================================ Location & animation */
.split{display:grid; grid-template-columns:1.05fr 1fr; gap:clamp(2rem,4vw,4rem); align-items:center}
.split--rev .split__media{order:-1}
@media (max-width:900px){.split{grid-template-columns:1fr}.split--rev .split__media{order:0}}
.split__media img{border-radius:var(--pk-r-lg); width:100%}
.split__copy{display:flex; flex-direction:column; gap:var(--pk-s4); align-items:flex-start}
.split__copy h2{font-size:var(--pk-t-h2)}
.tick{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.55rem}
.tick li{display:flex; gap:.65rem; font-size:.98rem; line-height:1.5}
.tick li::before{content:""; flex:none; width:9px; height:9px; margin-top:.55em; border-radius:999px;
  background:var(--pk-soleil)}
.section--ink .tick li::before{background:var(--pk-soleil)}

/* ============================================================ Événements */
.events{display:flex; flex-direction:column; gap:var(--pk-s7)}
.evgroup h3{font-family:var(--pk-body); font-weight:700; font-size:var(--pk-t-label);
  letter-spacing:.16em; text-transform:uppercase; color:var(--pk-muted); margin-bottom:var(--pk-s4)}
.evlist{list-style:none; margin:0; padding:0; display:flex; flex-direction:column}
/* La marge intérieure horizontale vaut pour les deux groupes : sans elle, la
   date touchait le bord gauche et la vignette le bord droit (1 px sur une
   carte « à venir », 0 sur une ligne « passé »). Les filets de séparation
   sont tracés sur la boîte de bordure : ils restent pleine largeur, seul le
   contenu est renté. */
.ev{display:grid; grid-template-columns:118px minmax(0,1fr) auto; gap:var(--pk-s5);
  align-items:center; padding:var(--pk-s5); border-top:1px solid var(--pk-line)}
.ev:last-child{border-bottom:1px solid var(--pk-line)}
.ev__date{font-family:var(--pk-display); font-weight:700; line-height:1; font-variant-numeric:tabular-nums}
.ev__date .d{display:block; font-size:2.1rem; color:var(--pk-ink)}
.ev__date .m{display:block; font-size:.8rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--pk-muted); margin-top:.35rem; font-family:var(--pk-body); font-weight:700}
.ev__main{display:flex; flex-direction:column; gap:.3rem; min-width:0}
.ev__main h4{font-family:var(--pk-display); font-weight:700; font-size:1.2rem; letter-spacing:-.02em}
.ev__meta{font-size:.9rem; color:var(--pk-muted)}
.evgroup--next .evlist{gap:.6rem}
.evgroup--next .ev{border:1px solid var(--pk-line); border-radius:var(--pk-r-md);
  background:var(--pk-surface)}
/* l'attenuation ne porte plus sur le texte (le lieu tombait a 4,30:1) :
   seule la vignette est adoucie, le libelle reste a pleine lisibilite. */
.evgroup--past .ev__date .d{color:var(--pk-muted)}
.evgroup--past .ev__thumb{opacity:.92}

/* CTA d'un evenement a venir : sous le titre, pour cohabiter avec le visuel
   dans la meme ligne de grille. */
.ev__cta{align-self:flex-start; margin-top:.45rem}

/* Visuel d'evenement — hauteur fixe, largeur libre, jamais recadre.
   Sur un a-venir c'est souvent une affiche au format portrait : un
   object-fit:cover la couperait en plein milieu, la ou se trouve son texte.
   La tuile donne un fond aux images qui ne remplissent pas le cadre. */
.ev__thumb{
  height:88px; width:auto; max-width:150px; object-fit:contain;
  background:var(--pk-sky); border:1px solid var(--pk-line);
  border-radius:var(--pk-r-sm); padding:3px;
}
/* Un a-venir porte souvent une affiche : on lui donne plus de place qu'a la
   photo d'un evenement passe, qui n'est la qu'en preuve sociale. */
.evgroup--next .ev__thumb{height:132px; max-width:190px}
@media (max-width:760px){
  /* 76px et non 64 : « JUIN 26 » passait à la ligne dans la colonne de date. */
  .ev{grid-template-columns:76px minmax(0,1fr); gap:var(--pk-s4);
    padding:var(--pk-s5) var(--pk-s4)}
  .ev__date .d{font-size:1.5rem}
  .ev__date .m{white-space:nowrap; letter-spacing:.1em}
  .ev > .ev__thumb{grid-column:2; height:120px; max-width:100%}
}

/* ============================================================ Newsletter + footer */
.news{background:var(--pk-soleil); color:var(--pk-ink)}
.news__copy{gap:.6rem}
.news__in{display:grid; grid-template-columns:1fr minmax(18rem,32rem); gap:var(--pk-s5);
  align-items:center; padding-block:clamp(2.2rem,4vw,3.2rem)}
.news h2{font-size:clamp(1.6rem,2.8vw,2.3rem)}
.news p{font-size:.95rem; color:rgba(23,58,78,.82); max-width:44ch}

/* --- Formulaire d'abonnement (ps_emailsubscription) ---------------------
   Le module rend son propre balisage, prévu pour le pied de page blanc de
   classic : .block_newsletter porte « background:#fff », une largeur bornée
   à 50rem et des classes col-* de Bootstrap ; le bouton est un .btn-primary
   cyan. Sur le bandeau jaune, ce fond blanc dessinait un rectangle.
   On remet le bloc à plat et on habille le formulaire aux couleurs du thème.
   Le mécanisme de classic est conservé : le bouton flotte à droite et le
   champ occupe la place restante grâce au overflow:hidden de .input-wrapper.
   Les colonnes, elles, sont déflottées pour empiler l'intitulé et le champ. */
.news .block_newsletter{float:none; width:100%; max-width:none; margin:0; padding:0;
  background:transparent; border:0; font-size:inherit}
.news .block_newsletter .row{margin:0}
.news .block_newsletter [class*="col-"]{float:none; width:auto; max-width:none; padding:0}
.news .block_newsletter #block-newsletter-label{margin:0 0 .6rem; padding:0;
  font-size:.95rem; font-weight:700; line-height:1.4; color:var(--pk-ink)}
.news .block_newsletter form input[type="email"]{
  font:inherit; height:auto; width:100%; padding:.9rem 1.2rem; color:var(--pk-ink);
  border:2px solid var(--pk-ink); border-radius:var(--pk-r-pill); background:#FFFDF9}
.news .block_newsletter form input[type="email"]:focus{
  padding:.9rem 1.2rem; border:2px solid var(--pk-ink);
  outline:3px solid var(--pk-abricot-deep); outline-offset:2px}
.news .block_newsletter form input[type="email"]::placeholder{color:var(--pk-muted)}
.news .block_newsletter .btn-primary,
.news .block_newsletter .btn-primary:hover,
.news .block_newsletter .btn-primary:focus,
.news .block_newsletter .btn-primary:active{
  height:auto; padding:.9rem 1.5rem; margin-left:.5rem; font:inherit; font-weight:700;
  letter-spacing:.04em; text-transform:uppercase; color:var(--pk-surface);
  background:var(--pk-ink); border:2px solid var(--pk-ink);
  border-radius:var(--pk-r-pill); cursor:pointer}
.news .block_newsletter .btn-primary:hover{background:#0E2A3A; border-color:#0E2A3A}

@media (max-width:820px){.news__in{grid-template-columns:1fr}}

.footer{background:var(--pk-ink); color:var(--pk-sky)}
.footer__grid{display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:var(--pk-s6);
  align-items:start; padding-block:var(--pk-s8) var(--pk-s6)}

/* --- Grille du pied de page ---------------------------------------------
   Trois des quatre blocs viennent de modules (ps_linklist, ps_contactinfo,
   ps_socialfollow) et arrivent dans l'ordre imposé par le hook displayFooter,
   avec un balisage de colonnes Bootstrap. On les replace explicitement :
   colonne 1 = marque puis réseaux sociaux, colonnes 2 à 4 = informations,
   infos légales, aide & paiement. */
.footer__brand{grid-column:1; grid-row:1}
.footer .block-social{grid-column:1; grid-row:2}
.footer .block-contact{grid-column:2; grid-row:1}
.footer__legal{grid-column:3; grid-row:1}
.footer__help{grid-column:4; grid-row:1}

/* Les classes col-* de Bootstrap posent flex-basis, max-width:25% et un
   padding latéral de 15px. Sur des éléments de grille, le max-width en %
   est encore appliqué et écrase la colonne à un quart de sa largeur. */
.footer__grid > [class*="col-"]{
  flex:none; width:auto; max-width:none; padding-left:0; padding-right:0}

/* Bloc de liens ps_linklist : vide en production (aucun bloc de liens n'est
   configuré). :has() permet de le masquer tant qu'il ne contient aucun
   bloc — .wrapper est le conteneur d'un bloc de liens du module. S'il est
   renseigné un jour, il s'affiche sur une ligne pleine sous les colonnes. */
.footer__grid > .col-md-6.links{grid-column:1 / -1; grid-row:3}
.footer__grid > .col-md-6.links:not(:has(.wrapper)){display:none}
.footer h4{font-family:var(--pk-body); font-weight:700; font-size:var(--pk-t-label);
  letter-spacing:.16em; text-transform:uppercase; color:var(--pk-soleil); margin-bottom:var(--pk-s4)}
.footer ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.6rem}
.footer a{color:var(--pk-sky); text-decoration:none; font-size:.95rem}
.footer a:hover{text-decoration:underline; color:var(--pk-soleil)}
.footer__brand img{width:132px; margin-bottom:var(--pk-s4)}
.footer__brand p{font-size:.95rem; color:var(--pk-surface-70); max-width:34ch}
/* --- Réseaux sociaux (ps_socialfollow) ----------------------------------
   Le module rend <div class="block-social"><ul><li class="facebook"><a>…
   avec le nom du réseau en texte. On masque ce texte visuellement — il reste
   le nom accessible du lien — et on pose l'icône en fond. Les URL se
   saisissent dans Modules > Liens des réseaux sociaux, pas dans le thème.

   Les sélecteurs sont préfixés .footer : sans cela, la règle .footer ul
   (colonne) l'emporterait sur .block-social ul, à spécificité égale mais
   déclarée plus haut. */
.footer .block-social{margin-top:var(--pk-s4); text-align:left}
.footer .block-social ul{display:flex; flex-direction:row; flex-wrap:wrap; gap:.5rem;
  list-style:none; margin:0; padding:0}
/* classic habille déjà ces <li> pour un pied de page clair : carré gris
   #f6f6f6 de 2,5rem portant un sprite SVG blanc en background-size:contain.
   Ce carré dépasse de la pastille de 40px posée sur le <a> ; sur le fond
   marine, il se lit comme une tache blanche floue autour de chaque icône.
   On le retire entièrement — seule l'icône du <a> subsiste.
   !important : classic pose le sprite via « .block-social ul li.facebook »,
   de spécificité identique à la règle ci-dessous ; sans lui, c'est l'ordre
   de chargement des feuilles qui trancherait. */
.footer .block-social ul li{
  display:block; width:auto; height:auto; margin:0; cursor:auto;
  background:none !important}
.footer .block-social li a{
  display:block; width:40px; height:40px; border-radius:999px;
  border:1px solid rgba(251,243,227,.28);
  background-repeat:no-repeat; background-position:center; background-size:18px 18px;
  text-indent:-999em; overflow:hidden; white-space:nowrap;
  transition:border-color .18s, background-color .18s;
}
.footer .block-social li a:hover{border-color:var(--pk-soleil); background-color:rgba(242,177,52,.12)}
.footer .block-social li a:focus-visible{outline:3px solid var(--pk-soleil); outline-offset:3px}
.footer .block-social li.facebook a{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27%23DDEDF7%27%3E%3Cpath%20d%3D%27M13.5%2021v-8h2.7l.4-3.1h-3.1V7.9c0-.9.25-1.5%201.55-1.5H16.7V3.6c-.3%200-1.3-.13-2.45-.13-2.43%200-4.1%201.48-4.1%204.2v2.34H7.4V13h2.75v8Z%27%2F%3E%3C%2Fsvg%3E")}
.footer .block-social li.youtube a{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27%23DDEDF7%27%3E%3Cpath%20d%3D%27M21.6%207.2a2.5%202.5%200%200%200-1.76-1.77C18.28%205%2012%205%2012%205s-6.28%200-7.84.43A2.5%202.5%200%200%200%202.4%207.2%2026%2026%200%200%200%202%2012a26%2026%200%200%200%20.4%204.8%202.5%202.5%200%200%200%201.76%201.77C5.72%2019%2012%2019%2012%2019s6.28%200%207.84-.43a2.5%202.5%200%200%200%201.76-1.77A26%2026%200%200%200%2022%2012a26%2026%200%200%200-.4-4.8ZM10%2015V9l5.2%203Z%27%2F%3E%3C%2Fsvg%3E")}
.footer .block-social li.instagram a{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27%23DDEDF7%27%3E%3Cpath%20d%3D%27M12%202.9c2.96%200%203.31.01%204.48.07%201.08.05%201.67.23%202.06.38.52.2.89.44%201.28.83.39.39.63.76.83%201.28.15.39.33.98.38%202.06.06%201.17.07%201.52.07%204.48s-.01%203.31-.07%204.48c-.05%201.08-.23%201.67-.38%202.06-.2.52-.44.89-.83%201.28-.39.39-.76.63-1.28.83-.39.15-.98.33-2.06.38-1.17.06-1.52.07-4.48.07s-3.31-.01-4.48-.07c-1.08-.05-1.67-.23-2.06-.38-.52-.2-.89-.44-1.28-.83a3.4%203.4%200%200%201-.83-1.28c-.15-.39-.33-.98-.38-2.06C2.91%2015.31%202.9%2014.96%202.9%2012s.01-3.31.07-4.48c.05-1.08.23-1.67.38-2.06.2-.52.44-.89.83-1.28.39-.39.76-.63%201.28-.83.39-.15.98-.33%202.06-.38C8.69%202.91%209.04%202.9%2012%202.9Zm0%203.02A6.08%206.08%200%201%200%2018.08%2012%206.08%206.08%200%200%200%2012%205.92Zm0%2010.03A3.95%203.95%200%201%201%2015.95%2012%203.95%203.95%200%200%201%2012%2015.95Zm7.74-10.27a1.42%201.42%200%201%201-1.42-1.42%201.42%201.42%200%200%201%201.42%201.42Z%27%2F%3E%3C%2Fsvg%3E")}
.footer .block-social li.tiktok a{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27%23DDEDF7%27%3E%3Cpath%20d%3D%27M16.6%205.82A4.28%204.28%200%200%201%2015.54%203h-3.1v12.4a2.59%202.59%200%201%201-1.82-2.47v-3.15a5.7%205.7%200%201%200%204.92%205.64V9.4a7.35%207.35%200%200%200%204.3%201.38V7.68a4.28%204.28%200%200%201-3.24-1.86Z%27%2F%3E%3C%2Fsvg%3E")}
.footer .block-social li.twitter a{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27%23DDEDF7%27%3E%3Cpath%20d%3D%27M18.9%203H22l-6.8%207.8L23%2021h-6.3l-4.9-6.4L6.2%2021H3l7.3-8.3L2.7%203H9l4.4%205.9Zm-1.1%2016h1.7L8.3%204.8H6.5Z%27%2F%3E%3C%2Fsvg%3E")}
.footer .block-social li.linkedin a{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27%23DDEDF7%27%3E%3Cpath%20d%3D%27M6.94%208.5H3.9V21h3.04ZM5.42%203a1.77%201.77%200%201%200%200%203.53%201.77%201.77%200%200%200%200-3.53ZM20.1%2013.2c0-3.2-1.7-4.7-4-4.7a3.5%203.5%200%200%200-3.15%201.73V8.5H9.9V21h3.05v-6.6c0-1.74.33-3.42%202.48-3.42%202.12%200%202.15%201.98%202.15%203.53V21h3.05Z%27%2F%3E%3C%2Fsvg%3E")}

/* --- Bloc « Informations » (ps_contactinfo) ------------------------------
   classic le prévoit pour un pied de page blanc : texte #7a7a7a, titre
   #232323, flèches d'accordéon #232323. Sur le fond marine, le titre et les
   flèches disparaissent et le texte passe sous le seuil de contraste.
   On reprend ici la même typographie que les autres colonnes. */
.footer .block-contact{padding:0; font-size:.95rem; color:var(--pk-surface-70)}
.footer .block-contact a{color:var(--pk-sky)}
.footer .block-contact a:hover{color:var(--pk-soleil)}
.footer .block-contact .block-contact-title{
  font-family:var(--pk-body); font-weight:700; font-size:var(--pk-t-label);
  letter-spacing:.16em; text-transform:uppercase; color:var(--pk-soleil);
  margin:0 0 var(--pk-s4)}
.footer .block-contact #contact-infos{padding:0; line-height:1.7}

/* Sous 768px, classic replie ce bloc derrière un accordéon dont le bouton est
   noir sur fond marine. Le pied de page est déjà en une colonne à cette
   largeur : on garde le contenu ouvert et on réutilise le titre mobile comme
   intitulé de colonne, sans flèches ni interaction.
   #contact-infos (id) l'emporte sur « .links .collapse{display:none} ». */
@media (max-width:767px){
  .footer .block-contact #contact-infos{display:block}
  .footer .block-contact .title{
    padding:0; border:0; cursor:auto; pointer-events:none; margin-bottom:var(--pk-s4)}
  .footer .block-contact .title .navbar-toggler{display:none}
  .footer .block-contact .title .h3{
    font-family:var(--pk-body); font-weight:700; font-size:var(--pk-t-label);
    letter-spacing:.16em; text-transform:uppercase; color:var(--pk-soleil); margin:0}
}

.footer .pay{display:flex; flex-direction:row; flex-wrap:wrap; gap:.4rem;
  margin:var(--pk-s4) 0 0; list-style:none; padding:0}
.footer .pay li{font-size:.68rem; font-weight:700; letter-spacing:.06em; padding:.35rem .55rem;
  border-radius:var(--pk-r-sm); background:var(--pk-surface); color:var(--pk-ink)}
.footer__bottom{border-top:1px solid rgba(251,243,227,.18); padding-block:var(--pk-s5);
  display:flex; justify-content:space-between; gap:var(--pk-s4); flex-wrap:wrap;
  font-size:.85rem; color:var(--pk-surface-70)}
.footer__bottom a{font-size:inherit; color:var(--pk-surface-70); text-decoration:underline;
  text-underline-offset:.2em}
.footer__bottom a:hover{color:var(--pk-soleil)}
.footer__credit{white-space:nowrap}

@media (max-width:900px){
  .footer__grid{grid-template-columns:repeat(2,1fr)}
  /* Le placement explicite ne vaut que pour la grille à quatre colonnes. */
  .footer__brand, .footer .block-social, .footer .block-contact,
  .footer__legal, .footer__help{grid-column:auto; grid-row:auto}
  .footer__grid > .col-md-6.links{grid-column:1 / -1; grid-row:auto}
}
@media (max-width:560px){
  .footer__grid{grid-template-columns:1fr}
  .footer__credit{white-space:normal}
}

/* ============================================================ Fiche produit */
.pdp{display:grid; grid-template-columns:1.15fr 1fr; gap:clamp(2rem,4vw,4rem);
  padding-block:var(--pk-s7) var(--pk-s8); align-items:start}
@media (max-width:900px){.pdp{grid-template-columns:1fr}}
.gallery{display:flex; flex-direction:column; gap:var(--pk-s3)}

.pdp__info{display:flex; flex-direction:column; gap:var(--pk-s4)}
.pdp__info h1{font-size:var(--pk-t-h1)}
.pdp__price{display:flex; align-items:baseline; gap:.7rem; flex-wrap:wrap}
.pdp__price .amount{font-family:var(--pk-display); font-weight:700; font-size:2.6rem;
  color:var(--pk-abricot-deep); line-height:1; font-variant-numeric:tabular-nums}
.pdp__price .tax{font-size:.85rem; color:var(--pk-muted)}
.qty{display:flex; align-items:center; border:2px solid var(--pk-ink); border-radius:var(--pk-r-pill);
  overflow:hidden}
.qty button{width:44px; border:0; background:transparent; font-size:1.3rem; cursor:pointer; line-height:1}
.qty button:hover{background:var(--pk-sky-deep)}
.qty input{width:44px; border:0; background:transparent; text-align:center; font:inherit;
  font-weight:700; font-variant-numeric:tabular-nums; -moz-appearance:textfield}
.qty input::-webkit-outer-spin-button,.qty input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.reassure{list-style:none; margin:0; padding:var(--pk-s4) 0 0; border-top:1px solid var(--pk-line);
  display:flex; flex-direction:column; gap:.55rem; font-size:.92rem; color:var(--pk-ink-70)}
.reassure li{display:flex; gap:.6rem}
.reassure li::before{content:""; width:7px; height:7px; margin-top:.6em; flex:none; border-radius:999px;
  background:var(--pk-lagon)}

details.acc{border-top:1px solid var(--pk-line)}
details.acc:last-of-type{border-bottom:1px solid var(--pk-line)}
details.acc summary{cursor:pointer; list-style:none; padding:1.05rem 0; font-family:var(--pk-display);
  font-weight:700; font-size:1.08rem; display:flex; justify-content:space-between; align-items:center;
  gap:1rem}
details.acc summary::-webkit-details-marker{display:none}
details.acc summary::after{content:"+"; font-size:1.4rem; color:var(--pk-abricot-deep); line-height:1}
details.acc[open] summary::after{content:"–"}
details.acc .acc__body{padding-bottom:1.15rem; font-size:.97rem; color:var(--pk-ink-70);
  max-width:var(--pk-measure)}
details.acc ul{margin:0; padding-left:1.1rem; display:flex; flex-direction:column; gap:.35rem}

/* ============================================================ Listing catégorie */
.breadcrumb{display:flex; gap:.5rem; font-size:.85rem; color:var(--pk-muted); margin-bottom:var(--pk-s3);
  flex-wrap:wrap; list-style:none; padding:0}
.breadcrumb li+li::before{content:"›"; margin-right:.5rem; color:var(--pk-line)}
@media (max-width:820px){}

/* ============================================================ Contenu CMS
   Le texte courant garde une largeur de lecture confortable ; les blocs
   structurants collés depuis le back-office (.story, .split, .grid-3, .masonry)
   prennent toute la largeur. Contenus prêts à coller : dossier contenus-cms/. */
.cms-content{display:flex; flex-direction:column; gap:var(--pk-s5)}
.cms-content > p,
.cms-content > ul,
.cms-content > ol,
.cms-content > h2,
.cms-content > h3,
.cms-content > blockquote{max-width:var(--pk-measure)}
.cms-content > p{font-size:1.08rem; line-height:1.7}
.cms-content h2{font-size:var(--pk-t-h2); margin-top:var(--pk-s5)}
.cms-content h3{font-size:var(--pk-t-h3); margin-top:var(--pk-s4)}
.cms-content ul,.cms-content ol{padding-left:1.2rem; display:flex; flex-direction:column; gap:.4rem}
.cms-content img{border-radius:var(--pk-r-md)}
.cms-content a{color:var(--pk-lagon-deep)}

/* ============================================================ À propos */
.story{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(2rem,4vw,4rem);
  align-items:start}
@media (max-width:900px){.story{grid-template-columns:1fr}}
.story__text{display:flex; flex-direction:column; gap:var(--pk-s5); max-width:var(--pk-measure)}
.story__text p{font-size:1.08rem; line-height:1.7}
.dropcap::first-letter{font-family:var(--pk-display); font-weight:700; font-size:3.6em; float:left;
  line-height:.82; padding-right:.09em; color:var(--pk-abricot-deep)}
.pullquote{font-family:var(--pk-display); font-weight:600; font-size:clamp(1.4rem,2.5vw,2rem);
  line-height:1.18; letter-spacing:-.02em; color:var(--pk-lagon-deep); border-left:4px solid var(--pk-soleil);
  padding-left:var(--pk-s5)}
.founders{display:grid; grid-template-columns:repeat(3,1fr); gap:var(--pk-s4); margin-top:var(--pk-s5)}
.founder{border-top:2px solid var(--pk-ink); padding-top:var(--pk-s3)}
.founder b{font-family:var(--pk-display); font-size:1.15rem; display:block}
.founder span{font-size:.85rem; color:var(--pk-muted)}
.masonry{display:grid; grid-template-columns:1fr 1fr; gap:var(--pk-s4)}
.masonry img{border-radius:var(--pk-r-md); width:100%; height:100%; object-fit:cover}
.masonry figure{margin:0}
.masonry figure:first-child{grid-column:1/-1}

/* ==========================================================================
   4. Raccords PrestaShop — restyle du balisage produit par les modules
      classic (ps_mainmenu, ps_searchbar, ps_shoppingcart, ps_customersignin,
      ps_facetedsearch, ps_emailsubscription…) et des pages du tunnel.
      Aucun de ces modules n'est modifié : on ne fait que les habiller.
   ========================================================================== */

/* --- Menu principal (ps_mainmenu) ---------------------------------------- */
#_desktop_top_menu .top-menu{display:flex; gap:.35rem; margin:0; padding:0; list-style:none;
  align-items:center; flex-wrap:wrap}
#_desktop_top_menu .top-menu a{font-family:var(--pk-body); font-weight:500; font-size:.95rem;
  color:var(--pk-ink); text-decoration:none; padding:.5rem .8rem;
  border-radius:var(--pk-r-pill); white-space:nowrap; display:inline-block}
#_desktop_top_menu .top-menu a:hover{background:var(--pk-sky-deep)}
#_desktop_top_menu .top-menu li.current > a,
#_desktop_top_menu .top-menu a.current{background:var(--pk-lagon); color:var(--pk-surface)}
#_desktop_top_menu .sub-menu{background:var(--pk-surface); border:1px solid var(--pk-line);
  border-radius:var(--pk-r-md); box-shadow:none; padding:.6rem}
#_desktop_top_menu .popover{border:0}

/* --- Recherche (ps_searchbar) -------------------------------------------- */
#search_widget form{display:flex; align-items:center; gap:.4rem}
#search_widget input[type="text"]{font:inherit; font-size:.95rem; padding:.55rem 1rem;
  border:1px solid var(--pk-line); border-radius:var(--pk-r-pill);
  background:var(--pk-surface); color:var(--pk-ink); min-width:200px}
#search_widget input[type="text"]::placeholder{color:var(--pk-muted)}
#search_widget button[type="submit"]{border:0; background:none; cursor:pointer; padding:.4rem;
  color:var(--pk-ink)}
.ui-autocomplete{background:var(--pk-surface); border:1px solid var(--pk-line);
  border-radius:var(--pk-r-md); overflow:hidden; z-index:200}
.ui-autocomplete .ui-menu-item a:hover{background:var(--pk-sky)}

/* --- Panier et compte (ps_shoppingcart, ps_customersignin) ---------------- */
#_desktop_cart, #_desktop_user_info{display:flex; align-items:center}
#_desktop_cart a, #_desktop_user_info a{display:inline-flex; align-items:center; gap:.45rem;
  font-size:.92rem; font-weight:600; color:var(--pk-ink); text-decoration:none;
  padding:.5rem .8rem; border-radius:var(--pk-r-pill)}
#_desktop_cart a:hover, #_desktop_user_info a:hover{background:var(--pk-sky-deep)}
#_desktop_cart .cart-products-count{background:var(--pk-abricot-deep); color:#fff;
  font-size:.7rem; font-weight:700; padding:.05rem .45rem; border-radius:999px; line-height:1.5}
.blockcart.inactive .cart-products-count{display:none}

/* --- Fil d'Ariane -------------------------------------------------------- */
.breadcrumb ol{display:flex; flex-wrap:wrap; gap:.5rem; list-style:none; margin:0; padding:0;
  font-size:.85rem; color:var(--pk-muted)}
.breadcrumb li+li::before{content:"›"; margin-right:.5rem; color:var(--pk-line)}
.breadcrumb a{color:var(--pk-muted); text-decoration:none}
.breadcrumb a:hover{color:var(--pk-ink); text-decoration:underline}

/* --- Listing catégorie --------------------------------------------------- */
#products, #js-product-list{margin-block:var(--pk-s5)}
#products .products, #js-product-list .products{display:grid;
  grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:var(--pk-s5)}
#js-product-list-header h1, .block-category h1{font-family:var(--pk-display); font-weight:600;
  font-size:var(--pk-t-h1); letter-spacing:-.022em}
#js-product-list-top{display:flex; justify-content:space-between; align-items:center;
  gap:var(--pk-s4); flex-wrap:wrap; margin-bottom:var(--pk-s5); font-size:.92rem;
  color:var(--pk-muted); border-bottom:1px solid var(--pk-line); padding-bottom:var(--pk-s4)}
.products-sort-order .select-title{display:inline-flex; align-items:center; gap:.5rem;
  border:1px solid var(--pk-line); border-radius:var(--pk-r-pill); padding:.5rem .95rem;
  background:var(--pk-surface); color:var(--pk-ink); cursor:pointer}
.products-sort-order .dropdown-menu{background:var(--pk-surface); border:1px solid var(--pk-line);
  border-radius:var(--pk-r-md); padding:.4rem}
.pagination{display:flex; align-items:center; justify-content:space-between; gap:var(--pk-s4);
  flex-wrap:wrap; margin-top:var(--pk-s6); padding-top:var(--pk-s5);
  border-top:1px solid var(--pk-line); font-size:.92rem}
.pagination .page-list{display:flex; gap:.3rem; list-style:none; margin:0; padding:0}
.pagination .page-list a{display:grid; place-items:center; min-width:40px; height:40px;
  padding:0 .6rem; border-radius:var(--pk-r-pill); color:var(--pk-ink); text-decoration:none;
  font-weight:600}
.pagination .page-list a:hover{background:var(--pk-sky-deep)}
.pagination .page-list .current a{background:var(--pk-lagon); color:var(--pk-surface)}

/* --- Facettes (ps_facetedsearch) ----------------------------------------- */
#search_filters, #search_filters_brands, #search_filters_suppliers{background:transparent;
  padding:0; border:0}
#search_filters .facet{border-bottom:1px solid var(--pk-line); padding-bottom:var(--pk-s4);
  margin-bottom:var(--pk-s4)}
#search_filters .facet-title, #search_filters .h6{font-family:var(--pk-body); font-weight:700;
  font-size:var(--pk-t-label); letter-spacing:.16em; text-transform:uppercase;
  color:var(--pk-muted); margin-bottom:var(--pk-s3)}
#search_filters .facet-label{display:flex; align-items:center; gap:.55rem; font-size:.94rem;
  padding:.28rem 0}
#search_filters .facet-label a{color:var(--pk-ink); text-decoration:none}
#search_filters input[type="checkbox"], #search_filters input[type="radio"]{accent-color:var(--pk-lagon);
  width:17px; height:17px}
.active_filters{background:var(--pk-sky-deep); border-radius:var(--pk-r-md);
  padding:var(--pk-s4); margin-bottom:var(--pk-s5)}
.active_filters .filter-block{display:inline-flex; align-items:center; gap:.4rem;
  background:var(--pk-surface); border:1px solid var(--pk-line); border-radius:var(--pk-r-pill);
  padding:.3rem .75rem; font-size:.85rem; margin:.2rem}

/* --- Fiche produit : partials classic ------------------------------------ */
.product-prices .current-price span,
.product-price, .current-price-value{font-family:var(--pk-display); font-weight:700;
  font-size:2.4rem; line-height:1; color:var(--pk-abricot-deep); font-variant-numeric:tabular-nums}
.product-prices .regular-price{color:var(--pk-muted); text-decoration:line-through;
  font-size:1.05rem; margin-left:.5rem}
.product-prices .discount{background:var(--pk-abricot-deep); color:#fff; font-weight:700;
  font-size:.78rem; padding:.25rem .6rem; border-radius:var(--pk-r-pill); margin-left:.5rem}
.product-quantities, .product-minimal-quantity{font-size:.88rem; color:var(--pk-muted)}
.product-actions .add-to-cart{background:var(--pk-lagon); color:var(--pk-surface);
  border:2px solid var(--pk-lagon); border-radius:var(--pk-r-pill); font-weight:700;
  padding:.95rem 1.7rem; cursor:pointer; transition:background-color .18s, transform .18s}
.product-actions .add-to-cart:hover:not([disabled]){background:var(--pk-lagon-deep);
  border-color:var(--pk-lagon-deep); transform:translateY(-2px)}
.product-actions .add-to-cart[disabled]{opacity:.5; cursor:not-allowed}
.product-add-to-cart .product-quantity{display:flex; gap:.6rem; align-items:stretch;
  flex-wrap:wrap; margin-block:var(--pk-s4)}
.product-quantity .qty{display:flex; align-items:center; border:2px solid var(--pk-ink);
  border-radius:var(--pk-r-pill); overflow:hidden; background:var(--pk-surface)}
.product-quantity input.input-group{width:56px; border:0; background:transparent; text-align:center;
  font:inherit; font-weight:700; font-variant-numeric:tabular-nums}
.product-variants .product-variants-item{margin-bottom:var(--pk-s4)}
.product-variants label{font-family:var(--pk-body); font-weight:700; font-size:var(--pk-t-label);
  letter-spacing:.14em; text-transform:uppercase; color:var(--pk-muted); display:block;
  margin-bottom:.5rem}
.product-availability{display:inline-flex; align-items:center; gap:.4rem; font-size:.85rem;
  font-weight:700; letter-spacing:.1em; text-transform:uppercase; padding:.4rem .75rem;
  border-radius:var(--pk-r-pill); background:var(--pk-lagon); color:var(--pk-surface)}
.product-unavailable .product-availability,
.product-availability.product-unavailable{background:var(--pk-ink); color:var(--pk-soleil)}
.product-flags{list-style:none; margin:0; padding:0; display:flex; gap:.4rem; flex-wrap:wrap}
.product-flags li{font-size:var(--pk-t-label); font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; padding:.4rem .75rem; border-radius:var(--pk-r-pill);
  background:var(--pk-soleil); color:var(--pk-ink)}
.product-flags li.out_of_stock{background:var(--pk-ink); color:var(--pk-soleil)}
.tabs .nav-tabs{display:none} /* onglets remplacés par des accordéons, cf. product.tpl */
.images-container .product-cover img{width:100%; border-radius:var(--pk-r-lg);
  background:var(--pk-sky)}
.product-images li img{border:1px solid var(--pk-line); border-radius:var(--pk-r-md);
  background:var(--pk-sky); cursor:pointer}
.product-images li.selected img{border-color:var(--pk-ink); border-width:2px}

/* --- Panier et tunnel ---------------------------------------------------- */
.cart-grid{display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);
  gap:clamp(1.5rem,3vw,2.5rem); align-items:start}
@media (max-width:900px){.cart-grid{grid-template-columns:1fr}}

/* classic construit le panier avec ses colonnes Bootstrap : .cart-grid-body
   porte col-lg-8, .cart-grid-right col-lg-4, soit width:66,67% et 33,33%.
   Sur des éléments de grille CSS, ces pourcentages se résolvent contre la
   zone de grille et non contre le conteneur : la colonne de droite tombait à
   141 px sur 424 disponibles, d'où le récapitulatif écrasé, le bouton
   « Commander » réduit à une pastille et le texte à un mot par ligne. */
.cart-grid > [class*="col-"]{
  float:none; width:auto; max-width:none; flex:none; padding-left:0; padding-right:0}

/* Ligne produit : même problème à l'intérieur (col-md-3 / col-md-4 / col-md-5,
   puis une .row imbriquée). On la reprend en grille explicite. */
.cart-item .product-line-grid{display:grid;
  grid-template-columns:96px minmax(0,1fr) auto; gap:var(--pk-s4); align-items:center}
.cart-item .product-line-grid > [class*="col-"]{
  float:none; width:auto; max-width:none; flex:none; padding:0}
.cart-item .product-line-grid-left img{width:96px; height:auto; display:block;
  border-radius:var(--pk-r-md)}
.cart-item .product-line-grid-right .row{display:flex; align-items:center;
  justify-content:flex-end; gap:var(--pk-s4); margin:0}
.cart-item .product-line-grid-right .row > [class*="col-"]{
  float:none; width:auto; max-width:none; flex:none; padding:0}
.cart-item .product-line-grid-right .price{white-space:nowrap}
.cart-item .cart-line-product-actions{text-align:right}

/* Le champ quantité du panier n'est pas notre composant .qty (bouton −,
   champ, bouton +) : c'est une colonne Bootstrap qui porte la classe .qty et
   ne contient qu'un input. Notre habillage en pilule la transformait en
   grosse bulle vide. */
.cart-item .qty{display:block; border:0; border-radius:0; padding:0; background:none}
.cart-item .qty input{width:74px; height:auto; padding:.5rem; text-align:center;
  font:inherit; color:var(--pk-ink); background:var(--pk-surface);
  border:2px solid var(--pk-ink); border-radius:var(--pk-r-md)}

/* .product-price est calibré pour la fiche produit (2,4 rem) : beaucoup trop
   gros sur une ligne de panier. */
.cart-item .product-price, .cart-item .current-price .price{font-size:1.1rem}

@media (max-width:640px){
  .cart-item .product-line-grid{grid-template-columns:72px minmax(0,1fr)}
  .cart-item .product-line-grid-left img{width:72px}
  .cart-item .product-line-grid-right{grid-column:1 / -1}
}
.cart-container, .cart-summary, .checkout-step, .block-promo{background:var(--pk-surface);
  border:1px solid var(--pk-line); border-radius:var(--pk-r-lg)}
.cart-summary, .checkout-step{padding:var(--pk-s5)}
.cart-item{padding:var(--pk-s4) 0; border-bottom:1px solid var(--pk-line)}
.cart-summary-line{display:flex; justify-content:space-between; gap:1rem; padding:.45rem 0;
  font-size:.95rem}
.cart-summary-line.cart-total{border-top:1px solid var(--pk-line); margin-top:.6rem;
  padding-top:.9rem; font-family:var(--pk-display); font-weight:700; font-size:1.2rem}
.cart-detailed-actions .btn, .checkout .btn, #checkout .btn-primary,
.continue, .cart-content-btn .btn{background:var(--pk-lagon); color:var(--pk-surface);
  border:2px solid var(--pk-lagon); border-radius:var(--pk-r-pill); font-weight:700;
  padding:.9rem 1.6rem; text-decoration:none; display:inline-flex; align-items:center;
  justify-content:center; cursor:pointer}
.cart-detailed-actions .btn:hover, #checkout .btn-primary:hover{background:var(--pk-lagon-deep);
  border-color:var(--pk-lagon-deep)}
.checkout-step .step-title{font-family:var(--pk-display); font-weight:600; font-size:1.3rem;
  letter-spacing:-.018em; display:flex; align-items:center; gap:.7rem}
.checkout-step .step-number{display:grid; place-items:center; width:34px; height:34px;
  border-radius:999px; background:var(--pk-sky-deep); color:var(--pk-ink);
  font-family:var(--pk-display); font-weight:700; font-size:1rem}
.checkout-step.-current .step-number{background:var(--pk-lagon); color:var(--pk-surface)}
.checkout-step.-complete .step-number{background:var(--pk-ink); color:var(--pk-soleil)}
.delivery-option, .payment-option{border:1px solid var(--pk-line); border-radius:var(--pk-r-md);
  padding:var(--pk-s4); margin-bottom:.7rem}
.delivery-option:hover, .payment-option:hover{border-color:var(--pk-ink)}

/* --- Formulaires (compte, adresses, contact) ----------------------------- */
.form-control, input[type="text"], input[type="email"], input[type="password"],
input[type="tel"], input[type="number"], select, textarea{font:inherit; width:100%;
  padding:.8rem 1.05rem; border:1px solid var(--pk-line); border-radius:var(--pk-r-md);
  background:var(--pk-surface); color:var(--pk-ink)}
.form-control:focus, select:focus, textarea:focus{border-color:var(--pk-lagon); outline:0;
  box-shadow:0 0 0 3px rgba(30,122,102,.18)}
.form-control-label, label{font-weight:600; font-size:.92rem; color:var(--pk-ink);
  display:block; margin-bottom:.35rem}
.form-group{margin-bottom:var(--pk-s4)}
.form-control-comment{font-size:.82rem; color:var(--pk-muted)}
.custom-checkbox input[type="checkbox"], .custom-radio input[type="radio"]{accent-color:var(--pk-lagon)}
.page-authentication, .page-registration, .page-customer-account, .page-addresses,
.page-order-detail, .page-cms, .page-content{background:var(--pk-surface);
  border:1px solid var(--pk-line); border-radius:var(--pk-r-lg); padding:clamp(1.3rem,3vw,2.4rem)}
#history .orders .order, .address{border:1px solid var(--pk-line); border-radius:var(--pk-r-md);
  padding:var(--pk-s4); margin-bottom:.8rem; background:var(--pk-surface)}
.links-list a, .account-links a{display:flex; align-items:center; gap:.7rem;
  border:1px solid var(--pk-line); border-radius:var(--pk-r-md); padding:var(--pk-s4);
  text-decoration:none; color:var(--pk-ink); background:var(--pk-surface)}
.links-list a:hover, .account-links a:hover{border-color:var(--pk-ink)}

/* --- Alertes ------------------------------------------------------------- */
.alert{border:1px solid var(--pk-line); border-radius:var(--pk-r-md); padding:var(--pk-s4);
  background:var(--pk-surface); font-size:.95rem}
.alert-success{border-color:var(--pk-lagon); background:rgba(30,122,102,.10)}
.alert-danger, .alert-warning{border-color:var(--pk-abricot-deep);
  background:rgba(176,73,28,.10)}
.js-invalid-feedback-browser, .help-block li{color:var(--pk-abricot-deep); font-size:.86rem}

/* --- Newsletter (ps_emailsubscription) dans le footer --------------------- */
.block_newsletter form{display:flex; gap:.5rem; flex-wrap:wrap}
.block_newsletter input[type="email"]{border:2px solid var(--pk-ink); border-radius:var(--pk-r-pill);
  background:#FFFDF9; min-width:min(300px,70vw)}
.block_newsletter .btn{background:transparent; color:var(--pk-ink); border:2px solid var(--pk-ink);
  border-radius:var(--pk-r-pill); font-weight:700; padding:.85rem 1.5rem; cursor:pointer}
.block_newsletter .btn:hover{background:var(--pk-ink); color:var(--pk-sky)}

/* --- Modale et divers ---------------------------------------------------- */
.modal-content{background:var(--pk-surface); border:1px solid var(--pk-line);
  border-radius:var(--pk-r-lg)}
.js-modal-message, #blockcart-modal .modal-body{color:var(--pk-ink)}
#footer .footer-container{background:transparent}
