/*
Theme Name: Woodzy Noël
Theme URI: https://woodzy.fr/noel/
Author: Woodzy
Author URI: https://woodzy.fr/
Description: Thème bloc sur mesure pour la landing de Noël du Sapin lumineux Woodzy. DA « Noël givré » réchauffée : Unbounded, givre #C3D3E1, neige #FFFFFF, nuit #262626, halos de lumière chaude, stickers et doodles. Front-end uniquement : WooCommerce gère panier, paiement et stock.
Version: 1.14.5
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: woodzy-noel
Tags: block-theme, full-site-editing, e-commerce, one-column
*/

/* ==========================================================================
   Woodzy · Sapin lumineux — DA « Noël givré »
   Registre relevé sur les visuels WF-1.E : Unbounded seule, #C3D3E1 / #FFFFFF / #262626,
   champs pleins bord à bord, formes blanches organiques, stickers, doodles à main levée.
   ========================================================================== */


:root {
  --givre: #C3D3E1;
  --neige: #FFFFFF;
  --nuit: #262626;
  /* vert sapin : la couleur de Noël, en grands aplats (en-tête, héros, cadeau, appel final) et en accents */
  --sapin: #1D4530;
  --sapin-nuit: #143323;
  /* teintes douces pour casser le blanc pur sur le vert : vert clair et jaune pâle (la couleur de la lumière) */
  --sapin-clair: #B4D7BD;
  --creme: #FBEFCF;
  --wrap: 1280px;
  --gout: clamp(20px, 4.6vw, 64px);
  --blob: 58% 42% 46% 54% / 46% 52% 48% 54%;
  --ombre: 0 22px 44px -18px rgba(38, 38, 38, .38);
  /* lumière chaude du sapin : réservée aux halos et aux ampoules, jamais au texte ni aux boutons */
  --lueur: 255, 198, 118;
  --lueur-creme: 255, 238, 210;
}

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--givre); color: var(--nuit);
  font-family: "Unbounded", system-ui, sans-serif; font-weight: 350;
  font-size: 15.5px; line-height: 1.72; letter-spacing: -.005em;
  -webkit-font-smoothing: antialiased;
}
/* rien ne doit créer de défilement horizontal (ex. : tiroir du mini-panier WooCommerce, rangé hors écran) */
html, body { overflow-x: clip; }
:is(.hero, .gravure, .rarete, .nuit, .cadeau, .montage, .comparatif, .faq, .atelier, .final), .pied { overflow-x: clip; }
img { max-width: 100%; height: auto; display: block; }
h1, h2, h3 { margin: 0; text-wrap: balance; hyphens: none; letter-spacing: -.035em; }
p, ul, ol, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
a { color: inherit; }
strong { font-weight: 800; }
:where(a, button, summary, [tabindex]):focus-visible { outline: 3px solid var(--nuit); outline-offset: 4px; border-radius: 8px; }
.nuit :where(a, summary):focus-visible, .atelier :where(a):focus-visible, .pied :where(a):focus-visible,
:is(.entete, .hero, .cadeau, .final) :where(a):focus-visible { outline-color: var(--neige); }

.wrap { width: 100%; max-width: calc(var(--wrap) + 2 * var(--gout)); margin-inline: auto; padding-inline: var(--gout); }

/* ---------- doodles (masques : la couleur suit currentColor) ---------- */
.doodle, .hero-grille::after, .hero-visuel::before, .hero-visuel::after,
.pastille-stock::before, .cote::before, .titre-stock::after, .stock-droite::before,
.nuit-texte::before, .cadeau-carte::before, .cadeau-carte::after, .montage-intro::after,
.etape:not(:last-child)::after, .final-texte::before, .final-visuel::before, .comparatif .wrap::before,
.titre-faq::after, .surtitre::before, .idees li::before {
  content: ""; display: block; background: currentColor;
  -webkit-mask: center / contain no-repeat; mask: center / contain no-repeat;
}

/* ---------- surtitre : pastille organique blanche ---------- */
.surtitre {
  position: relative; display: inline-flex; align-items: center; gap: 10px;
  background: var(--neige); border-radius: var(--blob);
  padding: 9px 20px 10px 16px; font-size: 13px; font-weight: 600; letter-spacing: 0; color: var(--nuit);
  margin-bottom: 22px; transform: rotate(-2deg);
}
.surtitre::before { width: 18px; height: 18px; -webkit-mask-image: url("assets/img/doodles/etincelle.svg"); mask-image: url("assets/img/doodles/etincelle.svg"); }
.surtitre-nuit { background: transparent; color: var(--neige); padding-inline: 0; transform: none; }

/* ---------- boutons (core/buttons + core/button) ---------- */
.wp-block-buttons.boutons, .wp-block-buttons.entete-cta, .wp-block-buttons.barre-bouton { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; }
.wp-block-button[class*="bouton-"] .wp-block-button__link {
  display: inline-flex; align-items: center; gap: 12px; text-decoration: none;
  font-family: inherit; font-weight: 650; font-size: 15px; line-height: 1.2; letter-spacing: -.01em;
  border-radius: 999px; transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, color .2s ease;
}
.wp-block-button.bouton-plein .wp-block-button__link { background: var(--sapin); color: var(--neige); padding: 19px 30px 20px; }
/* sur le vert sapin, le bouton devient neige : c'est l'élément le plus clair de l'écran */
:is(.entete, .hero, .final) .wp-block-button.bouton-plein .wp-block-button__link { background: var(--creme); color: var(--sapin); }
.hero .wp-block-button.bouton-plein .wp-block-button__link { font-size: 15px; font-weight: 600; padding: 18px 28px 19px; }
.wp-block-button.bouton-plein .wp-block-button__link::after { content: "→"; font-weight: 500; transition: transform .2s ease; }
.wp-block-button.bouton-plein .wp-block-button__link:hover { transform: translateY(-2px); box-shadow: 0 14px 24px -12px rgba(20,51,35,.65); }
.wp-block-button.bouton-plein .wp-block-button__link:hover::after { transform: translateX(4px); }
.wp-block-button.bouton-petit .wp-block-button__link { padding: 12px 20px 13px; font-size: 13.5px; white-space: nowrap; }
.wp-block-button.bouton-petit .wp-block-button__link::after { content: none; }
.wp-block-button.bouton-petit .wp-block-button__link { gap: 0; }
.cta-prix { display: contents; white-space: pre; } /* le prix fait partie du même libellé (pas un élément flex séparé) */
.wp-block-button.bouton-grand .wp-block-button__link { padding: 23px 38px 24px; font-size: 17px; }
.wp-block-button.bouton-lien .wp-block-button__link { background: none; color: var(--nuit); font-weight: 600; font-size: 14px; padding: 6px 0 12px; position: relative; border-radius: 0; }
.wp-block-button.bouton-lien .wp-block-button__link::before {
  content: ""; position: absolute; left: -4px; right: -6px; bottom: 0; height: 12px; background: currentColor;
  -webkit-mask: url("assets/img/doodles/souligne.svg") center / 100% 100% no-repeat; mask: url("assets/img/doodles/souligne.svg") center / 100% 100% no-repeat;
}
.wp-block-button.bouton-clair .wp-block-button__link { background: var(--neige); color: var(--nuit); }

/* ---------- photos collées & produit en sticker ---------- */
.photo { position: absolute; overflow: hidden; box-shadow: var(--ombre); }
/* photos collées : un cadre neige les détache des fonds sombres (vert, nuit) */
.wp-block-image.photo:not(.photo-fenetre) { border: 7px solid var(--neige); border-radius: 4px; box-shadow: 0 24px 44px -20px rgba(10, 30, 20, .7); }
.wp-block-image.photo img { width: 100%; height: 100%; object-fit: cover; }
.produit { position: absolute; z-index: 3; }
/* halo chaud derrière le produit : la lumière du sapin déborde sur la page */
.wp-block-image.produit::before {
  content: ""; position: absolute; z-index: -1; inset: -10% -74% -14%; pointer-events: none;
  background: radial-gradient(closest-side, rgba(var(--lueur-creme), 1), rgba(var(--lueur), .62) 40%, rgba(var(--lueur), .2) 68%, rgba(var(--lueur), 0));
}
.wp-block-image.produit img { width: 100%; height: auto; }
/* sur le vert sapin, la lumière se fond en lumière dorée (soft-light) au lieu de virer au kaki */
:is(.hero, .final) .wp-block-image.produit::before { inset: -6% -60% -10%; mix-blend-mode: soft-light;
  background: radial-gradient(closest-side, rgba(255,226,170,1), rgba(255,200,120,.9) 35%, rgba(255,190,100,.4) 60%, rgba(255,190,100,0) 78%); }
.wp-block-image.produit figcaption { margin: 0;
  position: absolute; left: 50%; bottom: -6px; transform: translateX(-50%) rotate(-1.5deg);
  white-space: nowrap; font-size: 11.5px; font-weight: 500; letter-spacing: 0;
  background: var(--neige); color: var(--nuit); padding: 6px 13px 7px; border-radius: var(--blob);
}

/* ==========================================================================
   EN-TÊTE
   ========================================================================== */
.wp-site-blocks > header.wp-block-template-part { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 50; }
.annonce { background: var(--sapin-nuit); color: var(--neige); }
.annonce-rangee { display: flex; justify-content: space-between; align-items: center; gap: 20px; min-height: 38px; }
.annonce-texte { font-size: 12.5px; font-weight: 400; letter-spacing: 0; }
.annonce-texte strong { font-weight: 700; }
.entete { background: var(--sapin); color: var(--neige); transition: box-shadow .25s ease, background-color .25s ease; }
.est-defile .entete { box-shadow: 0 1px 0 rgba(255,255,255,.08), 0 12px 28px -18px rgba(10,30,20,.7); }
.entete-rangee { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 76px; }
.marque { font-size: 27px; font-weight: 900; letter-spacing: -.06em; line-height: 1; }
.marque { text-transform: lowercase; margin: 0; }
.marque a { text-decoration: none; color: inherit; }
/* logo horizontal clair (bloc « Logo du site ») ; le titre texte ne sert que si aucun logo n'est défini */
.wp-block-site-logo.marque-logo { margin: 0; line-height: 0; flex: none; }
.wp-block-site-logo.marque-logo img { width: 136px; height: auto; }
.wp-block-site-logo.marque-logo + .wp-block-site-title.marque { display: none; }
.wp-block-navigation__container { display: flex; align-items: center; list-style: none; margin: 0; padding: 0; }
/* En-tête sans liens de navigation : le logo à gauche ; le compte, le panier et le bouton d'achat regroupés à droite.
   Le bloc de navigation reste dans le modèle, masqué : c'est à lui que WooCommerce accroche les icônes compte et panier
   (le retirer les ferait disparaître). Pour réafficher les liens : supprimer la règle « display: none » ci-dessous. */
.entete-rangee { justify-content: flex-end; gap: clamp(14px, 1.7vw, 24px); }
.entete-rangee > :is(.wp-block-site-logo, .wp-block-site-title) { margin-right: auto; }
.entete-rangee .wp-block-navigation.menu { display: none; }
.wp-block-navigation.menu .wp-block-navigation__container { gap: clamp(18px, 2.6vw, 38px); }
.wp-block-navigation.menu .wp-block-navigation-item__content { text-decoration: none; font-size: 13.5px; font-weight: 500; letter-spacing: 0; padding-block: 8px; background: linear-gradient(currentColor 0 0) left bottom / 0 2px no-repeat; transition: background-size .25s ease; }
.wp-block-navigation.menu .wp-block-navigation-item__content:hover { background-size: 100% 2px; }

/* ==========================================================================
   HÉROS — l'élément dominant : le sapin en sticker, sous la neige et la guirlande
   ========================================================================== */
.hero { position: relative; overflow: clip; padding-block: clamp(84px, 6.6vw, 100px) clamp(48px, 6vw, 96px);
  color: var(--neige); background: radial-gradient(70% 80% at 72% 55%, #24543A, rgba(36,84,58,0) 70%), var(--sapin); }
.hero .surtitre { background: var(--givre); }
/* pastille « Précommandes ouvertes » sortie du flux, en haut à gauche du bloc texte, comme un sticker */
@media (min-width: 861px) {
  .hero .surtitre { position: absolute; left: -30px; top: -74px; margin: 0; transform: rotate(-5deg); }
}
/* neige : deux couches (loin / près), animées en transform pour rester fluides */
.hero::before, .hero-grille::before, .intro::before, .nuit::after, .final::after {
  content: ""; position: absolute; left: 0; right: 0; top: -300px; bottom: 0; pointer-events: none;
  background-image:
    radial-gradient(circle at 18px 40px, rgba(255,255,255,.95) 0 2px, transparent 2.6px),
    radial-gradient(circle at 120px 160px, rgba(255,255,255,.85) 0 1.6px, transparent 2.2px),
    radial-gradient(circle at 210px 70px, rgba(255,255,255,.9) 0 2.4px, transparent 3px),
    radial-gradient(circle at 260px 230px, rgba(255,255,255,.8) 0 1.4px, transparent 2px),
    radial-gradient(circle at 70px 260px, rgba(255,255,255,.9) 0 2px, transparent 2.6px);
  background-size: 300px 300px;
  animation: neige-loin 16s linear infinite;
}
.hero::before { z-index: 0; opacity: .9; }
.hero-grille::before { /* couche proche : plus gros, plus rapide, devant le décor */
  z-index: 4; top: -300px; /* devant le décor, derrière le texte */
  background-image:
    radial-gradient(circle at 40px 60px, rgba(255,255,255,.95) 0 3.4px, transparent 4.4px),
    radial-gradient(circle at 230px 140px, rgba(255,255,255,.9) 0 2.8px, transparent 3.8px),
    radial-gradient(circle at 150px 250px, rgba(255,255,255,.85) 0 4px, transparent 5.2px);
  animation: neige-pres 9s linear infinite;
  filter: drop-shadow(0 0 2px rgba(255,255,255,.6));
}
@keyframes neige-loin { to { transform: translateY(300px); } }
@keyframes neige-pres { to { transform: translateY(300px); } }
.hero::after { /* guirlande lumineuse + boules accrochées au fil (même tuile de 400 px, les ficelles partent exactement du fil) */
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 210px; z-index: 7; pointer-events: none;
  background:
    url("assets/img/doodles/suspensions-guirlande.svg") 400px 0 / 400px auto no-repeat,
    url("assets/img/doodles/guirlande-claire.svg") left top / 400px auto repeat-x;
}
@media (min-width: 1600px) { .hero::after { background-position: 800px 0, left top; } }
.hero-grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: center; min-height: min(72vh, 760px); }
.hero-grille::after { /* flèche du titre vers le sapin */
  position: absolute; width: 140px; height: 98px; left: 44%; top: 52%; z-index: 4; color: var(--neige);
  -webkit-mask-image: url("assets/img/doodles/fleche-courbe.svg"); mask-image: url("assets/img/doodles/fleche-courbe.svg");
  transform: rotate(-12deg);
}
.hero-texte { position: relative; z-index: 5; }
/* titre : « Le » en petit · « sapin » neige très gras · « lumineux » en contour fin avec un halo chaud. Fer à gauche, lignes libres.
   Le contour utilise une graisse statique (sans chevauchement de contours, contrairement à la police variable). */
@font-face { font-family: "Unbounded Contour"; src: url("assets/fonts/unbounded-contour-latin-800-normal.woff2") format("woff2"); font-weight: 800; font-style: normal; font-display: swap; }
.titre-hero { font-size: clamp(17px, 1.45vw, 22px); font-weight: 300; line-height: 1.2; letter-spacing: .01em; color: var(--sapin-clair); }
.titre-hero strong { display: block; font-weight: 900; color: var(--neige); font-size: clamp(56px, 6.6vw, 100px); line-height: .95; letter-spacing: -.055em; margin: -.3em 0 0 -.03em; }
.titre-hero em, .titre-final em { display: block; font-style: normal; font-family: "Unbounded Contour", "Unbounded", system-ui, sans-serif; font-weight: 800;
  color: transparent; -webkit-text-stroke: 1.6px var(--creme);
  /* le halo suit le trait (drop-shadow) au lieu de remplir les lettres (text-shadow) */
  filter: drop-shadow(0 0 5px rgba(var(--lueur), .75)) drop-shadow(0 0 16px rgba(var(--lueur), .35)); }
.titre-hero em { font-size: clamp(56px, 6.6vw, 100px); line-height: 1.04; letter-spacing: .01em; margin: .02em 0 0 -.03em; }
.sous-titre-hero { margin-top: 22px; font-size: clamp(18px, 1.6vw, 24px); font-weight: 300; line-height: 1.3; letter-spacing: -.01em; color: var(--sapin-clair); }
.hero .chapeau strong { font-weight: 600; color: var(--creme); }
.chapeau { margin-top: 14px; max-width: 26em; font-size: clamp(15.5px, 1.25vw, 18px); line-height: 1.6; }
.hero .chapeau { color: rgba(255,255,255,.74); font-weight: 300; max-width: 24em; }
.hero-achat { display: flex; align-items: center; gap: 20px; margin: 30px 0 28px; }
.prix { font-size: clamp(36px, 3.1vw, 46px); font-weight: 250; letter-spacing: -.035em; line-height: 1; }
.prix { white-space: nowrap; }
.prix-ttc { margin-left: .28em; font-size: .3em; font-weight: 600; letter-spacing: .06em; opacity: .78; }
.prix-note { font-size: 12.5px; font-weight: 500; line-height: 1.5; letter-spacing: 0; padding-left: 20px; border-left: 2px solid currentColor; }
.hero .prix-note { color: var(--sapin-clair); font-weight: 400; border-left: 1.5px solid rgba(255,255,255,.28); }
.hero .prix-note strong { color: var(--creme); font-weight: 700; }

.hero-visuel { position: relative; height: clamp(500px, 46vw, 680px); }
/* écrans d'ordinateur peu hauts (1366×768, 1280×800) : le bouton reste au-dessus de la ligne de flottaison */
@media (min-width: 861px) and (max-height: 840px) {
  .hero { padding-top: 92px; }
  .hero .surtitre { top: -66px; }
  .titre-hero strong, .titre-hero em { font-size: clamp(52px, 5.8vw, 86px); }
  .chapeau { margin-top: 20px; }
  .hero-achat { margin: 24px 0 22px; }
  .hero-visuel { height: clamp(480px, 42vw, 600px); }
}
.hero-visuel::before { /* étoile croquis */
  position: absolute; width: 50px; height: 50px; right: 20%; top: -3%; z-index: 4;
  -webkit-mask-image: url("assets/img/doodles/etoile-croquis.svg"); mask-image: url("assets/img/doodles/etoile-croquis.svg"); transform: rotate(10deg);
}
.hero-visuel::after { /* flocon */
  position: absolute; width: 44px; height: 44px; left: 4%; bottom: 40%; z-index: 4; color: var(--neige);
  -webkit-mask-image: url("assets/img/doodles/flocon.svg"); mask-image: url("assets/img/doodles/flocon.svg");
}
.photo-givre { top: 6%; right: calc(-1 * var(--gout) - 4vw); width: 74%; aspect-ratio: 3 / 2; transform: rotate(-3.5deg); }
.photo-tricot { bottom: 3%; left: -3%; width: 50%; aspect-ratio: 4 / 3; transform: rotate(4deg); z-index: 1; }
.produit-hero { left: 50%; bottom: 1%; height: 96%; transform: translateX(-46%) rotate(-2.5deg); }
.wp-block-image.produit-hero img { height: 100%; width: auto; max-width: none; }
.pastille-stock {
  position: absolute; z-index: 5; left: -2%; top: 8%; transform: rotate(-7deg);
  background: var(--neige); border-radius: 52% 48% 50% 50% / 50% 50% 50% 50%; padding: 22px 30px 24px; text-align: center;
  font-size: 13px; font-weight: 600; line-height: 1.25; letter-spacing: 0; box-shadow: var(--ombre); color: var(--nuit);
}
.pastille-stock strong { display: block; font-size: 58px; font-weight: 900; line-height: .9; letter-spacing: -.06em; margin: 0 0 4px -.06em; }
.pastille-stock::before { /* éclat */
  position: absolute; width: 40px; height: 40px; right: -26px; top: -24px;
  -webkit-mask-image: url("assets/img/doodles/eclat.svg"); mask-image: url("assets/img/doodles/eclat.svg"); transform: rotate(78deg); background: var(--neige);
}
.cote { /* cote d'ingénieur à côté du sapin : trait (::before), pastille (::after), texte */
  position: absolute; z-index: 4; right: 3%; top: 5%; bottom: 5%; width: 80px; isolation: isolate;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700; letter-spacing: 0; white-space: nowrap; color: var(--nuit);
}
.cote::before { position: absolute; inset: 0 auto 0 50%; width: 30px; transform: translateX(-50%); z-index: -2; background: var(--neige);
  -webkit-mask: url("assets/img/doodles/cote.svg") center / 100% 100% no-repeat; mask: url("assets/img/doodles/cote.svg") center / 100% 100% no-repeat; }
.cote::after { content: ""; position: absolute; left: 50%; top: 50%; width: 78px; height: 40px; transform: translate(-50%, -50%) rotate(-4deg);
  background: var(--neige); border-radius: var(--blob); z-index: -1; }

/* ==========================================================================
   GRAVURE — le cœur de l'offre : fond crème chaud, plaque de bois gravée (exemple typographique)
   ========================================================================== */
.gravure { position: relative; background: var(--creme); padding-block: clamp(80px, 10vw, 140px); }
.gravure-grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(30px, 6vw, 100px); align-items: center; }
.gravure-texte { position: relative; }
.gravure .surtitre { background: var(--neige); }
.titre-gravure { font-size: clamp(30px, 3.4vw, 50px); font-weight: 300; line-height: 1; letter-spacing: -.03em; color: var(--sapin); }
.titre-gravure strong { display: block; font-size: clamp(38px, 4.3vw, 64px); font-weight: 900; line-height: .95; letter-spacing: -.06em; margin-top: .08em; } /* « personnalisée. » : un mot long, sur une ligne */
.gravure-chapeau { margin-top: 26px; max-width: 30em; }
.exemples { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; max-width: 34em; }
.exemples li { background: var(--neige); border-radius: 999px; padding: 9px 17px 10px; font-size: 13px; font-weight: 600; letter-spacing: 0; line-height: 1.3;
  color: #5A3A20; box-shadow: 0 8px 18px -12px rgba(38,38,38,.45); transform: rotate(-2deg); }
.exemples li:nth-child(even) { transform: rotate(1.6deg); }
.gravure-note { margin-top: 28px; font-size: 13px; font-weight: 500; letter-spacing: 0; }
.gravure-note strong { color: var(--sapin); font-weight: 800; }
.gravure-visuel { position: relative; display: flex; flex-direction: column; align-items: center; gap: 26px; padding-block: 30px; }
.gravure-visuel::before { /* la lumière chaude de l'atelier derrière la plaque */
  content: ""; position: absolute; inset: -20% -10%; z-index: 0; pointer-events: none;
  background: radial-gradient(closest-side, rgba(var(--lueur), .55), rgba(var(--lueur), .18) 55%, rgba(var(--lueur), 0)); }
.gravure-visuel::after { /* étincelle croquis */
  content: ""; position: absolute; width: 46px; height: 46px; right: 4%; top: 0; z-index: 2; background: var(--sapin);
  -webkit-mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat; mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat; transform: rotate(12deg); }
/* plaque de MDF : texture de bois, chants brûlés par la découpe laser, épaisseur visible */
@font-face { font-family: "Woodzy Gravure"; src: url("assets/fonts/alegreya-gravure-latin-500-normal.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
.plaque { position: relative; z-index: 1; width: min(100%, 560px); aspect-ratio: 5 / 2; display: grid; place-items: center; border-radius: 10px; transform: rotate(-2deg);
  container-type: inline-size; cursor: text;
  background: #D2AE7C url("assets/img/bois-gravure.jpg") center / cover;
  box-shadow: inset 0 0 0 1.5px rgba(62, 30, 8, .9), inset 0 0 5px 1px rgba(80, 40, 12, .55), inset 0 0 18px rgba(120, 70, 30, .18),
    0 5px 0 #5E3A1C, 0 6px 0 rgba(40, 20, 6, .6), 0 28px 44px -18px rgba(38, 38, 38, .55); }
/* la gravure : brûlure brun foncé, bords flous, le grain du bois transparaît (multiply) */
.plaque-texte { margin: 0; padding: 0 8%; min-width: 2em; min-height: 1.05em; text-align: center; text-wrap: balance; overflow-wrap: anywhere;
  font-family: "Woodzy Gravure", Georgia, serif; font-weight: 500; font-size: clamp(22px, 10.5cqw, 58px); line-height: 1.04; letter-spacing: .005em;
  color: rgb(78, 40, 12); caret-color: rgb(78, 40, 12); mix-blend-mode: multiply; filter: blur(.5px); outline: none;
  text-shadow: 0 0 1px rgba(78, 40, 12, .85), 0 0 3px rgba(110, 58, 20, .45), 0 0 9px rgba(150, 90, 40, .2); }
.plaque-texte.est-long { font-size: clamp(20px, 8.4cqw, 46px); }
.plaque-texte:empty::before { content: attr(data-placeholder); opacity: .38; }
.plaque:focus-within { box-shadow: inset 0 0 0 1.5px rgba(62, 30, 8, .9), inset 0 0 5px 1px rgba(80, 40, 12, .55), 0 0 0 4px var(--creme), 0 0 0 6px var(--sapin),
    0 5px 0 #5E3A1C, 0 28px 44px -18px rgba(38, 38, 38, .55); }
.plaque-infos { position: relative; z-index: 2; display: flex; align-items: baseline; justify-content: center; gap: 14px; flex-wrap: wrap; margin-top: 8px; padding-left: 88px; }
.plaque-aide { position: relative; font-size: 15px; font-weight: 700; letter-spacing: -.01em; color: var(--sapin); }
/* flèche dessinée à la main : de la consigne vers la plaque (elle se trace à l'apparition, puis invite d'un petit mouvement) */
.plaque-aide::before { content: ""; position: absolute; left: -92px; top: -64px; width: 84px; height: 92px; background: var(--sapin); pointer-events: none; z-index: 2;
  -webkit-mask: url("assets/img/doodles/fleche-plaque.svg") center / contain no-repeat; mask: url("assets/img/doodles/fleche-plaque.svg") center / contain no-repeat; }
html.js-anim .gravure .plaque-aide::before { clip-path: inset(100% 0 0 0); }
html.js-anim .gravure.est-visible .plaque-aide::before { animation: fleche-trace .8s cubic-bezier(.6, 0, .3, 1) 2.9s forwards, fleche-invite 2.4s ease-in-out 3.8s infinite; }
html.js-anim .gravure.a-ecrit .plaque-aide::before { animation: none; clip-path: none; }
@keyframes fleche-trace { from { clip-path: inset(100% 0 0 0); } to { clip-path: inset(-10% -10% -10% -10%); } }
@keyframes fleche-invite { 0%, 60%, 100% { clip-path: inset(-10%); translate: 0 0; } 75% { clip-path: inset(-10%); translate: -3px -5px; } }
.plaque-compteur { font-size: 12px; font-weight: 500; letter-spacing: 0; color: rgba(38, 38, 38, .6); font-variant-numeric: tabular-nums; }
.gravure-visuel .boutons { position: relative; z-index: 1; }
.gravure:not(.peut-graver) :is(.plaque-aide, .plaque-compteur) { visibility: hidden; } /* sans JavaScript, la plaque reste un simple exemple */
.exemples li { cursor: pointer; }
/* au défilement : le laser grave le texte, de gauche à droite */
html.js-anim .gravure .plaque-texte { clip-path: inset(-30% 100% -30% 0); }
html.js-anim .gravure.est-visible .plaque-texte { animation: grave 2.3s linear .5s forwards; }
@keyframes grave { to { clip-path: inset(-30% -2% -30% 0); } }
html.js-anim .gravure.est-visible .plaque::after {
  content: ""; position: absolute; top: calc(50% - 8px); left: 12%; width: 9px; height: 9px; border-radius: 50%; pointer-events: none;
  background: #FFF6E0; box-shadow: 0 0 8px 3px rgba(255, 170, 80, .95), 0 0 26px 9px rgba(255, 140, 40, .5);
  animation: laser 2.3s linear .5s both; }
@keyframes laser { 0% { left: 12%; opacity: 0; } 6% { opacity: 1; } 50% { top: calc(50% - 4px); } 94% { left: 87%; opacity: 1; } 100% { left: 87%; opacity: 0; } }

/* ==========================================================================
   RARETÉ — un « 20 » hors d'échelle, sur un split blanc / givre
   ========================================================================== */
.rarete { position: relative; background: linear-gradient(90deg, var(--neige) 0 57%, var(--givre) 57% 100%); padding-block: clamp(70px, 9vw, 140px); }
.stock-grille { display: grid; grid-template-columns: 57fr 43fr; align-items: center; }
.stock-gauche { position: relative; padding-right: clamp(20px, 4vw, 60px); }
.stock-gauche::before { content: ""; position: absolute; width: 64px; height: 64px; left: clamp(200px, 30vw, 450px); top: -30px; background: currentColor;
  -webkit-mask: url("assets/img/doodles/eclat.svg") center / contain no-repeat; mask: url("assets/img/doodles/eclat.svg") center / contain no-repeat; transform: rotate(84deg); }
.titre-stock { font-size: clamp(30px, 3.6vw, 54px); font-weight: 850; line-height: 1.02; letter-spacing: -.045em; position: relative; }
.titre-stock strong { display: block; color: var(--sapin); font-size: clamp(190px, 27vw, 420px); font-weight: 900; line-height: .78; letter-spacing: -.075em; margin: 0 0 .08em -.05em; }
.titre-stock::after { width: min(420px, 70%); height: 22px; margin-top: 14px;
  -webkit-mask: url("assets/img/doodles/souligne.svg") left center / 100% 100% no-repeat; mask: url("assets/img/doodles/souligne.svg") left center / 100% 100% no-repeat; }
.stock-droite { position: relative; padding-left: clamp(28px, 5vw, 80px); }
.stock-droite::before { position: absolute; width: 44px; height: 44px; right: 0; top: -54px;
  -webkit-mask-image: url("assets/img/doodles/etoile-croquis.svg"); mask-image: url("assets/img/doodles/etoile-croquis.svg"); transform: rotate(-12deg); }
.stock-texte { max-width: 30em; }
.jauge { display: grid; grid-template-columns: repeat(10, 1fr); gap: 10px 8px; max-width: 420px; margin: 34px 0 14px; }
.jauge-sapin { display: block; aspect-ratio: 40 / 56; background: var(--sapin);
  -webkit-mask: url("assets/img/doodles/sapin-icone.svg") center / contain no-repeat; mask: url("assets/img/doodles/sapin-icone.svg") center / contain no-repeat; }
.jauge-sapin.est-vendu { opacity: .18; }
.jauge-grande { gap: 8px 7px; max-width: 380px; } /* série de plus de 20 : quatre rangées, un peu plus serrées */
.jauge-legende { font-size: 13px; font-weight: 500; letter-spacing: 0; margin-bottom: 30px; }
.jauge-legende strong { font-weight: 800; }

/* ==========================================================================
   NUIT — la seule lumière chaude de la page vient du sapin
   ========================================================================== */
.nuit { position: relative; background: var(--nuit); color: var(--neige); padding-block: clamp(110px, 11vw, 170px) clamp(80px, 10vw, 150px); overflow: hidden; }
.nuit::before { /* guirlande claire */
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 104px; z-index: 2; pointer-events: none;
  background: url("assets/img/doodles/guirlande-claire.svg") -120px top / 400px auto repeat-x;
  animation: scintille 2.6s ease-in-out infinite alternate;
}
.nuit::after { opacity: .55; }

.nuit-grille { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(30px, 5vw, 80px); align-items: center; }
.nuit-texte { position: relative; z-index: 2; }
.nuit-texte::before { position: absolute; width: 48px; height: 48px; right: 8%; top: -12px; color: var(--neige);
  -webkit-mask-image: url("assets/img/doodles/flocon.svg"); mask-image: url("assets/img/doodles/flocon.svg"); transform: rotate(-8deg); }
.titre-nuit { font-size: clamp(22px, 2.2vw, 32px); font-weight: 600; line-height: 1.15; letter-spacing: -.02em; }
.titre-nuit strong { display: block; font-size: clamp(42px, 5vw, 78px); font-weight: 900; line-height: .95; letter-spacing: -.05em; margin-top: .12em; }
.nuit-chapeau { margin-top: 28px; max-width: 32em; color: rgba(255,255,255,.88); }
.moments { display: grid; gap: 18px; margin-top: 42px; padding-top: 30px; border-top: 1.5px solid rgba(255,255,255,.28); max-width: 30em; }
.moments li { position: relative; padding-left: 30px; font-size: 13.5px; font-weight: 400; line-height: 1.45; letter-spacing: 0; color: rgba(255,255,255,.8); }
.moments li::before { /* petite ampoule allumée */
  content: ""; position: absolute; left: 2px; top: .42em; width: 10px; height: 10px; border-radius: 50%;
  background: rgb(var(--lueur-creme)); box-shadow: 0 0 0 3px rgba(var(--lueur), .25), 0 0 14px 4px rgba(var(--lueur), .7);
}
.moments strong { font-size: clamp(16px, 1.4vw, 19px); font-weight: 800; letter-spacing: -.03em; color: var(--neige); margin-right: 8px; }
.nuit-visuel { position: relative; height: clamp(560px, 54vw, 800px); }
.nuit-visuel::before { /* reflets chauds, comme des lumières floues dans la pièce */
  content: ""; position: absolute; inset: -6% -20% -6% -10%; pointer-events: none; filter: blur(1px);
  background:
    radial-gradient(circle at 12% 22%, rgba(var(--lueur), .30) 0 22px, transparent 23px),
    radial-gradient(circle at 86% 16%, rgba(var(--lueur), .22) 0 34px, transparent 35px),
    radial-gradient(circle at 92% 64%, rgba(var(--lueur), .26) 0 18px, transparent 19px),
    radial-gradient(circle at 6% 74%, rgba(var(--lueur-creme), .18) 0 30px, transparent 31px),
    radial-gradient(circle at 74% 90%, rgba(var(--lueur), .20) 0 26px, transparent 27px),
    radial-gradient(circle at 30% 6%, rgba(var(--lueur-creme), .16) 0 14px, transparent 15px);
}
.produit-nuit { left: 50%; top: 50%; width: min(112%, 860px); transform: translate(-50%, -50%); z-index: 2; }
.wp-block-image.produit-nuit::before { inset: -18% -30%; background: radial-gradient(closest-side, rgba(var(--lueur), .42), rgba(var(--lueur), .16) 50%, rgba(var(--lueur), 0)); }
.wp-block-image.produit-nuit figcaption { bottom: 8%; background: transparent; color: rgba(255,255,255,.72); border: 1.5px solid rgba(255,255,255,.4); }

/* ==========================================================================
   CADEAU — grande forme blanche organique, collage à droite
   ========================================================================== */
.cadeau { position: relative; padding-block: clamp(80px, 10vw, 150px); color: var(--neige);
  background: radial-gradient(60% 70% at 18% 50%, #24543A, rgba(36,84,58,0) 70%), var(--sapin); }
.cadeau-grille { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); gap: clamp(20px, 3vw, 40px); align-items: center; }
.cadeau-carte {
  position: relative; z-index: 2; background: var(--neige); color: var(--nuit);
  border-radius: 46% 54% 44% 30% / 38% 44% 46% 34%;
  padding: clamp(48px, 6vw, 92px) clamp(36px, 6vw, 104px) clamp(56px, 6.5vw, 100px) clamp(36px, 5.5vw, 92px);
  margin-left: calc(-1 * clamp(0px, 2vw, 40px));
}
.cadeau-carte::before { /* flèche crème, sur le vert, de la carte vers le cadeau */ position: absolute; width: 130px; height: 90px; right: -132px; top: 14%; color: var(--creme);
  -webkit-mask-image: url("assets/img/doodles/fleche-courbe.svg"); mask-image: url("assets/img/doodles/fleche-courbe.svg"); transform: rotate(-18deg); }
.cadeau-carte::after { /* étincelle crème, sur le vert */ position: absolute; width: 52px; height: 52px; right: -6px; top: -14px; color: var(--creme);
  -webkit-mask-image: url("assets/img/doodles/etincelle.svg"); mask-image: url("assets/img/doodles/etincelle.svg"); transform: rotate(12deg); }
.cadeau-carte .surtitre { background: var(--givre); }
.titre-cadeau { font-size: clamp(28px, 2.8vw, 42px); font-weight: 600; line-height: 1; letter-spacing: -.04em; }
.titre-cadeau strong { display: block; font-size: clamp(46px, 5.6vw, 86px); font-weight: 900; line-height: .92; letter-spacing: -.055em; }
.cadeau-texte { margin-top: 26px; max-width: 31em; }
.idees { display: grid; gap: 12px; margin-top: 30px; }
.idees li { display: flex; align-items: center; gap: 12px; font-size: clamp(15px, 1.35vw, 19px); font-weight: 700; letter-spacing: -.02em; line-height: 1.25; }
.idees li::before { flex: none; width: 20px; height: 20px; background: var(--sapin); -webkit-mask-image: url("assets/img/doodles/etoile-croquis.svg"); mask-image: url("assets/img/doodles/etoile-croquis.svg"); }
.cadeau-note { margin-top: 30px; font-size: 12.5px; font-weight: 500; letter-spacing: 0; }
.cadeau-visuel { position: relative; height: clamp(460px, 44vw, 640px); }
.photo-bokeh-clair { right: calc(-1 * var(--gout) - 3vw); top: 0; width: 88%; aspect-ratio: 3 / 4; transform: rotate(3deg); }
.photo-plaid { left: -14%; bottom: -2%; width: 74%; aspect-ratio: 3 / 2; transform: rotate(-5deg); z-index: 1; }

/* ==========================================================================
   MONTAGE — fond blanc, chiffres géants
   ========================================================================== */
.montage { position: relative; background: var(--neige); padding-block: clamp(80px, 10vw, 150px) clamp(80px, 9vw, 130px); }
.montage-tete { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr); gap: clamp(30px, 6vw, 110px); align-items: start; margin-bottom: clamp(56px, 7vw, 100px); }
.montage-intro { position: relative; }
.montage-intro::after { position: absolute; width: 52px; height: 52px; right: 2%; bottom: -60px;
  -webkit-mask-image: url("assets/img/doodles/flocon.svg"); mask-image: url("assets/img/doodles/flocon.svg"); transform: rotate(18deg); }
.titre-montage { font-size: clamp(34px, 4vw, 60px); font-weight: 600; line-height: 1; letter-spacing: -.045em; }
.titre-montage strong { display: block; font-size: clamp(54px, 7.6vw, 118px); font-weight: 900; line-height: .9; letter-spacing: -.06em; margin-top: .06em; }
.montage-chapeau { margin-top: 28px; max-width: 34em; }
.montage-option { margin-top: 22px; max-width: 34em; padding: 14px 18px 15px; border-radius: 16px; background: var(--creme); font-size: 14px; line-height: 1.5; }
.montage-option strong { color: var(--sapin); }
.photo-etoile { position: relative; width: 100%; aspect-ratio: 4 / 5; margin-top: calc(-1 * clamp(130px, 15vw, 230px)); transform: rotate(3deg); z-index: 2; }
.etapes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); counter-reset: none; }
.etape { position: relative; }
.etape:nth-child(2) { margin-top: clamp(30px, 4vw, 60px); }
.etape:nth-child(3) { margin-top: clamp(60px, 8vw, 120px); }
.etape:not(:last-child)::after { position: absolute; width: 96px; height: 66px; right: -40px; top: 34px;
  -webkit-mask-image: url("assets/img/doodles/fleche-courbe.svg"); mask-image: url("assets/img/doodles/fleche-courbe.svg"); transform: rotate(-24deg) scaleY(-1); }
.etape-numero { color: var(--sapin); font-size: clamp(76px, 8.4vw, 132px); font-weight: 900; line-height: .85; letter-spacing: -.07em; margin-bottom: 22px; }
.etape-titre { font-size: clamp(19px, 1.6vw, 24px); font-weight: 800; line-height: 1.15; letter-spacing: -.03em; margin-bottom: 12px; }
.etape-texte { max-width: 22em; }
.etape:last-child .etape-numero { text-shadow: 0 0 28px rgba(var(--lueur), .9), 0 0 70px rgba(var(--lueur), .55); } /* le geste qui allume */

/* ==========================================================================
   COMPARATIF — tableau à filets, la colonne Woodzy en blanc
   ========================================================================== */
.comparatif { padding-block: clamp(80px, 10vw, 140px); }
.comparatif .wrap { position: relative; }
.comparatif .wrap::before { position: absolute; width: 50px; height: 50px; right: var(--gout); top: -6px;
  -webkit-mask-image: url("assets/img/doodles/etoile-croquis.svg"); mask-image: url("assets/img/doodles/etoile-croquis.svg"); transform: rotate(16deg); }
.titre-comparatif { font-size: clamp(32px, 3.6vw, 54px); font-weight: 600; line-height: 1; letter-spacing: -.045em; }
.titre-comparatif strong { display: block; font-size: clamp(50px, 6.6vw, 104px); font-weight: 900; line-height: .9; letter-spacing: -.06em; }
.definition { margin-top: 26px; max-width: 46em; }
.wp-block-table.tableau { margin-bottom: 0; margin-top: clamp(40px, 5vw, 64px); overflow-x: auto; }
.wp-block-table.tableau table { width: 100%; border-collapse: collapse; font-size: 14px; line-height: 1.4; letter-spacing: 0; min-width: 680px; }
.wp-block-table.tableau th, .wp-block-table.tableau td { border: 0; text-align: left; padding: 18px 20px; border-bottom: 1.5px solid var(--nuit); vertical-align: top; }
.wp-block-table.tableau thead th { font-size: 12.5px; font-weight: 700; border-bottom-width: 3px; padding-top: 22px; }
.wp-block-table.tableau tbody td:first-child { font-weight: 700; width: 20%; }
.wp-block-table.tableau td { font-weight: 400; }
.wp-block-table.tableau th:nth-child(2), .wp-block-table.tableau td:nth-child(2) { background: var(--neige); font-weight: 700; }
.wp-block-table.tableau thead th:nth-child(2) { border-radius: 18px 18px 0 0; font-size: 14px; background: var(--sapin); color: var(--neige); }

/* ==========================================================================
   FAQ
   ========================================================================== */
.faq { background: var(--neige); padding-block: clamp(80px, 10vw, 140px); }
.faq-grille { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(30px, 6vw, 100px); align-items: start; }
.faq-intro { position: sticky; top: 140px; }
.titre-faq { font-size: clamp(32px, 3.4vw, 50px); font-weight: 600; line-height: 1; letter-spacing: -.045em; position: relative; }
.titre-faq strong { display: block; font-size: clamp(46px, 5.3vw, 80px); font-weight: 900; line-height: .9; letter-spacing: -.06em; }
.titre-faq::after { width: 70px; height: 48px; margin-top: 18px;
  -webkit-mask-image: url("assets/img/doodles/fleche-courbe.svg"); mask-image: url("assets/img/doodles/fleche-courbe.svg"); transform: rotate(-30deg); }
.faq-contact { margin-top: 26px; max-width: 24em; font-size: 14px; }
.faq-contact a { font-weight: 700; }
.question { border-top: 2px solid var(--nuit); }
.question:last-child { border-bottom: 2px solid var(--nuit); }
.question summary {
  list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 24px;
  padding: 24px 0; font-size: clamp(16px, 1.45vw, 20px); font-weight: 750; letter-spacing: -.025em; line-height: 1.25;
}
.question summary::-webkit-details-marker { display: none; }
.question summary::after { content: "+"; flex: none; width: 38px; height: 38px; border-radius: 50%; background: var(--sapin); color: var(--neige); display: grid; place-items: center; font-weight: 500; font-size: 22px; transition: transform .25s ease; }
.question[open] summary::after { transform: rotate(45deg); }
.question p { padding: 0 60px 26px 0; max-width: 40em; }

/* ==========================================================================
   ATELIER — photo bord à bord, texte sur la nuit
   ========================================================================== */
.atelier { position: relative; color: var(--neige); background: radial-gradient(60% 90% at 80% 55%, rgba(var(--lueur), .2), rgba(var(--lueur), 0) 70%), var(--nuit); }
.atelier-grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: stretch; min-height: clamp(420px, 42vw, 620px); }
.photo-fenetre { position: relative; box-shadow: none; }
.atelier-texte { padding: clamp(60px, 8vw, 120px) var(--gout) clamp(60px, 8vw, 120px) clamp(40px, 6vw, 100px); align-self: center; max-width: 720px; }
.titre-atelier { font-size: clamp(24px, 2.4vw, 34px); font-weight: 600; line-height: 1.12; letter-spacing: -.03em; }
.titre-atelier strong { display: block; font-size: clamp(36px, 4vw, 62px); font-weight: 900; line-height: .95; letter-spacing: -.05em; margin-top: .14em; }
.atelier-texte p { margin-top: 26px; color: rgba(255,255,255,.86); max-width: 32em; }

/* ==========================================================================
   APPEL FINAL
   ========================================================================== */
.final { position: relative; overflow: clip; padding-block: clamp(80px, 10vw, 150px); color: var(--neige);
  background: radial-gradient(55% 75% at 70% 58%, rgba(var(--lueur), .2), rgba(var(--lueur), 0) 70%), var(--sapin); }
.final::after { opacity: .6; z-index: 0; }
.final-grille { position: relative; z-index: 1; }
.final-chapeau { color: rgba(255,255,255,.74); font-weight: 300; }
.final-note { color: var(--sapin-clair); }
.final-grille { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(30px, 5vw, 80px); align-items: center; }
.final-texte { position: relative; }
.final-texte::before { position: absolute; width: 50px; height: 50px; left: -8px; top: -72px;
  -webkit-mask-image: url("assets/img/doodles/eclat.svg"); mask-image: url("assets/img/doodles/eclat.svg"); transform: rotate(-10deg); }
/* même système que le titre du héros : fin (vert clair) · très épais (neige) · contour lumineux (jaune pâle) */
.titre-final { font-size: clamp(30px, 3.4vw, 50px); font-weight: 250; line-height: 1.1; letter-spacing: -.02em; color: var(--sapin-clair); }
.titre-final strong { display: block; color: var(--neige); font-size: clamp(58px, 7.4vw, 116px); font-weight: 900; line-height: .9; letter-spacing: -.06em; margin-top: .1em; }
.titre-final em { font-size: clamp(58px, 7.4vw, 116px); line-height: 1.02; letter-spacing: .01em; margin-left: -.03em; }
.final-chapeau { margin: 28px 0 34px; max-width: 30em; }
.final-note { margin-top: 20px; font-size: 12.5px; font-weight: 500; letter-spacing: 0; }
.final-visuel { position: relative; height: clamp(460px, 44vw, 640px); }
.final-visuel::before { position: absolute; width: 56px; height: 56px; left: 6%; top: 4%; z-index: 4; color: var(--neige);
  -webkit-mask-image: url("assets/img/doodles/flocon.svg"); mask-image: url("assets/img/doodles/flocon.svg"); }
.photo-branche { right: calc(-1 * var(--gout) - 4vw); top: 16%; width: 86%; aspect-ratio: 3 / 2; transform: rotate(-4deg); }
.produit-final { left: 42%; bottom: -2%; height: 104%; transform: translateX(-50%) rotate(3deg); }
.wp-block-image.produit-final img { height: 100%; width: auto; max-width: none; }

/* ==========================================================================
   PIED DE PAGE
   ========================================================================== */
.pied { background: radial-gradient(70% 60% at 30% 20%, rgba(var(--lueur), .13), rgba(var(--lueur), 0) 70%), var(--nuit); color: var(--neige); padding: clamp(50px, 6vw, 90px) 0 calc(clamp(30px, 4vw, 50px) + 90px); overflow: hidden; }
.pied-marque { font-size: clamp(60px, 18.2vw, 300px); font-weight: 900; letter-spacing: -.055em; line-height: .8; margin-left: -.035em; }
.pied-rangee { display: grid; grid-template-columns: 1fr auto 1fr; gap: 30px; align-items: end; margin-top: clamp(30px, 4vw, 60px); padding-top: 26px; border-top: 1.5px solid rgba(255,255,255,.28); font-size: 12.5px; letter-spacing: 0; }
.wp-block-navigation.pied-menu .wp-block-navigation__container { flex-wrap: wrap; gap: 10px 26px; }
.wp-block-navigation.pied-menu .wp-block-navigation-item__content { text-decoration: none; font-weight: 500; }
.wp-block-navigation.pied-menu .wp-block-navigation-item__content:hover { text-decoration: underline; }
.pied-mention { justify-self: end; color: rgba(255,255,255,.66); }

/* ==========================================================================
   PAGES WOOCOMMERCE (fiche produit, panier, commande) : marges latérales du thème
   ========================================================================== */
body:is(.woocommerce, .woocommerce-page) main.wp-block-group { padding: clamp(28px, 4vw, 60px) var(--gout) clamp(60px, 8vw, 110px); }
/* icônes compte et mini-panier que WooCommerce ajoute dans l'en-tête */
.entete-rangee :is(.wp-block-woocommerce-customer-account, .wp-block-woocommerce-mini-cart) { color: var(--neige); }
.entete-rangee .wc-block-mini-cart__badge { background: var(--creme); color: var(--sapin); }

/* ==========================================================================
   FICHE PRODUIT (templates/single-product.html) : le sapin sur le vert, le formulaire WooCommerce habillé
   ========================================================================== */
body.single-product main.fiche { padding: clamp(36px, 5vw, 72px) 0 clamp(70px, 9vw, 120px); }
.fiche-grille { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(30px, 5vw, 80px); align-items: start; }
.fiche-visuel { position: sticky; top: 140px; }
.fiche-visuel .woocommerce-product-gallery { margin: 0 !important; width: 100% !important; float: none !important; opacity: 1 !important; position: relative; }
/* grande image : le sapin sur le vert, avec son halo (diaporama WooCommerce ou image seule) */
.fiche-visuel .flex-viewport,
.fiche-visuel .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__image:first-child {
  border-radius: 28px; overflow: hidden; background: radial-gradient(55% 60% at 50% 55%, rgba(var(--lueur), .55), rgba(var(--lueur), 0) 70%), var(--sapin); }
.fiche-visuel .woocommerce-product-gallery__wrapper { margin: 0; }
.fiche-visuel .woocommerce-product-gallery__image a { display: block; }
.fiche-visuel .woocommerce-product-gallery__image img { display: block; width: 100% !important; height: auto; aspect-ratio: 1; object-fit: contain; padding: 6%; }
.fiche-visuel .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__image:not(:first-child) { display: none; }
/* vignettes */
.fiche-visuel .flex-control-thumbs { display: flex; gap: 10px; margin: 12px 0 0 !important; padding: 0; list-style: none; }
.fiche-visuel .flex-control-thumbs li { width: 84px !important; float: none !important; margin: 0 !important; }
.fiche-visuel .flex-control-thumbs img { display: block; border-radius: 14px; aspect-ratio: 1; object-fit: cover; background: var(--sapin); opacity: .55; cursor: pointer; transition: opacity .2s ease; }
.fiche-visuel .flex-control-thumbs img:hover, .fiche-visuel .flex-control-thumbs img.flex-active { opacity: 1; }
.fiche-visuel .flex-control-thumbs img.flex-active { outline: 3px solid var(--sapin); outline-offset: 2px; }
.fiche-visuel .woocommerce-product-gallery__trigger { display: none; }
.fiche-infos .surtitre { margin-bottom: 18px; }
.fiche-titre { font-size: clamp(38px, 4.4vw, 64px); font-weight: 900; line-height: .95; letter-spacing: -.05em; color: var(--sapin); margin: 0; }
.fiche-prix .woocommerce-price-suffix { margin-left: .3em; font-size: .4em; font-weight: 600; letter-spacing: .06em; color: var(--sapin); }
.fiche-prix, .fiche-prix .price { margin: 18px 0 0; font-size: clamp(26px, 2.4vw, 34px); font-weight: 300; letter-spacing: -.03em; color: var(--nuit); }
.fiche-extrait { margin-top: 16px; max-width: 32em; }
.fiche-extrait p { margin: 0; }
.fiche-achat { margin-top: 28px; }
.fiche-achat form.cart { display: block; margin: 0; }
.fiche-achat table.variations { border: 0; margin: 0 0 6px; width: 100%; }
.fiche-achat table.variations :is(th, td) { display: block; padding: 0; border: 0; background: none; text-align: left; }
.fiche-achat table.variations th.label { font-size: 13px; font-weight: 700; margin-bottom: 10px; }
.fiche-achat .reset_variations { display: none !important; }
/* choix du montage en cartes (app.js transforme la liste déroulante ; elle reste là, masquée, pour WooCommerce) */
.woodzy-choix { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.woodzy-choix-option { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; padding: 14px 16px; border-radius: 16px; cursor: pointer; text-align: left;
  font: inherit; color: var(--nuit); background: var(--neige); border: 2px solid transparent; box-shadow: 0 8px 20px -14px rgba(38, 38, 38, .5); transition: border-color .2s ease, transform .2s ease; }
.woodzy-choix-option:hover { transform: translateY(-2px); }
.woodzy-choix-option[aria-checked="true"] { border-color: var(--sapin); background: #fff; box-shadow: 0 0 0 3px rgba(29, 69, 48, .15), 0 10px 24px -14px rgba(38, 38, 38, .5); }
.woodzy-choix-nom { font-size: 14px; font-weight: 700; line-height: 1.25; }
.woodzy-choix-prix { font-size: 13px; font-weight: 400; color: rgba(38, 38, 38, .7); }
.woodzy-choix-option[aria-checked="true"] .woodzy-choix-prix { color: var(--sapin); font-weight: 700; }
select.woodzy-choix-select { position: absolute !important; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.fiche-achat .woocommerce-variation-description p { margin: 10px 0 0; font-size: 13px; }
.fiche-achat .woocommerce-variation-price { display: none; } /* le prix est déjà sur chaque carte et en haut de la fiche */
/* champ « Texte à graver » du plugin, aux couleurs du thème */
.fiche-achat .woodzy-gravure { margin: 22px 0 20px; padding: 18px; border-radius: 18px; background: var(--creme); }
.fiche-achat .woodzy-gravure label { font-size: 14px; color: var(--sapin); }
.fiche-achat .woodzy-gravure input { max-width: none; border: 2px solid rgba(29, 69, 48, .35); border-radius: 12px; font-family: "Woodzy Gravure", Georgia, serif; font-size: 20px; color: rgb(78, 40, 12); }
.fiche-achat .woodzy-gravure input:focus { outline: none; border-color: var(--sapin); }
.fiche-achat .woocommerce-variation-add-to-cart, .fiche-achat form.cart:not(.variations_form) { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.fiche-achat .woodzy-gravure { flex: 1 0 100%; }
.fiche-achat .quantity input.qty { width: 4.2em; height: 54px; border-radius: 999px; border: 2px solid rgba(38, 38, 38, .2); text-align: center; font: inherit; font-weight: 600; background: var(--neige); }
.fiche-achat .single_add_to_cart_button { flex: 1; min-height: 54px; border-radius: 999px !important; font-family: inherit; font-weight: 650; font-size: 15px;
  background: var(--sapin) !important; color: var(--neige) !important; padding: 16px 28px !important; }
.fiche-achat .single_add_to_cart_button.disabled { opacity: .5; }
.fiche-assurances { display: grid; gap: 10px; margin: 26px 0 0; padding: 0; list-style: none; font-size: 13.5px; }
.fiche-assurances li { position: relative; padding-left: 26px; }
.fiche-assurances li::before { content: ""; position: absolute; left: 0; top: .15em; width: 16px; height: 20px; background: var(--sapin);
  -webkit-mask: url("assets/img/doodles/sapin-icone.svg") center / contain no-repeat; mask: url("assets/img/doodles/sapin-icone.svg") center / contain no-repeat; }
.fiche-infos .jauge { margin: 24px 0 10px; max-width: 360px; }
.fiche-infos .jauge-grande { max-width: 320px; }
.fiche-details { margin-top: clamp(56px, 7vw, 96px); max-width: 820px; }
.fiche-details-titre { font-size: clamp(28px, 3vw, 42px); font-weight: 300; letter-spacing: -.03em; color: var(--sapin); margin-bottom: 20px; }
.fiche-details-titre strong { font-weight: 900; }
.fiche-description p { margin: 0 0 1em; max-width: 40em; }
.fiche-achat .stock { display: none; } /* la jauge de la série le dit déjà */
@media (max-width: 860px) {
  .fiche-grille { grid-template-columns: 1fr; }
  .fiche-visuel { position: static; }
  .woodzy-choix { grid-template-columns: 1fr; }
}

/* ==========================================================================
   BARRE D'ACHAT COLLANTE
   ========================================================================== */
.barre-achat {
  position: fixed; z-index: 60; left: 50%; bottom: 18px; transform: translate(-50%, 160%);
  display: flex; align-items: center; gap: 22px; padding: 10px 10px 10px 26px;
  background: var(--neige); border: 2px solid var(--nuit); border-radius: 999px; box-shadow: 0 18px 40px -16px rgba(38,38,38,.55);
  transition: transform .4s cubic-bezier(.2,.8,.2,1); white-space: nowrap;
}
.est-achat-visible .barre-achat { transform: translate(-50%, 0); }
.barre-produit { font-size: 13px; font-weight: 450; letter-spacing: 0; }
.barre-produit strong { font-weight: 800; margin-right: 8px; }

/* ==========================================================================
   ADAPTATIF
   ========================================================================== */
@media (max-width: 1080px) {
  .menu, .entete-rangee .wp-block-navigation.menu { display: none; }
  .hero-grille::after { display: none; }
}
@media (max-width: 860px) {
  body { font-size: 15px; }
  .annonce-secondaire { display: none; }
  .annonce-rangee { justify-content: center; }
  .annonce-plus { display: none; }
  .entete-cta .wp-block-button.bouton-petit .wp-block-button__link { padding: 11px 15px 12px; font-size: 12.5px; }
  .hero .surtitre { font-size: 11.5px; white-space: nowrap; }
  .entete-rangee { min-height: 64px; }
  .marque { font-size: 23px; }
  .wp-block-site-logo.marque-logo img { width: 112px; }
  .entete-rangee { gap: 14px; }
  .entete-rangee .wp-block-woocommerce-customer-account { display: none; }

  .hero-grille, .gravure-grille, .nuit-grille, .cadeau-grille, .montage-tete, .faq-grille, .final-grille, .atelier-grille { grid-template-columns: minmax(0, 1fr); } /* minmax(0, …) : un bouton trop long ne peut plus élargir la colonne au-delà de l'écran */
  .gravure-visuel { padding-block: 10px 0; }
  .gravure-visuel .wp-block-button__link { white-space: nowrap; font-size: 14px; padding-inline: 24px; }
  .plaque-infos { padding-left: 72px; }
  .plaque-aide::before { left: -76px; top: -58px; width: 70px; height: 77px; }
  .exemples li { font-size: 12px; padding: 8px 14px 9px; }
  .hero-grille { min-height: 0; }
  .hero::after, .nuit::before { background-size: 300px auto; }
  .hero::after { height: 160px; background-position: 0 0, left top; }
  .hero { padding-top: 118px; } /* place pour les boules sous la guirlande */
  .hero-visuel { height: 500px; margin-top: 10px; }
  .photo-givre { width: 88%; right: -20%; }
  .photo-tricot { width: 62%; left: -10%; }
  .pastille-stock { left: -1%; top: 2%; padding: 15px 20px 17px; font-size: 12px; }
  .pastille-stock strong { font-size: 44px; }
  .cote { right: 0; }

  .rarete { background: linear-gradient(180deg, var(--neige) 0 46%, var(--givre) 46% 100%); }
  .stock-grille { grid-template-columns: 1fr; }
  .stock-gauche { padding: 0 0 56px; }
  .stock-droite { padding: 56px 0 0; }
  .stock-droite::before { top: 8px; }

  .nuit-visuel { height: 500px; }
  .produit-nuit { width: 130%; }
  .moments { grid-template-columns: 1fr; gap: 16px; }

  .cadeau-carte { border-radius: 44px; margin-left: 0; }
  .cadeau-carte::before { display: none; }
  .cadeau-visuel { height: 420px; margin-top: -40px; }
  .photo-bokeh-clair { width: 66%; right: -6%; }
  .photo-plaid { left: -4%; width: 70%; }

  .photo-etoile { margin-top: 0; width: 78%; justify-self: end; }
  .comparatif .wrap::before { top: -56px; }
  .etapes { grid-template-columns: 1fr; gap: 44px; }
  .etape:nth-child(n) { margin-top: 0; }
  .etape:not(:last-child)::after { display: none; }

  .faq-intro { position: static; }
  .question p { padding-right: 0; }

  .photo-fenetre { min-height: 300px; }
  .atelier-texte { padding-inline: var(--gout); }

  .final-visuel { height: 460px; }
  .photo-branche { width: 96%; right: -16%; }

  .pied-rangee { grid-template-columns: 1fr; align-items: start; }
  .pied-mention { justify-self: start; }

  .wp-block-button.bouton-grand .wp-block-button__link { font-size: 15px; padding: 19px 26px 20px; }
  .barre-achat { left: 12px; right: 12px; bottom: 12px; transform: translateY(160%); justify-content: space-between; gap: 12px; padding-left: 18px; }
  .est-achat-visible .barre-achat { transform: translateY(0); }
  .barre-produit { font-size: 12px; white-space: normal; line-height: 1.3; }
  .barre-produit strong { display: block; margin: 0; }
}
@media (max-width: 420px) {
  .titre-hero { font-size: 16px; }
  .titre-hero strong, .titre-hero em { font-size: clamp(46px, 13.4vw, 54px); }
  .titre-hero strong { margin-top: -.12em; }
  .titre-hero em, .titre-final em { -webkit-text-stroke-width: 1.2px; }
  .sous-titre-hero { font-size: 17px; margin-top: 16px; }
  .hero-achat { gap: 12px; }
  .prix { font-size: 36px; }
  .hero .prix { position: relative; white-space: nowrap; }
  .hero .prix-ttc { position: absolute; left: 1px; top: 100%; margin: 5px 0 0; font-size: 10.5px; }
  .prix-note { font-size: 12px; padding-left: 14px; }
}
@media (max-width: 480px) {
  .final .cta-prix, .entete-cta .cta-prix { display: none; }
}
@media (max-width: 340px) {
  .entete-rangee .wp-block-woocommerce-mini-cart { display: none; }
}
@media (max-width: 379px) {
  .cta-prix { display: none; }
  .wp-block-site-logo.marque-logo img { width: 100px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ==========================================================================
   ADAPTATIONS GUTENBERG
   ========================================================================== */
/* L'espacement automatique est coupé à la source (theme.json : blockGap 0px).
   Filet de sécurité à spécificité nulle — jamais .wp-block-group > * (écrase les marges). */
:where(.wp-block-group) > :where(*), :where(.wp-block-buttons) { margin-block: 0; }
figure.wp-block-image { margin: 0; }
.wp-block-image.photo { position: absolute; }
.wp-block-image.photo-etoile, .wp-block-image.photo-fenetre { position: relative; }
.wp-block-image figcaption.wp-element-caption { margin: 0; }
.wp-block-navigation.menu, .wp-block-navigation.pied-menu { font-size: inherit; }
.wp-block-site-title.marque { font-size: 27px; font-weight: 900; letter-spacing: -.06em; line-height: 1; }
.wp-block-details.question > summary { margin: 0; }
.wp-block-details.question[open] > summary { margin-bottom: 0; }
.wp-block-list.bandeau-liste, .wp-block-list.moments, .wp-block-list.idees { padding-left: 0; padding-right: 0; list-style: none; }
.wp-block-table.tableau tbody td:first-child { font-weight: 700; width: 20%; }
.wp-block-table.tableau thead { border: 0; }
.wp-block-table.tableau thead th { border-bottom: 3px solid var(--nuit); }

/* comparatif sur téléphone : une carte par critère, les trois sapins l'un sous l'autre, aucun défilement horizontal.
   app.js recopie les en-têtes de colonnes dans data-label puis ajoute .est-cartes (sans JavaScript, le tableau défile). */
@media (max-width: 700px) {
  .wp-block-table.tableau.est-cartes { overflow: visible; }
  .wp-block-table.tableau.est-cartes table { min-width: 0; border-collapse: separate; font-size: 13.5px; }
  .wp-block-table.tableau.est-cartes thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
  .wp-block-table.tableau.est-cartes :is(tbody, tr, td, tbody th) { display: block; width: auto; }
  .wp-block-table.tableau.est-cartes tr { background: rgba(255, 255, 255, .45); border-radius: 20px; padding: 16px 16px 8px; margin-bottom: 12px; }
  .wp-block-table.tableau.est-cartes td { border: 0; padding: 9px 0; background: none; font-weight: 400; }
  .wp-block-table.tableau.est-cartes tbody td:first-child { width: auto; padding: 0 0 8px; font-size: 16px; font-weight: 800; letter-spacing: -.02em; color: var(--sapin); }
  .wp-block-table.tableau.est-cartes td:not(:first-child) { display: grid; grid-template-columns: minmax(0, 9em) minmax(0, 1fr); gap: 12px; align-items: baseline;
    border-top: 1px solid rgba(38, 38, 38, .14); }
  .wp-block-table.tableau.est-cartes td:not(:first-child)::before { content: attr(data-label); font-size: 11px; font-weight: 600; line-height: 1.3; color: rgba(38, 38, 38, .62); }
  /* la ligne Woodzy ressort, comme la colonne blanche sur ordinateur */
  .wp-block-table.tableau.est-cartes td:nth-child(2) { background: var(--neige); border-top: 0; border-radius: 12px; padding: 11px 12px; margin: 0 -6px 4px; font-weight: 700; }
  .wp-block-table.tableau.est-cartes td:nth-child(2)::before { color: var(--sapin); font-weight: 800; }
  .wp-block-table.tableau.est-cartes td:nth-child(3) { border-top: 0; }
}

/* pages simples (mentions légales, CGV, confidentialité) */
.page-simple { background: var(--neige); padding-block: clamp(60px, 8vw, 120px); }
.page-simple > .wrap { max-width: calc(820px + 2 * var(--gout)); }
.page-simple-titre { font-size: clamp(34px, 4vw, 56px); font-weight: 900; letter-spacing: -.05em; line-height: 1; margin-bottom: 32px; }
.page-simple-contenu > * + * { margin-top: 1em; }
.page-simple-contenu h2, .page-simple-contenu h3 { margin-top: 1.8em; font-size: clamp(20px, 2vw, 26px); }
.page-simple-contenu ul, .page-simple-contenu ol { padding-left: 1.2em; list-style: revert; }

@media (max-width: 860px) {
  .wp-block-site-title.marque { font-size: 23px; }
}


/* ==========================================================================
   BANDEAU DÉFILANT — la réassurance sort du héros et défile sous la guirlande
   ========================================================================== */
.bandeau { position: relative; background: var(--nuit); color: var(--neige); overflow: hidden; padding-block: 20px; }
.bandeau-liste { display: flex; flex-wrap: nowrap; width: max-content; margin: 0; }
.bandeau-liste li { display: inline-flex; align-items: center; gap: 18px; padding-right: 30px; white-space: nowrap;
  font-size: clamp(14px, 1.2vw, 17px); font-weight: 700; letter-spacing: -.02em; }
.bandeau-liste li::before { /* ampoule allumée */
  content: ""; flex: none; width: 10px; height: 10px; border-radius: 50%;
  background: rgb(var(--lueur-creme)); box-shadow: 0 0 0 3px rgba(var(--lueur), .25), 0 0 14px 4px rgba(var(--lueur), .75);
}
.bandeau-liste.est-double { animation: defile 34s linear infinite; }
.bandeau:hover .bandeau-liste.est-double { animation-play-state: paused; }
@keyframes defile { to { transform: translateX(-50%); } }

/* ==========================================================================
   INTRO « L'ALLUMAGE » — première arrivée seulement (classe posée dans <head>)
   ========================================================================== */
.intro { display: none; }
html.intro-on .intro {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  position: fixed; inset: 0; z-index: 300; overflow: hidden; color: var(--neige);
  background: radial-gradient(60% 55% at 50% 50%, #2e2924, var(--nuit) 72%);
  animation: rideau 1s cubic-bezier(.76, 0, .24, 1) 2.7s forwards;
}
html.intro-on.intro-passee .intro { animation: rideau .55s cubic-bezier(.76, 0, .24, 1) forwards; }
@keyframes rideau { to { transform: translateY(-101%); visibility: hidden; } }
.intro::before { opacity: .7; }
.intro::after { /* la guirlande s'allume ampoule par ampoule */
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 104px; pointer-events: none;
  background: url("assets/img/doodles/guirlande-allumage.svg") -60px top / 400px auto repeat-x;
}
.wp-block-image.intro-sapin { position: relative; z-index: 1; width: min(52vh, 420px, 78vw); margin: -4vh 0 0; }
.wp-block-image.intro-sapin img { width: 100%; height: auto; animation: allumage 1.4s ease .9s both; }
.wp-block-image.intro-sapin::before { /* halo qui éclot */
  content: ""; position: absolute; z-index: -1; inset: -20% -45%; pointer-events: none; opacity: 0; transform: scale(.55);
  background: radial-gradient(closest-side, rgba(var(--lueur), .6), rgba(var(--lueur), .2) 55%, rgba(var(--lueur), 0));
  animation: eclosion 1.6s ease 1.15s forwards;
}
@keyframes allumage { 0% { filter: brightness(.08) saturate(.3); } 55% { filter: brightness(1.3) saturate(1.15); } 100% { filter: none; } }
@keyframes eclosion { to { opacity: 1; transform: scale(1); } }
.intro-texte { position: absolute; left: var(--gout); right: var(--gout); bottom: 11vh; text-align: center;
  font-size: clamp(20px, 2.6vw, 36px); font-weight: 600; letter-spacing: -.035em; line-height: 1.1; }
.intro-texte strong { font-weight: 900; }
.intro-texte-1 { animation: intro-texte-1 1.65s ease .15s both; }
.intro-texte-2 { animation: intro-texte-2 .8s cubic-bezier(.2, .8, .2, 1) 1.6s both; }
@keyframes intro-texte-1 { 0% { opacity: 0; translate: 0 14px; } 25%, 70% { opacity: 1; translate: 0 0; } 100% { opacity: 0; translate: 0 -12px; } }
@keyframes intro-texte-2 { from { opacity: 0; translate: 0 16px; } to { opacity: 1; translate: 0 0; } }
.intro-passer { position: absolute; right: 26px; bottom: 22px; font-size: 12.5px; font-weight: 600; letter-spacing: 0; opacity: .72; cursor: pointer;
  text-decoration: underline; text-underline-offset: 5px; }
.intro-passer:hover { opacity: 1; }
html.intro-verrou, html.intro-verrou body { overflow: hidden; }

/* ==========================================================================
   MOTION — entrée du héros (après l'intro), vie permanente, apparitions au défilement
   Tout est coupé si l'utilisateur a demandé moins d'animations (aucune classe posée).
   ========================================================================== */
:root { --decalage: 0s; }
html.intro-on { --decalage: 2.75s; }
html.intro-on.intro-passee { --decalage: 0s; }

/* entrée chorégraphiée */
html.anim-hero .hero::after { animation: tombe-guirlande 1s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + 0s) both; }
html.anim-hero .surtitre { animation: monte .7s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + .1s) both; }
html.anim-hero .titre-hero { animation: apparait-doux .6s ease calc(var(--decalage) + .2s) both; }
html.anim-hero .titre-hero strong { animation: monte-fort .9s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + .28s) both; }
/* « lumineux » s'allume comme une ampoule : grésille, puis rayonne */
html.anim-hero .titre-hero em { animation: allume-mot 1.5s linear calc(var(--decalage) + .6s) both; }
@keyframes allume-mot {
  0% { opacity: 0; filter: none; }
  18% { opacity: .9; } 24% { opacity: .25; } 32% { opacity: 1; } 38% { opacity: .5; }
  46% { opacity: 1; filter: drop-shadow(0 0 0 rgba(var(--lueur), 0)) drop-shadow(0 0 0 rgba(var(--lueur), 0)); }
  70% { filter: drop-shadow(0 0 8px rgba(var(--lueur), 1)) drop-shadow(0 0 26px rgba(var(--lueur), .6)); }
  100% { opacity: 1; filter: drop-shadow(0 0 5px rgba(var(--lueur), .75)) drop-shadow(0 0 16px rgba(var(--lueur), .35)); }
}

html.anim-hero .sous-titre-hero { animation: monte .8s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + .62s) both; }
html.anim-hero .chapeau { animation: monte .8s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + .7s) both; }
html.anim-hero .hero-achat { animation: monte .8s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + .82s) both; }
html.anim-hero .hero .boutons { animation: monte .8s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + .94s) both; }
html.anim-hero .photo-givre { animation: glisse-droite 1.1s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + .15s) both; }
html.anim-hero .photo-tricot { animation: monte 1.1s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + .35s) both; }
html.anim-hero .produit-hero { animation: pose-sapin 1.3s cubic-bezier(.3, 1.35, .5, 1) calc(var(--decalage) + .3s) both; }
html.anim-hero .pastille-stock { animation: pop 0.8s cubic-bezier(.3, 1.6, .5, 1) calc(var(--decalage) + 1.15s) both; }
html.anim-hero .cote { animation: trace 1s cubic-bezier(.6, 0, .2, 1) calc(var(--decalage) + 1.2s) both; }
@keyframes tombe-guirlande { from { opacity: 0; transform: translateY(-40px); } }
@keyframes apparait-doux { from { opacity: 0; } }
@keyframes monte { from { opacity: 0; translate: 0 24px; } }
@keyframes monte-fort { from { opacity: 0; translate: 0 .5em; clip-path: inset(0 0 100% 0); } to { clip-path: inset(0 0 -20% 0); } }
@keyframes glisse-droite { from { opacity: 0; translate: 60px 0; } }
@keyframes pose-sapin { from { opacity: 0; translate: 0 -70px; scale: .9; } }
@keyframes pop { from { opacity: 0; scale: .3; } }
@keyframes trace { from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0 0 0 0); } }

/* vie permanente */
html.js-anim .wp-block-image.produit-hero img,
html.js-anim .wp-block-image.produit-final img { animation: flotte 6.5s ease-in-out infinite; transform-origin: 50% 100%; }
@keyframes flotte { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-10px) rotate(1.2deg); } }
html.js-anim .wp-block-image.produit::before { animation: respire 4.8s ease-in-out infinite; }
@keyframes respire { 50% { opacity: .72; transform: scale(.93); } }
html.js-anim .hero-visuel::before { animation: gigote 3.4s ease-in-out infinite; }
html.js-anim .hero-visuel::after, html.js-anim .nuit-texte::before { animation: tourne 14s linear infinite; }
@keyframes gigote { 0%, 100% { transform: rotate(10deg) scale(1); } 50% { transform: rotate(-8deg) scale(1.12); } }
@keyframes tourne { to { transform: rotate(360deg); } }
/* les doodles du héros arrivent après le sapin (au lever du rideau, rien n'est déjà posé) */
html.anim-hero .hero-grille::after { animation: dessine .9s cubic-bezier(.6, 0, .2, 1) calc(var(--decalage) + 1.05s) both; }
html.anim-hero .hero-visuel::before { animation: pop .7s cubic-bezier(.3, 1.6, .5, 1) calc(var(--decalage) + 1.3s) both, gigote 3.4s ease-in-out calc(var(--decalage) + 2s) infinite; }
html.anim-hero .hero-visuel::after { animation: pop .7s cubic-bezier(.3, 1.6, .5, 1) calc(var(--decalage) + 1.45s) both, tourne 14s linear infinite; }
@keyframes dessine { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(-10% -10% -10% 0); } }
html.js-anim .wp-block-button.bouton-plein:not(.bouton-petit) .wp-block-button__link { animation: appel 2.8s ease-in-out infinite; }
@keyframes appel { 0%, 100% { box-shadow: 0 0 0 0 rgba(var(--lueur), 0); } 50% { box-shadow: 0 0 0 6px rgba(var(--lueur), .32), 0 0 34px 8px rgba(var(--lueur), .38); } }

/* parallaxe à la souris (variables posées par app.js) */
.photo-givre { translate: calc(var(--px, 0) * -14px) calc(var(--py, 0) * -10px); }
.photo-tricot { translate: calc(var(--px, 0) * 10px) calc(var(--py, 0) * 8px); }
.produit-hero { translate: calc(var(--px, 0) * 20px) calc(var(--py, 0) * 12px); }
.pastille-stock { translate: calc(var(--px, 0) * -24px) calc(var(--py, 0) * -16px); }
.hero.suit-souris :is(.photo-givre, .photo-tricot, .produit-hero, .pastille-stock) { transition: translate .7s cubic-bezier(.2, .8, .2, 1); }

/* apparitions au défilement (classe .apparait posée par app.js) */
html.js-anim .apparait { opacity: 0; translate: 0 34px; transition: opacity .9s ease var(--retard, 0s), translate 1s cubic-bezier(.2, .8, .2, 1) var(--retard, 0s); }
html.js-anim .apparait.est-visible { opacity: 1; translate: 0 0; }

/* rareté : la jauge se remplit sapin par sapin */
/* les « 20 » comptent de 00 à 20 (app.js) : même police et mêmes chiffres que le vrai texte,
   pour que la fin du compte se pose exactement sur le « 20 » réel, sans saut */
.compte { position: relative; color: transparent !important; }
.compte::after { content: attr(data-n); position: absolute; inset: 0; color: var(--couleur-compte, currentColor); pointer-events: none; }
html.js-anim .rarete .jauge-sapin { scale: 0; transition: scale .5s cubic-bezier(.3, 1.7, .5, 1); }
html.js-anim .rarete.est-visible .jauge-sapin { scale: 1; }
html.js-anim .rarete .jauge-sapin { transition-delay: calc(.3s + var(--i, 1) * 45ms); }
html.js-anim .rarete .jauge-grande .jauge-sapin { transition-delay: calc(.3s + var(--i, 1) * 24ms); }

/* nuit : le sapin s'allume quand on arrive dans la section */
html.js-anim .nuit .wp-block-image.produit-nuit img { filter: brightness(.22) saturate(.6); transition: filter 1.8s ease .25s; }
html.js-anim .nuit.est-visible .wp-block-image.produit-nuit img { filter: none; }
html.js-anim .nuit .wp-block-image.produit-nuit::before { opacity: 0; transition: opacity 1.8s ease .6s; animation: none; }
html.js-anim .nuit.est-visible .wp-block-image.produit-nuit::before { opacity: 1; }

/* moins d'animations : versions fixes des SVG animés */
@media (prefers-reduced-motion: reduce) {
  .hero::after { background-image: url("assets/img/doodles/suspensions-guirlande-fixe.svg"), url("assets/img/doodles/guirlande-claire-fixe.svg"); }
  .nuit::before { background-image: url("assets/img/doodles/guirlande-claire-fixe.svg"); }
  .hero::before, .hero-grille::before, .intro::before, .nuit::after, .final::after { display: none; }
}

/* ---------- page de paiement (template page-checkout) ---------- */
.entete-paiement { background: var(--sapin); color: var(--creme); padding: 16px 0; }
.entete-paiement-rangee { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.entete-paiement .wp-block-site-logo.marque-logo img { width: 120px; }
.entete-paiement-note { margin: 0; font-size: 13px; font-weight: 600; color: var(--sapin-clair); text-align: right; }
.entete-paiement-note::before { content: ""; display: inline-block; vertical-align: -2px; width: 14px; height: 14px; margin-right: 8px; background: currentColor;
  -webkit-mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat; mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat; }
@media (max-width: 560px) { .entete-paiement-note .note-plus { display: none; } .entete-paiement .wp-block-site-logo.marque-logo img { width: 100px; } }

/* =====================================================================
   TUNNEL D'ACHAT : panier, paiement, confirmation (pages WooCommerce classiques)
   Même univers que la landing : cartes neige sur fond givre, vert sapin, champs amples.
   ===================================================================== */
body:is(.woocommerce, .woocommerce-page) main.tunnel.wp-block-group { padding: clamp(22px, 3vw, 44px) 0 clamp(56px, 7vw, 110px); }
.tunnel { --pad: clamp(20px, 2.6vw, 34px); --trait: rgba(29, 69, 48, .13); --doux: rgba(38, 38, 38, .62); --carte-ombre: 0 26px 54px -36px rgba(20, 51, 35, .55); }
.tunnel > .wrap { max-width: calc(1140px + 2 * var(--gout)); }
body .tunnel .entry-content > .woocommerce, body.woocommerce-page .tunnel .woocommerce { max-width: none; margin-inline: 0; }

body:is(.woocommerce-cart, .woocommerce-checkout, .woocommerce-account, .single-product) .barre-achat { display: none !important; }

/* retour, titre, étapes */
.tunnel-retour { margin: 0; font-size: 13px; font-weight: 600; letter-spacing: -.01em; }
.tunnel-retour a { display: inline-flex; align-items: center; gap: 8px; color: var(--sapin); text-decoration: none; }
.tunnel-retour a::before { content: "←"; transition: transform .2s ease; }
.tunnel-retour a:hover::before { transform: translateX(-4px); }
.tunnel-retour a:hover { text-decoration: underline; text-underline-offset: 3px; }
.fiche-retour { margin-bottom: clamp(14px, 2vw, 26px); }
.tunnel-tete { display: grid; gap: 12px; margin-bottom: clamp(20px, 2.6vw, 34px); }
.tunnel-titre { margin: 2px 0 0; font-size: clamp(30px, 3.8vw, 50px); font-weight: 900; line-height: .98; letter-spacing: -.055em; color: var(--sapin); }
.tunnel-etapes { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0 0; padding: 0; counter-reset: etape; font-size: 12.5px; font-weight: 600; letter-spacing: -.01em; }
.tunnel-etapes li { counter-increment: etape; display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px 6px 6px; border-radius: 999px; background: rgba(255, 255, 255, .45); color: var(--doux); }
.tunnel-etapes li::before { content: counter(etape); display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: rgba(38, 38, 38, .1); color: var(--nuit); font-size: 11px; font-weight: 800; }
/* étape en cours */
.woocommerce-cart .tunnel-etapes li:nth-child(1),
.woocommerce-checkout:not(.woocommerce-order-received) .tunnel-etapes li:nth-child(2),
.woocommerce-order-received .tunnel-etapes li:nth-child(3) { background: var(--neige); color: var(--nuit); box-shadow: 0 8px 18px -14px rgba(20, 51, 35, .7); }
.woocommerce-cart .tunnel-etapes li:nth-child(1)::before,
.woocommerce-checkout:not(.woocommerce-order-received) .tunnel-etapes li:nth-child(2)::before,
.woocommerce-order-received .tunnel-etapes li:nth-child(3)::before { background: var(--sapin); color: var(--neige); }
/* étapes déjà faites */
.woocommerce-checkout .tunnel-etapes li:nth-child(1)::before,
.woocommerce-order-received .tunnel-etapes li:nth-child(2)::before { content: "✓"; background: var(--sapin-clair); color: var(--sapin); }
.woocommerce-order-received .tunnel-retour { display: none; }

/* cartes */
.tunnel :is(#customer_details, #order_review, .cart_totals, form.woocommerce-cart-form, form.checkout_coupon, form.woocommerce-form-login, .woocommerce-order) {
  background: var(--neige); border: 0; border-radius: 26px; box-shadow: var(--carte-ombre); padding: var(--pad);
}

/* ---------- champs ---------- */
.tunnel .woocommerce form .form-row { float: none; width: auto; margin: 0 0 16px; padding: 0; }
.tunnel .woocommerce form .form-row label { display: block; margin: 0 0 7px; font-size: 12.5px; font-weight: 700; line-height: 1.3; letter-spacing: -.01em; color: var(--nuit); }
.tunnel .woocommerce form .form-row :is(.required, abbr.required) { color: var(--sapin); text-decoration: none; border: 0; }
.tunnel .woocommerce form .form-row .optional { font-weight: 400; color: var(--doux); }
.tunnel .woocommerce :is(input.input-text, input[type="text"], input[type="email"], input[type="tel"], input[type="password"], input[type="number"], textarea, select),
.tunnel .woocommerce form .form-row :is(input.input-text, textarea.input-text, select),
.tunnel .select2-container .select2-selection--single {
  width: 100%; box-sizing: border-box; min-height: 52px; margin: 0; padding: 13px 16px;
  font: inherit; font-size: 15px; font-weight: 400; line-height: 1.5; letter-spacing: -.01em; color: var(--nuit);
  background: var(--neige); border: 1.5px solid rgba(29, 69, 48, .22); border-radius: 14px; box-shadow: none; outline: none;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.tunnel .woocommerce textarea { min-height: 96px; height: auto; resize: vertical; }
.tunnel .woocommerce :is(input, textarea)::placeholder { color: rgba(38, 38, 38, .36); opacity: 1; }
.tunnel .woocommerce :is(input.input-text, input[type="text"], input[type="email"], input[type="tel"], input[type="password"], input[type="number"], textarea, select):focus,
.tunnel .select2-container--focus .select2-selection--single, .tunnel .select2-container--open .select2-selection--single {
  border-color: var(--sapin); box-shadow: 0 0 0 4px rgba(180, 215, 189, .7);
}
.tunnel .woocommerce .select2-container .select2-selection--single { display: flex; align-items: center; height: auto; min-height: 52px; padding: 13px 16px; margin: 0; }
body .tunnel .woocommerce form .form-row .select2-container .select2-selection--single .select2-selection__rendered { padding: 0 26px 0 0; line-height: 1.5; color: var(--nuit); flex: 1; min-width: 0; }
.tunnel .select2-container--default .select2-selection--single .select2-selection__arrow { top: 0; right: 12px; height: 100%; }
.tunnel .woocommerce form .form-row.woocommerce-invalid :is(input.input-text, select, textarea, .select2-selection) { border-color: #a6402b; box-shadow: 0 0 0 4px rgba(166, 64, 43, .12); }
.tunnel .woocommerce form .form-row.woocommerce-validated :is(input.input-text, select, textarea, .select2-selection) { border-color: rgba(29, 69, 48, .5); }
.tunnel .woocommerce form .form-row .checkout-inline-error-message { margin: 6px 0 0; font-size: 12px; font-weight: 600; color: #a6402b; }
.tunnel .woocommerce :is(input[type="checkbox"], input[type="radio"]) { width: 18px; height: 18px; margin: 0 10px 0 0; vertical-align: -3px; accent-color: var(--sapin); flex: none; }
.tunnel .woocommerce form .form-row label:is(.checkbox, .woocommerce-form__label-for-checkbox), .tunnel .woocommerce form label:is(.checkbox, .woocommerce-form__label-for-checkbox) { position: relative; display: block; margin: 0; padding-left: 30px; font-size: 13.5px; font-weight: 500; line-height: 1.45; cursor: pointer; }
.tunnel .woocommerce form label:is(.checkbox, .woocommerce-form__label-for-checkbox) input { position: absolute; left: 0; top: 1px; margin: 0; }

/* ---------- boutons ---------- */
.tunnel .woocommerce :is(a.button, button.button, input.button) {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px; margin: 0; padding: 15px 24px 16px;
  font: inherit; font-size: 14px; font-weight: 650; line-height: 1.2; letter-spacing: -.01em; text-decoration: none;
  color: var(--sapin); background: transparent; border: 1.5px solid rgba(29, 69, 48, .32); border-radius: 999px; cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, border-color .2s ease, opacity .2s ease;
}
.tunnel .woocommerce :is(a.button, button.button, input.button):hover { background: rgba(29, 69, 48, .06); border-color: var(--sapin); color: var(--sapin); }
.tunnel .woocommerce :is(a.button, button.button):is(.alt, .checkout-button), .tunnel .woocommerce #place_order {
  width: 100%; float: none; padding: 20px 28px 21px; font-size: 16px; color: var(--neige); background: var(--sapin); border-color: var(--sapin);
}
.tunnel .woocommerce :is(a.button, button.button):is(.alt, .checkout-button)::after, .tunnel .woocommerce #place_order::after { content: "→"; font-weight: 500; transition: transform .2s ease; }
.tunnel .woocommerce :is(a.button, button.button):is(.alt, .checkout-button):hover, .tunnel .woocommerce #place_order:hover { background: var(--sapin-nuit); color: var(--neige); transform: translateY(-2px); box-shadow: 0 16px 26px -14px rgba(20, 51, 35, .7); }
.tunnel .woocommerce :is(a.button, button.button):is(.alt, .checkout-button):hover::after, .tunnel .woocommerce #place_order:hover::after { transform: translateX(4px); }
.tunnel .woocommerce :is(button.button, input.button):disabled, .tunnel .woocommerce :is(button.button, input.button)[disabled] { opacity: .45; cursor: default; padding: 15px 24px 16px; color: var(--sapin); background: transparent; }
.tunnel-assurances { list-style: none; display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 16px; margin: 16px 0 0; padding: 0; font-size: 11.5px; font-weight: 600; color: var(--doux); }
.tunnel-assurances li { display: inline-flex; align-items: center; gap: 6px; }
.tunnel-assurances li::before { content: ""; width: 12px; height: 12px; background: var(--sapin);
  -webkit-mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat; mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat; }

/* ---------- messages ---------- */
.tunnel :is(.woocommerce-notices-wrapper, .wc-block-store-notices):empty { display: none; }
.tunnel .wc-block-components-notice-banner { margin: 0 0 14px; padding: 13px 18px; border: 0; border-radius: 16px; background: var(--neige); color: var(--nuit); font-size: 13.5px; box-shadow: var(--carte-ombre); align-items: center; }
.tunnel .wc-block-components-notice-banner > svg { background: var(--sapin); fill: var(--neige); border-radius: 50%; flex: none; }
.tunnel .wc-block-components-notice-banner.is-error > svg { background: #a6402b; }
.tunnel .wc-block-components-notice-banner a { color: var(--sapin); font-weight: 700; }
.tunnel .wc-block-components-notice-banner .button { margin-left: auto; padding: 9px 16px 10px; font-size: 12.5px; white-space: nowrap; }
.tunnel :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) { margin: 0 0 14px; padding: 14px 18px; border: 0; border-radius: 16px; background: var(--neige); color: var(--nuit); font-size: 13.5px; list-style: none; box-shadow: var(--carte-ombre); }
.tunnel :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before { display: none; }

/* =====================================================================
   PAIEMENT
   ===================================================================== */
/* « Déjà client ? » et « Code promo ? » : deux liens discrets au-dessus du formulaire */
.woocommerce-checkout .tunnel :is(.woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle) { display: inline-block; margin: 0 8px 12px 0; vertical-align: top; }
.woocommerce-checkout .tunnel :is(.woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle) :is(.wc-block-components-notice-banner, .woocommerce-info) { margin: 0; padding: 9px 16px 10px !important; background: rgba(255, 255, 255, .5); box-shadow: none; border-radius: 999px; font-size: 12.5px; color: var(--doux); }
.woocommerce-checkout .tunnel :is(.woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle) svg { display: none; }
.tunnel :is(form.checkout_coupon, form.woocommerce-form-login) { margin: 0 0 18px; padding: calc(var(--pad) * .8) var(--pad); }
.tunnel :is(form.checkout_coupon, form.woocommerce-form-login) > p:not(.form-row) { margin: 0 0 14px; font-size: 13px; color: var(--doux); }
.tunnel form.checkout_coupon { display: flex; flex-wrap: wrap; align-items: stretch; gap: 10px; }
.tunnel form.checkout_coupon .form-row { margin: 0; }
.tunnel form.checkout_coupon .form-row-first { flex: 1 1 220px; }
.tunnel form.checkout_coupon .clear { display: none; }
.tunnel form.woocommerce-form-login { display: grid; grid-template-columns: 1fr 1fr; column-gap: 14px; }
.tunnel form.woocommerce-form-login > * { grid-column: 1 / -1; }
.tunnel form.woocommerce-form-login > .form-row-first { grid-column: 1; }
.tunnel form.woocommerce-form-login > .form-row-last { grid-column: 2; }
.tunnel form.woocommerce-form-login .lost_password { margin: 0; font-size: 12.5px; }
.tunnel form.woocommerce-form-login .lost_password a { color: var(--sapin); }
.tunnel form.woocommerce-form-login .woocommerce-form-login__rememberme { margin-right: 16px; }
.tunnel form.woocommerce-form-login .password-input { display: block; position: relative; }

/* la grille : coordonnées à gauche, commande et paiement à droite */
.woocommerce-checkout .tunnel form.checkout { display: grid; grid-template-columns: minmax(0, 1fr); margin-top: 6px; }
.woocommerce-checkout .tunnel form.checkout > * { grid-column: 1 / -1; min-width: 0; }
/* !important : un ancien CSS personnalisé de la page (colonnes à 40 % / 55 %, ligne « Expédition » à 126 %) est neutralisé ici */
body.woocommerce-checkout .tunnel .woocommerce form.checkout :is(#customer_details, #order_review, #order_review_heading) { float: none !important; clear: none !important; width: auto !important; margin-right: 0 !important; }
body .tunnel .woocommerce #order_review table.shop_table tr.woocommerce-shipping-totals.shipping :is(th, td) { width: auto !important; margin-bottom: 0 !important; }
.tunnel .entry-content { margin-top: 0; }
@media (min-width: 981px) {
  .woocommerce-checkout .tunnel form.checkout { grid-template-columns: minmax(0, 1.06fr) minmax(0, .94fr); grid-template-rows: auto auto 1fr; column-gap: clamp(22px, 2.8vw, 40px); align-items: start; }
  .woocommerce-checkout .tunnel form.checkout > .woocommerce-NoticeGroup { grid-row: 1; }
  .woocommerce-checkout .tunnel form.checkout > .wcpay-express-checkout-wrapper { grid-column: 1; grid-row: 2; }
  .woocommerce-checkout .tunnel form.checkout > #customer_details { grid-column: 1; grid-row: 3; }
  .woocommerce-checkout .tunnel form.checkout > #order_review_heading { grid-column: 2; grid-row: 2; }
  .woocommerce-checkout .tunnel form.checkout > #order_review { grid-column: 2; grid-row: 2 / span 2; }
}

/* paiement express (Apple Pay, Google Pay) : une ligne discrète, seulement quand un bouton est réellement affiché (v1.14.3 : plus de carte ni de séparateur) */
.tunnel .wcpay-express-checkout-wrapper { display: block; margin: 0; }
.woocommerce-checkout .tunnel .wcpay-express-checkout-wrapper:has(#wcpay-express-checkout-element.is-ready) {
  display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 8px 14px;
  margin: 0 0 14px; padding: 0 4px; background: none; border-radius: 0; box-shadow: none;
}
.woocommerce-checkout .tunnel .wcpay-express-checkout-wrapper:has(#wcpay-express-checkout-element.is-ready)::before { content: "Paiement express"; display: block; flex: none; margin: 0; font-size: 12.5px; font-weight: 700; letter-spacing: -.01em; color: var(--sapin); }
.woocommerce-checkout .tunnel .wcpay-express-checkout-wrapper #wcpay-express-checkout-element { flex: 1 1 150px; min-width: 0; max-width: 320px; margin: 0; } /* un bouton : 320 px au plus ; deux (Apple Pay et Google Pay) : Stripe les range côte à côte si la place le permet */
.woocommerce-checkout .tunnel .wcpay-express-checkout-wrapper > wc-order-attribution-inputs { display: none; } /* champs cachés : ils ne doivent pas compter dans la ligne */
.woocommerce-checkout .tunnel #wcpay-express-checkout-button-separator { display: none !important; }
.tunnel #wcpay-express-checkout-button-separator { margin: 14px 0 12px !important; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--doux); }

/* coordonnées */
.tunnel #customer_details :is(.col-1, .col-2) { float: none; width: auto; max-width: none; }
.tunnel #customer_details h3 { margin: 0 0 18px; font-size: 20px; font-weight: 800; line-height: 1.1; letter-spacing: -.04em; color: var(--sapin); }
.tunnel #customer_details :is(.woocommerce-billing-fields__field-wrapper, .woocommerce-shipping-fields__field-wrapper) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 14px; }
.tunnel #customer_details :is(.woocommerce-billing-fields__field-wrapper, .woocommerce-shipping-fields__field-wrapper) > * { grid-column: 1 / -1; }
.tunnel #customer_details .form-row-first, .tunnel #customer_details :is(#billing_postcode_field, #shipping_postcode_field) { grid-column: 1; }
.tunnel #customer_details .form-row-last, .tunnel #customer_details :is(#billing_city_field, #shipping_city_field) { grid-column: 2; }
.tunnel #customer_details .woocommerce-account-fields .form-row { margin-bottom: 0; }
.tunnel #customer_details .col-2 { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--trait); }
.tunnel #customer_details #ship-to-different-address { margin: 0 0 16px; font-size: 14px; font-weight: 600; letter-spacing: -.01em; color: var(--nuit); }
.tunnel .woocommerce #customer_details #ship-to-different-address label { font-size: 14px; font-weight: 600; }
.tunnel #customer_details .woocommerce-additional-fields .form-row { margin-bottom: 0; }

/* commande et paiement */
.tunnel #order_review_heading { position: relative; z-index: 1; height: 0; margin: 0; padding: 0 var(--pad); overflow: visible; transform: translateY(var(--pad)); font-size: 20px; font-weight: 800; line-height: 1.1; letter-spacing: -.04em; color: var(--sapin); }
.tunnel #order_review { padding-top: calc(var(--pad) + 44px); }
.tunnel .woocommerce table.shop_table { width: 100%; margin: 0; border: 0; border-radius: 0; border-collapse: collapse; background: none; }
.tunnel .woocommerce table.shop_table :is(thead, tbody, tfoot) :is(th, td) { padding: 12px 0; border: 0; background: none; font-size: 14px; line-height: 1.45; vertical-align: top; text-align: left; }
.tunnel table.woocommerce-checkout-review-order-table { margin-bottom: 20px; }
.tunnel table.woocommerce-checkout-review-order-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table tbody td { padding: 2px 0 16px; border-bottom: 1px solid var(--trait); }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table td.product-name { font-weight: 600; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table td.product-name:has(.recap-vignette) { position: relative; min-height: 58px; padding-left: 72px; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table :is(tbody td.product-total, tfoot td) { text-align: right; white-space: nowrap; padding-left: 14px; }
.tunnel table.woocommerce-checkout-review-order-table td.product-total { font-weight: 600; }
.tunnel .recap-vignette { position: absolute; left: 0; top: 2px; width: 58px; height: 58px; border-radius: 14px; overflow: hidden; background: var(--sapin); }
.tunnel .recap-vignette img { display: block; width: 100%; height: 100%; object-fit: contain; padding: 4px; box-sizing: border-box; }
.tunnel .product-quantity { font-weight: 500; color: var(--doux); white-space: nowrap; }
.tunnel dl.variation { display: block; margin: 4px 0 0; padding: 0; border: 0; font-size: 12.5px; font-weight: 400; line-height: 1.5; color: var(--doux); overflow: hidden; }
.tunnel dl.variation dt { float: left; clear: left; margin: 0 5px 0 0; padding: 0; font-weight: 600; }
.tunnel dl.variation dd { margin: 0; padding: 0; float: none; }
.tunnel dl.variation dd p { margin: 0; }
.tunnel .woocommerce table.shop_table tfoot th { font-weight: 500; color: var(--doux); }
.tunnel .woocommerce table.shop_table :is(tfoot, tbody) tr.order-total :is(th, td) { padding-top: 16px; border-top: 1px solid var(--trait); font-size: 19px; font-weight: 800; letter-spacing: -.03em; color: var(--sapin); }
.tunnel table.shop_table tr.order-total small { display: block; font-size: 11.5px; font-weight: 500; letter-spacing: 0; color: var(--doux); }
/* « TTC » à côté du total, mention de TVA sur sa propre ligne */
.tunnel table.shop_table tr.order-total small.total-ttc, .tunnel .total-ttc { display: inline; margin-left: .25em; font-size: .56em; font-weight: 600; letter-spacing: .05em; color: var(--sapin); }
body .tunnel .woocommerce table.shop_table tr.total-mention td { padding: 0 0 4px; border: 0; text-align: right; white-space: normal; font-size: 11.5px; font-weight: 500; line-height: 1.4; letter-spacing: 0; color: var(--doux); }
body.woocommerce-cart .tunnel .cart_totals tr.total-mention { justify-content: flex-end; border-top: 0; }
body.woocommerce-cart .tunnel .cart_totals tr.total-mention td { padding: 0 0 12px; text-align: right !important; font-weight: 500; }
body.woocommerce-cart .tunnel .cart_totals tr.order-total :is(th, td) { padding-bottom: 6px; }
/* livraison : les choix sous l'intitulé, sur toute la largeur (points relais compris) */
.tunnel .woocommerce table.shop_table :is(tfoot, tbody) tr.woocommerce-shipping-totals :is(th, td) { display: block; width: auto; padding: 12px 0 0; text-align: left; white-space: normal; }
.tunnel .woocommerce table.shop_table :is(tfoot, tbody) tr.woocommerce-shipping-totals td { padding: 4px 0 12px; font-weight: 600; }
.tunnel table.shop_table tr.woocommerce-shipping-totals td::before { display: none; }
/* récapitulatif du paiement : chaque ligne se met en page seule. Dans un tableau, le grand total (« 50,48 € TTC »)
   imposait sa largeur à toute la colonne des prix et écrasait le nom du produit sur téléphone. */
.tunnel .woocommerce table.woocommerce-checkout-review-order-table, .tunnel .woocommerce table.woocommerce-checkout-review-order-table :is(tbody, tfoot) { display: block; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table :is(tbody, tfoot) tr { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table :is(tbody, tfoot) tr > :is(th, td) { display: block; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table td.product-name { flex: 1 1 auto; min-width: 0; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table :is(tbody td.product-total, tfoot td) { flex: none; padding-left: 0; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table tbody tr { border-bottom: 1px solid var(--trait); }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table tbody td { border-bottom: 0; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table tbody tr + tr td { padding-top: 16px; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table tbody tr + tr .recap-vignette { top: 16px; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.order-total { align-items: baseline; border-top: 1px solid var(--trait); }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.order-total :is(th, td) { border-top: 0; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.woocommerce-shipping-totals { display: block; }
.tunnel .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.total-mention { justify-content: flex-end; }
/* modes de livraison : le nom à gauche, le prix lisible, pas de coupure au milieu d'un prix */
.tunnel ul#shipping_method li label .amount { white-space: nowrap; }
.tunnel ul#shipping_method { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.tunnel ul#shipping_method li { display: flex; align-items: flex-start; margin: 0; padding: 0; text-indent: 0; font-size: 13.5px; }
.tunnel ul#shipping_method li label { display: inline; margin: 0; font-weight: 500; }
.tunnel ul#shipping_method li input { margin: 2px 10px 0 0; }
.tunnel .woocommerce-shipping-destination { margin: 8px 0 0; font-size: 12.5px; color: var(--doux); }

/* moyens de paiement */
.tunnel #payment { background: none; border-radius: 0; }
.tunnel #payment ul.payment_methods { list-style: none; display: grid; gap: 10px; margin: 0 0 18px; padding: 0; border: 0; }
.tunnel #payment ul.payment_methods::before, .tunnel #payment ul.payment_methods::after { display: none; }
.tunnel #payment ul.payment_methods li.wc_payment_method { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; column-gap: 10px; margin: 0; padding: 15px 16px; border: 1.5px solid rgba(29, 69, 48, .2); border-radius: 18px; background: var(--neige); line-height: 1.4; transition: border-color .2s ease, box-shadow .2s ease; }
.tunnel #payment ul.payment_methods li.wc_payment_method::before, .tunnel #payment ul.payment_methods li.wc_payment_method::after { display: none; }
.tunnel #payment ul.payment_methods li.wc_payment_method > :not(input.input-radio, label) { grid-column: 1 / -1; }
.tunnel #payment ul.payment_methods li.wc_payment_method:has(> input:checked) { border-color: var(--sapin); box-shadow: 0 0 0 4px rgba(180, 215, 189, .55); }
.tunnel #payment ul.payment_methods li.wc_payment_method > input.input-radio { margin: 0; }
.tunnel #payment ul.payment_methods li.wc_payment_method > label { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: auto; margin: 0; font-size: 14.5px; font-weight: 700; letter-spacing: -.01em; cursor: pointer; vertical-align: middle; }
.tunnel #payment ul.payment_methods li.wc_payment_method > label img { float: none; max-height: 24px; margin: 0; }
.tunnel #payment ul.payment_methods li.wc_payment_method .payment-methods--logos { margin-left: auto; font-weight: 500; font-size: 12px; }
.tunnel #payment div.payment_box { margin: 14px 0 0; padding: 0; background: none; border-radius: 0; color: var(--nuit); font-size: 13px; line-height: 1.5; }
.tunnel #payment div.payment_box::before { display: none; }
.tunnel #payment div.payment_box p { margin: 0; color: var(--doux); }
.tunnel #payment div.payment_box fieldset { margin: 0; padding: 0 !important; border: 0; }
.tunnel .woocommerce #payment div.place-order { float: none; margin: 0; padding: 0; }
.tunnel #payment .woocommerce-terms-and-conditions-wrapper { margin: 0 0 14px; }
.tunnel #payment .woocommerce-privacy-policy-text p { margin: 0; font-size: 11.5px; line-height: 1.6; color: var(--doux); }
.tunnel #payment .woocommerce-privacy-policy-text a { color: var(--sapin); }
.tunnel .woocommerce #payment div.place-order .form-row { margin: 0 0 16px; padding: 0; }
/* cases facultatives au-dessus du bouton : création de compte, accord pour être recontacté */
.tunnel .woocommerce #payment div.place-order .form-row:is(.woodzy-compte, .woodzy-avis) { margin: 0 0 12px; }
.tunnel .woocommerce #payment div.place-order .form-row:is(.woodzy-compte, .woodzy-avis) + #place_order { margin-top: 6px; }
.tunnel .woocommerce #payment .woodzy-compte label strong { font-weight: 700; color: var(--sapin); }
.tunnel .woocommerce #payment :is(.woodzy-compte, .woodzy-avis) label { font-weight: 500; color: var(--nuit); }
.tunnel .woocommerce #payment #place_order { float: none; width: 100%; margin: 0; }

/* =====================================================================
   PANIER
   ===================================================================== */
.woocommerce-cart .tunnel .woocommerce { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; align-items: start; }
.woocommerce-cart .tunnel .woocommerce > * { min-width: 0; }
@media (min-width: 981px) {
  .woocommerce-cart .tunnel .woocommerce { grid-template-columns: minmax(0, 1.3fr) minmax(0, .9fr); column-gap: clamp(22px, 2.8vw, 40px); }
  .woocommerce-cart .tunnel .woocommerce > :not(form.woocommerce-cart-form, .cart-collaterals) { grid-column: 1 / -1; }
}
.woocommerce-cart .tunnel .cart-collaterals { display: flow-root; width: auto; float: none; }
.woocommerce-cart .tunnel .cart-collaterals::before, .woocommerce-cart .tunnel .cart-collaterals::after { display: none; }
body.woocommerce-cart .tunnel .woocommerce .cart-collaterals .cart_totals { float: none !important; width: auto !important; }
.woocommerce-cart .tunnel .cart-collaterals .cross-sells { display: none; }

/* articles : une ligne par produit, sans tableau apparent */
.woocommerce-cart .tunnel table.cart, .woocommerce-cart .tunnel table.cart tbody { display: block; }
.woocommerce-cart .tunnel table.cart thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.woocommerce-cart .tunnel table.cart tr.cart_item { display: grid; grid-template-columns: 92px minmax(0, 1fr) auto auto 30px; grid-template-areas: "vignette nom quantite total retirer"; align-items: center; column-gap: 18px; padding: 0 0 18px; margin: 0 0 18px; border-bottom: 1px solid var(--trait); }
.woocommerce-cart .tunnel table.cart tr.cart_item td { display: block; padding: 0; text-align: left !important; }
.woocommerce-cart .tunnel table.cart tr.cart_item td::before { display: none; }
.woocommerce-cart .tunnel table.cart td.product-thumbnail { grid-area: vignette; display: block; }
.woocommerce-cart .tunnel table.cart td.product-thumbnail a { display: block; width: 92px; height: 92px; border-radius: 20px; overflow: hidden; background: var(--sapin); }
.woocommerce-cart .tunnel table.cart td.product-thumbnail img { display: block; width: 100%; height: 100%; object-fit: contain; padding: 6px; box-sizing: border-box; box-shadow: none; }
.woocommerce-cart .tunnel table.cart td.product-name { grid-area: nom; font-size: 15px; font-weight: 700; line-height: 1.3; letter-spacing: -.02em; }
.woocommerce-cart .tunnel table.cart td.product-name a { color: var(--nuit); text-decoration: none; }
.woocommerce-cart .tunnel table.cart td.product-name a:hover { color: var(--sapin); text-decoration: underline; text-underline-offset: 3px; }
.woocommerce-cart .tunnel table.cart tr.cart_item td.product-price { display: none; }
.woocommerce-cart .tunnel table.cart td.product-quantity { grid-area: quantite; }
.woocommerce-cart .tunnel table.cart td.product-quantity .quantity { margin: 0; }
.woocommerce-cart .tunnel table.cart td.product-quantity input.qty { width: 74px; min-height: 46px; padding: 8px 6px 8px 14px; text-align: center; border-radius: 12px; }
.woocommerce-cart .tunnel table.cart td.product-subtotal { grid-area: total; min-width: 78px; text-align: right !important; font-size: 15.5px; font-weight: 800; letter-spacing: -.02em; color: var(--sapin); white-space: nowrap; }
.woocommerce-cart .tunnel table.cart td.product-remove { grid-area: retirer; }
.woocommerce-cart .tunnel table.cart td.product-remove a.remove { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: rgba(38, 38, 38, .06); color: var(--nuit) !important; font-size: 18px; font-weight: 400; line-height: 1; text-decoration: none; transition: background-color .2s ease, transform .2s ease; }
.woocommerce-cart .tunnel table.cart td.product-remove a.remove:hover { background: var(--nuit); color: var(--neige) !important; transform: rotate(90deg); }
/* code promo et mise à jour */
.woocommerce-cart .tunnel table.cart tr:not(.cart_item) { display: block; }
.woocommerce-cart .tunnel table.cart td.actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 0; }
.woocommerce-cart .tunnel table.cart td.actions::before { display: none; }
.woocommerce-cart .tunnel table.cart td.actions .coupon { display: flex; flex-wrap: wrap; gap: 10px; float: none; padding: 0; margin: 0; flex: 1 1 100%; }
.woocommerce-cart .tunnel table.cart td.actions .coupon .input-text { flex: 1 1 150px; width: auto; min-height: 50px; float: none; margin: 0; padding: 12px 16px; border: 1.5px solid rgba(29, 69, 48, .22); }
.woocommerce-cart .tunnel table.cart td.actions .button { float: none; width: auto; }
.woocommerce-cart .tunnel table.cart td.actions > .button { margin-left: auto; padding: 6px 2px; border: 0; border-radius: 0; background: none; font-size: 13px; text-decoration: underline; text-underline-offset: 3px; }
.woocommerce-cart .tunnel table.cart td.actions > .button:disabled { padding: 6px 2px; opacity: .4; text-decoration: none; }
/* total */
.woocommerce-cart .tunnel .cart_totals h2 { margin: 0 0 12px; font-size: 20px; font-weight: 800; line-height: 1.1; letter-spacing: -.04em; color: var(--sapin); }
.woocommerce-cart .tunnel .cart_totals table.shop_table, .woocommerce-cart .tunnel .cart_totals tbody { display: block; }
.woocommerce-cart .tunnel .cart_totals tr { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; border-top: 1px solid var(--trait); }
.woocommerce-cart .tunnel .cart_totals tr:first-child { border-top: 0; }
.woocommerce-cart .tunnel .cart_totals tr :is(th, td) { display: block; width: auto; padding: 13px 0; border: 0; }
.woocommerce-cart .tunnel .cart_totals tr td::before { display: none; }
.woocommerce-cart .tunnel .cart_totals tr th { font-weight: 500; color: var(--doux); }
.woocommerce-cart .tunnel .cart_totals tr td { text-align: right !important; font-weight: 600; }
.woocommerce-cart .tunnel .cart_totals tr.woocommerce-shipping-totals { display: block; }
.woocommerce-cart .tunnel .cart_totals tr.woocommerce-shipping-totals td { text-align: left !important; font-weight: 400; }
.woocommerce-cart .tunnel .cart_totals tr.order-total :is(th, td) { border-top: 0; padding-top: 15px; }
.woocommerce-cart .tunnel .cart_totals .shipping-calculator-button { color: var(--sapin); font-size: 13px; font-weight: 600; }
.woocommerce-cart .tunnel .cart_totals .shipping-calculator-form { margin-top: 12px; }
.woocommerce-cart .tunnel .cart_totals .wc-proceed-to-checkout { margin: 8px 0 0; padding: 0; }
.woocommerce-cart .tunnel .cart_totals .wc-proceed-to-checkout a.checkout-button { margin: 0; font-size: 16px; }
.woocommerce-cart .tunnel .cart_totals .wcpay-express-checkout-wrapper { margin-top: 12px; }
/* panier vide */
.woocommerce-cart .tunnel .wc-empty-cart-message .wc-block-components-notice-banner { margin: 0; padding: 22px var(--pad); border-radius: 26px; font-size: 15px; }
.woocommerce-cart .tunnel .return-to-shop { margin: 0; }
.woocommerce-cart .tunnel .return-to-shop a.button { width: auto; color: var(--neige); background: var(--sapin); border-color: var(--sapin); }

/* =====================================================================
   CONFIRMATION (commande reçue)
   ===================================================================== */
.page-confirmation .tunnel-tete { margin-bottom: clamp(18px, 2.4vw, 28px); }
.tunnel .wc-block-order-confirmation-status { margin: 10px 0 0; font-size: inherit !important; }
.tunnel .wc-block-order-confirmation-status h1 { margin: 0; font-size: clamp(30px, 3.8vw, 50px); font-weight: 900; line-height: .98; letter-spacing: -.055em; color: var(--sapin); }
.tunnel .wc-block-order-confirmation-status p { margin: 12px 0 0; font-size: 15.5px; line-height: 1.5; color: var(--doux); }
.confirmation-carte { display: grid; gap: clamp(20px, 2.4vw, 30px); max-width: 860px; padding: var(--pad); background: var(--neige); border-radius: 26px; box-shadow: var(--carte-ombre); }
.confirmation-carte > * { margin: 0 !important; min-width: 0; }
.confirmation-carte > :empty { display: none; }
.confirmation-carte h2.wp-block-heading { margin: 0 0 10px; font-size: 18px !important; font-weight: 800; letter-spacing: -.04em; color: var(--sapin); }
.confirmation-carte .wc-block-order-confirmation-summary-list { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 16px; margin: 0; padding: 18px 20px; border-radius: 18px; background: var(--creme); }
.confirmation-carte .wc-block-order-confirmation-summary-list-item { display: block; margin: 0; padding: 0; border: 0; }
.confirmation-carte .wc-block-order-confirmation-summary-list-item__key { display: block; font-size: 10.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--doux); }
.confirmation-carte .wc-block-order-confirmation-summary-list-item__value { display: block; margin-top: 4px; font-size: 14.5px; font-weight: 700; letter-spacing: -.01em; overflow-wrap: anywhere; }
.confirmation-carte .wc-block-order-confirmation-summary-list-item__value .payment-methods--logos { display: none; }
.confirmation-carte table.wc-block-order-confirmation-totals__table { width: 100%; margin: 0; border: 0; border-radius: 0; border-collapse: collapse; }
.confirmation-carte table.wc-block-order-confirmation-totals__table :is(th, td) { padding: 13px 0; border: 0; border-top: 1px solid var(--trait); background: none; font-size: 14px; line-height: 1.45; text-align: left; vertical-align: top; }
.confirmation-carte table.wc-block-order-confirmation-totals__table thead :is(th, td) { padding-top: 0; border-top: 0; font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--doux); }
.confirmation-carte table.wc-block-order-confirmation-totals__table :is(th, td).wc-block-order-confirmation-totals__total { text-align: right; white-space: nowrap; padding-left: 14px; }
.confirmation-carte table.wc-block-order-confirmation-totals__table tbody td { font-weight: 600; }
.confirmation-carte table.wc-block-order-confirmation-totals__table tbody a { color: var(--nuit); text-decoration: none; }
.confirmation-carte table.wc-block-order-confirmation-totals__table tfoot th { font-weight: 500; color: var(--doux); }
.confirmation-carte table.wc-block-order-confirmation-totals__table tfoot tr:last-child :is(th, td) { font-size: 18px; font-weight: 800; letter-spacing: -.03em; color: var(--sapin); }
.confirmation-carte table.wc-block-order-confirmation-totals__table tfoot td:has(.mention-tva), .tunnel .woocommerce table.shop_table tfoot td:has(.mention-tva) { white-space: normal; font-size: 12.5px; font-weight: 500; color: var(--doux); }
.confirmation-carte .total-ttc { font-size: .6em; }
.confirmation-carte .wc-item-meta { list-style: none; margin: 4px 0 0; padding: 0; font-size: 12.5px; font-weight: 400; color: var(--doux); }
.confirmation-carte .wc-item-meta li { display: flex; flex-wrap: wrap; gap: 0 5px; margin: 0; }
.confirmation-carte .wc-item-meta p { margin: 0; }
.confirmation-carte .wc-item-meta-label { font-weight: 600; }
.confirmation-carte .wc-block-order-confirmation-address-wrapper { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; }
.confirmation-carte .wc-block-order-confirmation-address-wrapper .wp-block-column { margin: 0; }
.confirmation-carte :is(.wc-block-order-confirmation-shipping-address, .wc-block-order-confirmation-billing-address) { padding: 16px 18px; border: 1.5px solid var(--trait); border-radius: 16px; font-size: 13.5px; line-height: 1.6; }
.confirmation-carte address { font-style: normal; }
.confirmation-carte :is(.wc-block-order-confirmation-shipping-address, .wc-block-order-confirmation-billing-address) p { margin: 0; }
.confirmation-suite { margin-top: 26px; }
/* confirmation classique (si le template en blocs n'est pas utilisé) */
.tunnel .woocommerce-order { max-width: 860px; }
.tunnel .woocommerce-order .woocommerce-notice { margin: 0 0 20px; font-size: clamp(20px, 2.2vw, 26px); font-weight: 800; line-height: 1.2; letter-spacing: -.04em; color: var(--sapin); background: none; box-shadow: none; padding: 0; }
.tunnel .woocommerce-order ul.order_details { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; margin: 0 0 26px; padding: 18px; border-radius: 18px; background: var(--creme); }
.tunnel .woocommerce-order ul.order_details::before, .tunnel .woocommerce-order ul.order_details::after { display: none; }
.tunnel .woocommerce-order ul.order_details li { float: none; margin: 0; padding: 0; border: 0; font-size: 11px; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; color: var(--doux); }
.tunnel .woocommerce-order ul.order_details li strong { display: block; margin-top: 4px; font-size: 14.5px; font-weight: 700; letter-spacing: -.01em; text-transform: none; color: var(--nuit); overflow-wrap: anywhere; }
.tunnel .woocommerce-order :is(h2, h3) { margin: 26px 0 10px; font-size: 18px; font-weight: 800; letter-spacing: -.04em; color: var(--sapin); }
.tunnel .woocommerce-order .woocommerce-customer-details address { padding: 16px 18px; border: 1.5px solid var(--trait); border-radius: 16px; font-style: normal; font-size: 13.5px; line-height: 1.6; }
.tunnel .woocommerce-order .woocommerce-columns--addresses { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.tunnel .woocommerce-order .woocommerce-columns--addresses :is(.col-1, .col-2) { float: none; width: auto; }

/* =====================================================================
   FICHE PRODUIT : pastilles d'une extension remplacées par les cartes du thème, paiement express
   ===================================================================== */
form.woodzy-cartes .cfvsw-swatches-container { display: none !important; }
.fiche .wcpay-express-checkout-wrapper { margin-top: 12px; }

/* ---------- tunnel : téléphone ---------- */
@media (max-width: 980px) {
  .tunnel #order_review_heading { margin-top: 16px; }
}
@media (max-width: 640px) {
  .tunnel { --pad: 18px; }
  .tunnel :is(#customer_details, #order_review, .cart_totals, form.woocommerce-cart-form, form.checkout_coupon, form.woocommerce-form-login, .woocommerce-order) { border-radius: 22px; }
  .tunnel .woocommerce :is(input.input-text, input[type="text"], input[type="email"], input[type="tel"], input[type="password"], input[type="number"], textarea, select), .tunnel .select2-container .select2-selection--single { font-size: 16px; }
  .tunnel .woocommerce :is(a.button, button.button):is(.alt, .checkout-button), .tunnel .woocommerce #payment #place_order { padding: 19px 16px 20px; font-size: 14.5px; gap: 10px; }
  .tunnel-etapes { font-size: 11.5px; gap: 6px; }
  .tunnel-etapes li { padding: 5px 11px 5px 5px; gap: 6px; }
  .tunnel-etapes li::before { width: 21px; height: 21px; }
  .tunnel form.woocommerce-form-login { grid-template-columns: 1fr; }
  .tunnel form.woocommerce-form-login > :is(.form-row-first, .form-row-last) { grid-column: 1; }
  .woocommerce-checkout .tunnel :is(.woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle) { display: block; margin-right: 0; }
  .woocommerce-checkout .tunnel :is(.woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle) :is(.wc-block-components-notice-banner, .woocommerce-info) { border-radius: 16px; }
  .woocommerce-cart .tunnel table.cart tr.cart_item { grid-template-columns: 76px minmax(0, 1fr) 30px; grid-template-areas: "vignette nom retirer" "vignette quantite total"; row-gap: 10px; column-gap: 14px; align-items: start; }
  .woocommerce-cart .tunnel table.cart td.product-thumbnail a { width: 76px; height: 76px; border-radius: 16px; }
  .woocommerce-cart .tunnel table.cart td.product-subtotal { grid-column: 3; grid-row: 2; justify-self: end; align-self: center; min-width: 0; }
  .woocommerce-cart .tunnel table.cart td.product-quantity { align-self: center; }
  .woocommerce-cart .tunnel table.cart td.actions .coupon .button { width: 100%; }
  .woocommerce-cart .tunnel table.cart td.actions .coupon .button { flex: 1 1 auto; }
}

/* ---------- popup « M'avertir des prochains stocks » (<dialog id="alerte">, extension Woodzy · Prospects) ---------- */
.wp-block-button[hidden], .alerte [hidden] { display: none !important; }
.final .wp-block-button.bouton-lien .wp-block-button__link { color: var(--creme); }
.fiche-alerte { margin-top: 18px; }
html:has(.alerte[open]) { overflow: hidden; }
.alerte {
  width: min(820px, calc(100% - 32px)); max-width: none; max-height: calc(100dvh - 32px);
  margin: auto; padding: 0; border: 0; background: transparent; color: var(--nuit); overflow: visible;
}
.alerte::backdrop { background: rgba(20, 51, 35, .62); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.alerte[open] { animation: alerte-entree .5s cubic-bezier(.2, .8, .2, 1); }
.alerte[open]::backdrop { animation: alerte-fond .35s ease; }
@keyframes alerte-entree { from { opacity: 0; transform: translateY(26px) scale(.97); } }
@keyframes alerte-fond { from { opacity: 0; } }
.alerte-carte {
  position: relative; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  max-height: calc(100dvh - 32px); background: var(--creme); border-radius: 30px; overflow: hidden;
  box-shadow: 0 40px 90px -30px rgba(5, 20, 12, .8);
}
.alerte-visuel { position: relative; margin: 0; min-height: 100%; background: var(--sapin-nuit); }
.alerte-visuel img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 40%; }
.alerte-visuel::before { /* lueur chaude au cœur du sapin */
  content: ""; position: absolute; inset: 0; pointer-events: none; mix-blend-mode: soft-light;
  background: radial-gradient(60% 45% at 50% 55%, rgba(var(--lueur), .55), transparent 70%);
}
.alerte-visuel::after { /* étoile dessinée à la main */
  content: ""; position: absolute; left: 22px; top: 22px; width: 46px; height: 46px; background: var(--creme); transform: rotate(-12deg);
  -webkit-mask: url("assets/img/doodles/etoile-croquis.svg") center / contain no-repeat; mask: url("assets/img/doodles/etoile-croquis.svg") center / contain no-repeat;
}
.alerte-corps { position: relative; padding: 46px clamp(26px, 4vw, 46px) 34px; overflow-y: auto; overscroll-behavior: contain; }
.alerte-fermer {
  position: absolute; z-index: 2; top: 14px; right: 14px; width: 42px; height: 42px; display: grid; place-items: center;
  border: 0; border-radius: 50%; background: rgba(29, 69, 48, .08); color: var(--sapin); cursor: pointer; transition: background-color .2s ease, transform .25s ease;
}
.alerte-fermer:hover { background: rgba(29, 69, 48, .16); transform: rotate(90deg); }
.alerte-fermer svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; }
.alerte-surtitre {
  display: inline-flex; align-items: center; gap: 8px; margin: 0 0 16px; padding: 7px 16px 8px 12px;
  background: var(--neige); border-radius: var(--blob); transform: rotate(-2deg);
  font-size: 12.5px; font-weight: 600; letter-spacing: 0; color: var(--nuit);
}
.alerte-surtitre::before {
  content: ""; width: 15px; height: 15px; background: var(--sapin);
  -webkit-mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat; mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat;
}
.alerte-titre { margin: 0 0 12px; font-size: clamp(24px, 3vw, 30px); font-weight: 300; line-height: 1.05; letter-spacing: -.03em; color: var(--sapin); }
.alerte-titre strong { display: block; font-size: 1.3em; font-weight: 900; letter-spacing: -.05em; }
.alerte-chapeau { margin: 0 0 22px; font-size: 14px; line-height: 1.6; color: rgba(38, 38, 38, .8); }
.alerte-label { display: block; margin-bottom: 8px; font-size: 13px; font-weight: 700; color: var(--sapin); }
.alerte-champ {
  display: block; width: 100%; box-sizing: border-box; padding: 15px 18px; font: inherit; font-size: 16px; color: var(--nuit);
  background: var(--neige); border: 2px solid rgba(29, 69, 48, .2); border-radius: 16px; transition: border-color .2s ease, box-shadow .2s ease;
}
.alerte-champ::placeholder { color: rgba(38, 38, 38, .38); }
.alerte-champ:focus { outline: none; border-color: var(--sapin); box-shadow: 0 0 0 4px rgba(180, 215, 189, .7); }
.alerte-champ[aria-invalid="true"] { border-color: var(--nuit); box-shadow: 0 0 0 4px rgba(38, 38, 38, .1); }
.alerte-case { position: relative; display: flex; align-items: flex-start; gap: 12px; margin-top: 14px; font-size: 12.5px; line-height: 1.55; cursor: pointer; }
.alerte-case:first-of-type { margin-top: 18px; }
.alerte-case input { position: absolute; left: 0; top: 1px; width: 22px; height: 22px; margin: 0; opacity: 0; cursor: pointer; }
.alerte-coche {
  flex: none; display: grid; place-items: center; width: 22px; height: 22px; box-sizing: border-box; margin-top: 1px;
  background: var(--neige); border: 2px solid rgba(29, 69, 48, .35); border-radius: 7px; transition: background-color .15s ease, border-color .15s ease;
}
.alerte-coche::after {
  content: ""; width: 5px; height: 10px; margin-top: -2px; border: solid var(--neige); border-width: 0 2.5px 2.5px 0;
  transform: rotate(45deg) scale(0); transition: transform .2s cubic-bezier(.3, 1.4, .5, 1);
}
.alerte-case input:checked + .alerte-coche { background: var(--sapin); border-color: var(--sapin); }
.alerte-case input:checked + .alerte-coche::after { transform: rotate(45deg) scale(1); }
.alerte-case input:focus-visible + .alerte-coche { box-shadow: 0 0 0 4px rgba(180, 215, 189, .9); }
.alerte-case input[aria-invalid="true"] + .alerte-coche { border-color: var(--nuit); box-shadow: 0 0 0 4px rgba(38, 38, 38, .12); }
.alerte-case a { color: var(--sapin); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
.alerte-case em { font-style: normal; font-size: 10.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; opacity: .5; white-space: nowrap; }
.alerte-piege { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.alerte-erreur { margin: 14px 0 0; padding-left: 26px; position: relative; font-size: 13px; font-weight: 700; line-height: 1.45; color: var(--nuit); }
.alerte-erreur:empty { display: none; }
.alerte-erreur::before {
  content: "!"; position: absolute; left: 0; top: 0; width: 18px; height: 18px; display: grid; place-items: center;
  border-radius: 50%; background: var(--sapin); color: var(--neige); font-size: 11px; font-weight: 800;
}
.alerte-envoyer, .alerte-retour {
  display: inline-flex; justify-content: center; align-items: center; gap: 12px; width: 100%; margin-top: 22px; padding: 18px 26px 19px;
  font: inherit; font-size: 15px; font-weight: 650; letter-spacing: -.01em; color: var(--neige); background: var(--sapin);
  border: 0; border-radius: 999px; cursor: pointer; transition: transform .2s ease, box-shadow .2s ease, opacity .2s ease;
}
.alerte-envoyer::after { content: "→"; font-weight: 500; transition: transform .2s ease; }
.alerte-envoyer:hover, .alerte-retour:hover { transform: translateY(-2px); box-shadow: 0 14px 24px -12px rgba(20, 51, 35, .65); }
.alerte-envoyer:hover::after { transform: translateX(4px); }
.est-envoi .alerte-envoyer { opacity: .75; cursor: progress; }
.est-envoi .alerte-envoyer::after { content: ""; width: 14px; height: 14px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: tourne .7s linear infinite; }
.alerte-mention { margin: 14px 0 0; font-size: 11.5px; line-height: 1.5; text-align: center; color: rgba(38, 38, 38, .55); }
.alerte-merci { padding-top: 6px; outline: none; }
.alerte-merci-icone { position: relative; display: block; width: 64px; height: 64px; margin-bottom: 18px; }
.alerte-merci-icone::before { content: ""; position: absolute; inset: -16px; border-radius: 50%; background: radial-gradient(circle, rgba(var(--lueur), .55), transparent 68%); }
.alerte-merci-icone::after {
  content: ""; position: absolute; inset: 0; background: var(--sapin);
  -webkit-mask: url("assets/img/doodles/sapin-icone.svg") center / contain no-repeat; mask: url("assets/img/doodles/sapin-icone.svg") center / contain no-repeat;
}
.alerte-merci .alerte-chapeau { margin-bottom: 4px; }
.alerte-merci:not([hidden]) > * { animation: alerte-merci .5s cubic-bezier(.2, .8, .2, 1) both; }
.alerte-merci > :nth-child(2) { animation-delay: .06s; } .alerte-merci > :nth-child(3) { animation-delay: .12s; }
.alerte-merci > :nth-child(4) { animation-delay: .18s; } .alerte-merci > :nth-child(5) { animation-delay: .24s; }
@keyframes alerte-merci { from { opacity: 0; transform: translateY(12px); } }

@media (max-width: 680px) {
  .alerte { width: calc(100% - 24px); max-height: calc(100dvh - 24px); }
  .alerte-carte { grid-template-columns: 1fr; max-height: calc(100dvh - 24px); overflow-y: auto; overscroll-behavior: contain; border-radius: 26px; }
  .alerte-visuel { height: 116px; min-height: 0; }
  .alerte-visuel img { object-position: 50% 58%; }
  .alerte-visuel::after { left: 18px; top: 16px; width: 36px; height: 36px; }
  .alerte-corps { padding: 26px 22px 24px; overflow: visible; }
  .alerte-fermer { top: 12px; right: 12px; background: rgba(251, 239, 207, .9); }
  .alerte-fermer:hover { background: var(--creme); }
  .alerte-chapeau { margin-bottom: 18px; }
  .alerte-envoyer { white-space: nowrap; font-size: 13.5px; padding-inline: 18px; gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .alerte[open], .alerte[open]::backdrop, .alerte-merci:not([hidden]) > * { animation: none; }
}

/* ---------- téléphone : le sapin dès le premier écran ----------
   Ordre d'affichage : titre, sapin (composition réduite), prix, bouton, puis les deux phrases d'accroche.
   Le HTML ne change pas : .hero-texte laisse ses enfants se ranger dans la grille du héros. */
@media (max-width: 640px) {
  .hero { padding-top: 96px; }
  .hero .surtitre { display: none; } /* le bandeau du haut annonce déjà les précommandes */
  .hero-grille { gap: 0; }
  .hero-texte { display: contents; }
  .hero-texte > * { position: relative; z-index: 5; }
  .titre-hero { order: 1; }
  .hero-visuel { order: 2; height: clamp(170px, 29vh, 240px); margin: 2px 0 0; z-index: 4; }
  .hero-achat { order: 3; margin: 12px 0 14px; }
  .hero .boutons { order: 4; }
  .sous-titre-hero { order: 5; margin-top: 28px; }
  .hero .chapeau { order: 6; }
  .photo-givre { top: 4%; width: 70%; right: -12%; }
  .photo-tricot { width: 44%; left: -6%; bottom: 2%; }
  .produit-hero { height: 104%; bottom: -2%; }
  .wp-block-image.produit-hero figcaption { left: 46%; bottom: -3px; padding: 4px 10px 5px; font-size: 8.5px; } /* la mention « simulation » reste visible */
  .titre-gravure strong { font-size: clamp(28px, 8.6vw, 40px); } /* « personnalisée. » tient dans la largeur de l'écran */
  /* le bouton « Je précommande avec ce texte » était plus large qu'un écran de 360 px : il coupait le texte de la section */
  .gravure .wp-block-button { max-width: 100%; }
  .gravure .wp-block-button .wp-block-button__link { max-width: 100%; white-space: normal; text-align: center; font-size: clamp(12.5px, 3.55vw, 15px); padding-inline: clamp(16px, 4.6vw, 28px); }
  .pastille-stock { left: 0; top: -4%; padding: 10px 14px 12px; font-size: 9px; }
  .pastille-stock strong { font-size: 32px; margin-bottom: 2px; }
  .pastille-stock::before { width: 26px; height: 26px; right: -16px; top: -16px; }
  .cote { display: none; }
  .hero-visuel::before { width: 34px; height: 34px; }
  .hero-visuel::after { width: 30px; height: 30px; }
}

/* ---------- panneau d'achat (<dialog id="achat">) : formule, texte à graver, total, puis paiement ---------- */
.achat { width: min(500px, calc(100% - 32px)); }
.achat-carte {
  position: relative; max-height: calc(100dvh - 32px); overflow-y: auto; overscroll-behavior: contain;
  padding: 40px clamp(22px, 4vw, 38px) 30px; background: var(--creme); border-radius: 30px; box-shadow: 0 40px 90px -30px rgba(5, 20, 12, .8);
}
.achat .alerte-titre { margin-bottom: 20px; }
.achat-choix { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 0 0 20px; padding: 0; border: 0; min-width: 0; }
.achat-choix legend { padding: 0; }
.achat-option { position: relative; display: block; cursor: pointer; }
.achat-option input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.achat-option-corps {
  display: flex; flex-direction: column; gap: 3px; height: 100%; padding: 14px 16px 15px; border-radius: 18px;
  background: var(--neige); border: 2px solid rgba(29, 69, 48, .16); transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.achat-option:hover .achat-option-corps { transform: translateY(-2px); }
.achat-option input:checked + .achat-option-corps { border-color: var(--sapin); box-shadow: 0 0 0 4px rgba(180, 215, 189, .75); }
.achat-option input:focus-visible + .achat-option-corps { box-shadow: 0 0 0 4px rgba(180, 215, 189, .95); }
.achat-option-nom { font-size: 14px; font-weight: 700; line-height: 1.25; letter-spacing: -.01em; color: var(--nuit); }
.achat-option-prix { font-size: 14px; font-weight: 800; color: var(--sapin); }
.achat-option-note { margin-top: 4px; font-size: 11.5px; line-height: 1.45; color: rgba(38, 38, 38, .64); }
.achat-mention { font-weight: 400; color: rgba(38, 38, 38, .6); }
.achat-aide { margin: 8px 0 0; font-size: 11.5px; line-height: 1.5; color: rgba(38, 38, 38, .62); }
.achat-recap { margin: 20px 0 0; padding: 14px 18px; background: rgba(255, 255, 255, .6); border-radius: 18px; font-size: 13.5px; }
.achat-recap > div { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 5px 0; }
.achat-recap dt { color: rgba(38, 38, 38, .66); }
.achat-recap dd { margin: 0; font-weight: 600; text-align: right; }
.achat-recap .achat-total { margin-top: 6px; padding-top: 11px; border-top: 1px solid rgba(29, 69, 48, .16); }
.achat-recap .achat-total dt, .achat-recap .achat-total dd { font-size: 17px; font-weight: 800; letter-spacing: -.02em; color: var(--sapin); }
.achat-recap small { font-size: .6em; font-weight: 600; letter-spacing: .05em; }
.achat .alerte-envoyer { margin-top: 18px; }
@media (max-width: 680px) {
  .achat { width: calc(100% - 20px); margin-bottom: 10px; } /* posé en bas de l'écran, à portée de pouce */
  .achat-carte { max-height: calc(100dvh - 20px); padding: 34px 20px 22px; border-radius: 26px; }
  .achat .alerte-titre { margin-bottom: 16px; }
  .achat-option-corps { padding: 12px 13px 13px; }
  .achat-option-note { display: none; }
  /* tout le panneau tient dans un écran de téléphone, bouton compris */
  .achat .alerte-surtitre { display: none; }
  .achat .alerte-titre { margin-bottom: 14px; padding-right: 44px; font-size: 22px; }
  .achat .alerte-titre strong { display: inline; font-size: 1em; }
  .achat-choix { margin-bottom: 14px; }
  .achat .alerte-champ { padding: 12px 16px; }
  .achat-aide { margin-top: 6px; }
  .achat-recap { margin-top: 14px; padding: 9px 16px; }
  .achat-recap > div { padding: 3px 0; }
  .achat-recap .achat-total { margin-top: 4px; padding-top: 8px; }
  .achat .alerte-envoyer { margin-top: 14px; padding-block: 16px 17px; }
  .achat .alerte-mention { margin-top: 10px; }
}

/* ---------- consentement aux cookies ---------- */
.cookies[hidden], .cookies [hidden] { display: none !important; }
.cookies { position: fixed; z-index: 250; left: 16px; bottom: 16px; width: min(440px, calc(100% - 32px)); color: var(--nuit); }
.cookies-carte { padding: 20px 22px 18px; background: var(--neige); border-radius: 24px; box-shadow: 0 30px 70px -26px rgba(5, 20, 12, .7), 0 0 0 1px rgba(29, 69, 48, .08); }
.cookies-titre { margin: 0 0 6px; font-size: 15px; font-weight: 800; letter-spacing: -.02em; color: var(--sapin); }
.cookies-texte { margin: 0; font-size: 12.5px; line-height: 1.55; color: rgba(38, 38, 38, .78); }
.cookies-texte a { color: var(--sapin); font-weight: 700; text-underline-offset: 2px; }
.cookies-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 14px; }
.cookies-bouton {
  display: inline-flex; justify-content: center; align-items: center; padding: 12px 14px 13px; font: inherit; font-size: 13px; font-weight: 650; letter-spacing: -.01em;
  color: var(--neige); background: var(--sapin); border: 0; border-radius: 999px; cursor: pointer; transition: transform .2s ease, background-color .2s ease;
}
.cookies-bouton:hover { background: var(--sapin-nuit); transform: translateY(-1px); }
.cookies-lien { grid-column: 1 / -1; padding: 4px; font: inherit; font-size: 12px; font-weight: 600; color: var(--sapin); background: none; border: 0; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.cookies-choix { display: grid; gap: 10px; margin-top: 14px; }
.cookies-case { display: flex; align-items: flex-start; gap: 10px; padding: 11px 13px; background: rgba(195, 211, 225, .34); border-radius: 14px; font-size: 12px; line-height: 1.5; cursor: pointer; }
.cookies-case input { flex: none; width: 18px; height: 18px; margin: 1px 0 0; accent-color: var(--sapin); }
.cookies-case strong { display: block; font-size: 12.5px; color: var(--sapin); }
.cookies-choix .cookies-bouton { background: transparent; color: var(--sapin); box-shadow: inset 0 0 0 1.5px rgba(29, 69, 48, .4); }
.cookies-choix .cookies-bouton:hover { background: rgba(29, 69, 48, .07); }
.lien-cookies { visibility: hidden; color: inherit; text-underline-offset: 3px; } /* la ligne est réservée : le pied de page garde la même hauteur avec ou sans bandeau */
.a-cookies .lien-cookies { visibility: visible; }
html.cookies-ouvert .barre-achat { display: none; } /* le bandeau et la barre d'achat ne se superposent pas */
@media (max-width: 640px) {
  .cookies { left: 10px; right: 10px; bottom: 10px; width: auto; }
  .cookies-carte { padding: 16px 16px 14px; border-radius: 22px; }
  .cookies-texte { font-size: 12px; }
}

/* ---------- mini-panier (tiroir) : état « vide » ---------- */
.wp-block-woocommerce-empty-mini-cart-contents-block { font-family: "Unbounded", system-ui, sans-serif; }
.wp-block-woocommerce-empty-mini-cart-contents-block .panier-vide-texte { margin: 0 auto 22px; max-width: 300px; text-align: center; font-size: 13.5px; line-height: 1.6; color: rgba(38, 38, 38, .78); }
.wp-block-woocommerce-empty-mini-cart-contents-block .panier-vide-texte::before {
  content: ""; display: block; width: 34px; height: 34px; margin: 0 auto 16px; background: var(--sapin);
  -webkit-mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat; mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat;
}
.wp-block-woocommerce-empty-mini-cart-contents-block .panier-vide-texte strong { display: block; margin-bottom: 4px; font-size: 20px; font-weight: 900; letter-spacing: -.04em; line-height: 1.15; color: var(--sapin); }
.wp-block-woocommerce-empty-mini-cart-contents-block .panier-vide-texte br { display: none; }
.wp-block-woocommerce-empty-mini-cart-contents-block .panier-vide-bouton { justify-content: center; }
.wp-block-woocommerce-empty-mini-cart-contents-block .panier-vide-bouton .wp-block-button__link { background: var(--sapin); color: var(--neige); font-size: 14px; padding: 17px 26px 18px; }

/* ---------- page de connexion (formulaires FluentAuth) ---------- */
:is(body.page-connexion, body:has(.fls_auth_wrapper)) .page-simple {
  padding-block: clamp(30px, 4.4vw, 60px) clamp(56px, 8vw, 110px);
  background: radial-gradient(60% 46% at 50% 0%, rgba(var(--lueur-creme), .55), rgba(var(--lueur-creme), 0) 70%), var(--givre);
}
:is(body.page-connexion, body:has(.fls_auth_wrapper)) .page-simple-titre { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } /* le titre reste lu ; chaque formulaire porte le sien */
:is(body.page-connexion, body:has(.fls_auth_wrapper)) .barre-achat { display: none; } /* rien ne passe devant le formulaire */
:is(body.page-connexion, body:has(.fls_auth_wrapper)) .page-simple-contenu .e-con { --min-height: 0px; --padding-top: 0px; --padding-bottom: 0px; min-height: 0; padding-block: 0; }
:is(body.page-connexion, body:has(.fls_auth_wrapper)) .page-simple-contenu :is(.e-con, .e-con-inner) { padding-inline: 0; }
:is(body.page-connexion, body:has(.fls_auth_wrapper)) .page-simple-contenu :is(.elementor-widget-shortcode, .elementor-widget-container, .elementor-shortcode) { width: 100%; max-width: 100%; } /* sans quoi la carte se cale sur la ligne de texte la plus longue */
.fls_auth_wrapper, :is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) { box-sizing: border-box; }
.fls_auth_wrapper, .page-simple-contenu > :is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) {
  width: 100%; max-width: 480px; margin-inline: auto; padding: clamp(26px, 4vw, 42px) clamp(20px, 4vw, 40px) clamp(24px, 3.4vw, 36px);
  color: var(--nuit); background: var(--neige); border-radius: 28px; box-shadow: 0 34px 70px -34px rgba(20, 51, 35, .5), 0 0 0 1px rgba(29, 69, 48, .06);
}
.fls_auth_wrapper :is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) { max-width: none; }
.fls_auth_wrapper .hide { display: none; }
.fls_auth_wrapper { scroll-margin-top: 140px; } /* sous l'en-tête, qui reste en haut de l'écran */
.compte-entete { margin: 0 0 24px; text-align: center; }
.compte-entete::before {
  content: ""; display: block; width: 26px; height: 26px; margin: 0 auto 14px; background: var(--sapin);
  -webkit-mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat; mask: url("assets/img/doodles/etincelle.svg") center / contain no-repeat;
}
.compte-entete .compte-titre { margin: 0 0 10px; font-size: clamp(22px, 2.6vw, 27px); font-weight: 300; line-height: 1.08; letter-spacing: -.03em; color: var(--sapin); }
.compte-titre strong { display: block; font-size: 1.3em; font-weight: 900; letter-spacing: -.05em; }
.compte-entete .compte-chapeau { margin: 0; font-size: 13.5px; line-height: 1.6; color: rgba(38, 38, 38, .76); }

:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) form { margin: 0; }
.fls_login_wrapper form#loginform > p, :is(.fls_registration_wrapper, .fls_reset_pass_wrapper) .fls_field_group { margin: 0 0 16px; }
:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) label { display: block; margin: 0; font-size: 12.5px; font-weight: 700; line-height: 1.3; letter-spacing: -.01em; color: var(--nuit); }
:is(.fls_registration_wrapper, .fls_reset_pass_wrapper) form:is(.fls_registration_form, .fls_reset_pass_form) .fls_field_group .fls_field_label.is-required label::after { color: var(--sapin); }
.fls_login_wrapper form#loginform .input,
:is(.fls_registration_wrapper, .fls_reset_pass_wrapper) form input:is([type="text"], [type="email"], [type="password"]),
.fls_login_wrapper :is(.fls_magic_input, #fls_2fa_form .input) {
  display: block; width: 100%; box-sizing: border-box; min-height: 52px; margin: 7px 0 0; padding: 13px 16px;
  font: inherit; font-size: 15px; font-weight: 400; line-height: 1.5; letter-spacing: -.01em; color: var(--nuit);
  background: var(--neige); border: 1.5px solid rgba(29, 69, 48, .22); border-radius: 14px; box-shadow: none; outline: none;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.fls_login_wrapper form#loginform .input:focus,
:is(.fls_registration_wrapper, .fls_reset_pass_wrapper) form input:is([type="text"], [type="email"], [type="password"]):focus,
.fls_login_wrapper :is(.fls_magic_input, #fls_2fa_form .input):focus { border-color: var(--sapin); box-shadow: 0 0 0 4px rgba(180, 215, 189, .7); }
:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) input::placeholder { color: rgba(38, 38, 38, .36); opacity: 1; }
:is(.fls_registration_wrapper, .fls_reset_pass_wrapper) .fls_field_group.is-error input { border-color: #a6402b; box-shadow: 0 0 0 4px rgba(166, 64, 43, .12); }
@media (min-width: 480px) {
  .fls_registration_wrapper .fls_registration_fields { display: grid; grid-template-columns: 1fr 1fr; column-gap: 12px; }
  .fls_registration_wrapper .fls_registration_fields > :not(.fls_field_first_name, .fls_field_last_name) { grid-column: 1 / -1; }
}
.fls_login_wrapper form#loginform .login-remember { margin: 2px 0 18px; }
.fls_login_wrapper form#loginform .login-remember label { display: flex; align-items: center; gap: 10px; font-size: 13px; font-weight: 500; cursor: pointer; }
.fls_login_wrapper form#loginform .login-remember input { flex: none; width: 18px; height: 18px; margin: 0; accent-color: var(--sapin); }
.fls_login_wrapper form#loginform .login-submit { margin: 0; }

.fls_login_wrapper :is(input#wp-submit, #fls_magic_submit, #fls_2fa_confirm),
.fls_registration_wrapper .fls_registration_form :is(#fls_submit, #fls_verification_submit),
.fls_reset_pass_wrapper .fls_reset_pass_form #fls_reset_pass {
  display: block; width: 100%; margin: 0; padding: 18px 24px 19px; font: inherit; font-size: 15px; font-weight: 650; line-height: 1.2; letter-spacing: -.01em;
  color: var(--neige); background: var(--sapin); border: 0; border-radius: 999px; cursor: pointer; -webkit-appearance: none; appearance: none;
  transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, opacity .2s ease;
}
.fls_login_wrapper :is(input#wp-submit, #fls_magic_submit, #fls_2fa_confirm):hover,
.fls_registration_wrapper .fls_registration_form :is(#fls_submit, #fls_verification_submit):hover,
.fls_reset_pass_wrapper .fls_reset_pass_form #fls_reset_pass:hover { background: var(--sapin-nuit); transform: translateY(-2px); box-shadow: 0 16px 26px -14px rgba(20, 51, 35, .7); }
.fls_login_wrapper :is(input#wp-submit, #fls_magic_submit):focus-visible,
.fls_registration_wrapper .fls_registration_form #fls_submit:focus-visible,
.fls_reset_pass_wrapper .fls_reset_pass_form #fls_reset_pass:focus-visible { outline: 3px solid var(--sapin-clair); outline-offset: 3px; }
.fls_registration_wrapper .fls_registration_form :is(#fls_submit, #fls_verification_submit).fls_loading,
.fls_reset_pass_wrapper .fls_reset_pass_form #fls_reset_pass.fls_loading { background: var(--sapin); opacity: .6; transform: none; box-shadow: none; }
.fls_registration_wrapper .fls_registration_form #fls_submit { margin: 4px 0 0; }

/* connexion avec Google : le bouton est dessiné par Google, on soigne ce qui l'entoure */
:is(.fls_login_wrapper, .fls_registration_wrapper) .fm_login_with { position: relative; overflow: visible; margin: 26px 0 0; padding: 26px 0 0; border-top: 1px solid rgba(29, 69, 48, .16); text-align: center; }
:is(.fls_login_wrapper, .fls_registration_wrapper) .fm_login_with::before {
  content: "ou"; position: absolute; top: 0; left: 50%; transform: translate(-50%, -50%); padding: 0 12px;
  font-size: 11.5px; font-weight: 600; letter-spacing: .04em; color: rgba(38, 38, 38, .55); background: var(--neige);
}
:is(.fls_login_wrapper, .fls_registration_wrapper) .fm_login_with :is(.fm_buttons_wrap, .fs_auth_google_wrapper) { display: flex; justify-content: center; }
:is(.fls_login_wrapper, .fls_registration_wrapper) .fm_login_with a.fs_auth_btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px; width: 100%; padding: 14px 20px; font-size: 14px; font-weight: 600;
  color: var(--nuit); text-decoration: none; background: var(--neige); border: 1.5px solid rgba(29, 69, 48, .22); border-radius: 999px;
}

/* liens sous les formulaires, messages */
:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) > p { margin: 18px 0 0; font-size: 13px; line-height: 1.5; color: rgba(38, 38, 38, .76); }
:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) > p + p { margin-top: 8px; }
:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) > p a { display: inline-block; font-weight: 700; color: var(--sapin); text-decoration: underline; text-underline-offset: 3px; }
:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) > p a:hover { color: var(--sapin-nuit); text-decoration-thickness: 2px; }
.fls_reset_pass_wrapper .compte-retour { text-align: center; }
:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) .error.text-danger { margin-top: 8px; font-size: 12.5px; font-weight: 600; line-height: 1.5; color: #a6402b; }
:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) form > .error.text-danger { margin-top: 14px; padding: 12px 14px; background: rgba(166, 64, 43, .08); border-radius: 12px; }
:is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) .success.text-success { margin-top: 14px; padding: 12px 14px; font-size: 13px; font-weight: 600; line-height: 1.5; text-align: center; color: var(--sapin); background: rgba(180, 215, 189, .4); border-radius: 12px; }
@media (max-width: 640px) {
  .fls_login_wrapper form#loginform .input,
  :is(.fls_registration_wrapper, .fls_reset_pass_wrapper) form input:is([type="text"], [type="email"], [type="password"]) { font-size: 16px; } /* pas de zoom automatique sur iPhone */
  .fls_auth_wrapper, .page-simple-contenu > :is(.fls_login_wrapper, .fls_registration_wrapper, .fls_reset_pass_wrapper) { border-radius: 24px; }
}
.compte-deja .compte-actions { margin: 0; }
.compte-deja .compte-bouton {
  display: block; padding: 18px 24px 19px; font-size: 15px; font-weight: 650; line-height: 1.2; letter-spacing: -.01em; text-align: center; text-decoration: none;
  color: var(--neige); background: var(--sapin); border-radius: 999px; transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.compte-deja .compte-bouton:hover { background: var(--sapin-nuit); transform: translateY(-2px); box-shadow: 0 16px 26px -14px rgba(20, 51, 35, .7); }
.compte-deja .compte-retour { margin: 16px 0 0; font-size: 13px; text-align: center; }
.compte-deja .compte-retour a { font-weight: 700; color: var(--sapin); text-decoration: underline; text-underline-offset: 3px; }

/* ---------- espace client (pages « Mon compte » de WooCommerce) ---------- */
body.woocommerce-account .page-simple { padding-block: clamp(34px, 5vw, 68px) clamp(56px, 8vw, 110px); background: var(--givre); }
body.woocommerce-account .page-simple > .wrap { max-width: calc(1080px + 2 * var(--gout)); }
body.woocommerce-account .page-simple, :is(body.page-connexion, body:has(.fls_auth_wrapper)) .page-simple { min-height: 64vh; } /* une page courte ne laisse pas remonter le pied de page au milieu de l'écran */
body.woocommerce-account .page-simple-titre { margin-bottom: 24px; font-size: clamp(28px, 3.4vw, 44px); color: var(--sapin); }
body.woocommerce-account .page-simple .woocommerce { font-size: 14px; line-height: 1.65; }
body.woocommerce-account .page-simple .woocommerce::after { content: ""; display: table; clear: both; }
body.woocommerce-account .page-simple :is(.woocommerce-MyAccount-navigation, .woocommerce-MyAccount-content) { float: none; width: auto; margin: 0; box-sizing: border-box; background: var(--neige); border-radius: 24px; box-shadow: 0 30px 60px -36px rgba(20, 51, 35, .45), 0 0 0 1px rgba(29, 69, 48, .06); }
body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation { padding: 12px; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-content { padding: clamp(20px, 3vw, 36px); min-width: 0; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-content > * + * { margin-top: 1em; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-content > :first-child:empty + * { margin-top: 0; }
@media (min-width: 861px) {
  body.woocommerce-account.logged-in .page-simple .woocommerce:has(> .woocommerce-MyAccount-navigation) { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 24px; align-items: start; }
  body.woocommerce-account.logged-in .page-simple .woocommerce:has(> .woocommerce-MyAccount-navigation)::before,
  body.woocommerce-account.logged-in .page-simple .woocommerce:has(> .woocommerce-MyAccount-navigation)::after { content: none; }
  body.woocommerce-account.logged-in .page-simple .woocommerce:has(> .woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-navigation { position: sticky; top: 130px; }
}
@media (max-width: 860px) { body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation { margin-bottom: 16px; } }
body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation li { margin: 0; padding: 0; border: 0; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation a { display: block; padding: 12px 16px; font-size: 13.5px; font-weight: 600; line-height: 1.3; color: var(--nuit); text-decoration: none; border-radius: 14px; transition: background-color .2s ease, color .2s ease; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation a:hover { background: rgba(29, 69, 48, .07); color: var(--sapin); }
body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation li.is-active a { background: var(--sapin); color: var(--neige); }
body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation-link--customer-logout { margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(29, 69, 48, .12); }
body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation-link--customer-logout a { color: rgba(38, 38, 38, .66); }
@media (max-width: 860px) {
  body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation ul { display: flex; flex-wrap: wrap; gap: 6px; }
  body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation a { padding: 10px 14px; font-size: 12.5px; border-radius: 999px; background: rgba(29, 69, 48, .07); }
  body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation-link--customer-logout { margin: 0; padding: 0; border: 0; }
  body.woocommerce-account .page-simple .woocommerce-MyAccount-navigation-link--customer-logout a { background: transparent; text-decoration: underline; text-underline-offset: 3px; }
}
body.woocommerce-account .page-simple .woocommerce-MyAccount-content :is(p, address, td, th, li) { font-size: 14px; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-content p { margin: 0; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-content a:not(.button, .compte-bouton) { font-weight: 600; color: var(--sapin); text-decoration: underline; text-underline-offset: 3px; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-content :is(h2, h3) { margin: 0 0 10px; font-size: clamp(17px, 1.8vw, 21px); font-weight: 800; letter-spacing: -.035em; line-height: 1.2; color: var(--sapin); }
body.woocommerce-account .page-simple .woocommerce-MyAccount-content mark { background: transparent; color: inherit; font-weight: 700; }
body.woocommerce-account .page-simple .woocommerce address { font-style: normal; line-height: 1.65; }

/* boutons */
body.woocommerce-account .page-simple .woocommerce :is(a.button, button.button, input.button) {
  display: inline-flex; align-items: center; justify-content: center; margin: 0; padding: 13px 22px 14px; font: inherit; font-size: 13.5px; font-weight: 650; line-height: 1.2; letter-spacing: -.01em; text-decoration: none;
  color: var(--sapin); background: transparent; border: 1.5px solid rgba(29, 69, 48, .32); border-radius: 999px; cursor: pointer; transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, border-color .2s ease;
}
body.woocommerce-account .page-simple .woocommerce :is(a.button, button.button, input.button):hover { background: rgba(29, 69, 48, .06); border-color: var(--sapin); }
body.woocommerce-account .page-simple .woocommerce form button.button[type="submit"] { padding: 17px 28px 18px; font-size: 14.5px; color: var(--neige); background: var(--sapin); border-color: var(--sapin); }
body.woocommerce-account .page-simple .woocommerce form button.button[type="submit"]:hover { background: var(--sapin-nuit); transform: translateY(-2px); box-shadow: 0 16px 26px -14px rgba(20, 51, 35, .7); }

/* messages */
body.woocommerce-account .page-simple .woocommerce :is(.wc-block-components-notice-banner, .woocommerce-info, .woocommerce-message, .woocommerce-error) {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 0 0 14px; padding: 14px 16px; list-style: none; font-size: 13.5px; line-height: 1.5;
  color: var(--nuit); background: rgba(180, 215, 189, .34); border: 0; border-radius: 16px;
}
body.woocommerce-account .page-simple .woocommerce :is(.wc-block-components-notice-banner.is-error, .woocommerce-error) { background: rgba(166, 64, 43, .09); }
body.woocommerce-account .page-simple .woocommerce :is(.woocommerce-info, .woocommerce-message, .woocommerce-error)::before { content: none; }
body.woocommerce-account .page-simple .woocommerce .wc-block-components-notice-banner > svg { flex: none; margin: 0; padding: 3px; background: var(--sapin); fill: var(--neige); border-radius: 50%; }
body.woocommerce-account .page-simple .woocommerce .wc-block-components-notice-banner.is-error > svg { background: #a6402b; }
body.woocommerce-account .page-simple .woocommerce .wc-block-components-notice-banner__content { flex: 1 1 220px; min-width: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 14px; }
body.woocommerce-account .page-simple .woocommerce .wc-block-components-notice-banner__content :is(a.button, .wc-forward) { float: none; order: 2; margin: 0; padding: 9px 16px 10px; font-size: 12.5px; opacity: 1; }

/* tableaux (commandes, détail d'une commande) */
body.woocommerce-account .page-simple .woocommerce table.shop_table { width: 100%; margin: 0; border: 0; border-radius: 0; border-collapse: collapse; }
body.woocommerce-account .page-simple .woocommerce table.shop_table :is(th, td) { padding: 13px 10px; text-align: left; vertical-align: middle; border: 0; border-bottom: 1px solid rgba(29, 69, 48, .12); line-height: 1.45; }
body.woocommerce-account .page-simple .woocommerce table.shop_table thead th { padding-top: 0; font-size: 11.5px; font-weight: 700; letter-spacing: .02em; color: rgba(38, 38, 38, .6); }
body.woocommerce-account .page-simple .woocommerce table.shop_table :is(th, td):first-child { padding-left: 0; }
body.woocommerce-account .page-simple .woocommerce table.shop_table :is(th, td):last-child { padding-right: 0; text-align: right; }
body.woocommerce-account .page-simple .woocommerce table.shop_table tbody tr:last-child > :is(th, td) { border-bottom: 0; }
body.woocommerce-account .page-simple .woocommerce table.shop_table tfoot :is(th, td) { font-weight: 600; }
body.woocommerce-account .page-simple .woocommerce table.shop_table tfoot tr:first-child > :is(th, td) { border-top: 1px solid rgba(29, 69, 48, .12); }
body.woocommerce-account .page-simple .woocommerce table.shop_table .button { padding: 9px 16px 10px; font-size: 12.5px; }
body.woocommerce-account .page-simple .woocommerce-MyAccount-content .woocommerce-order-details, body.woocommerce-account .page-simple .woocommerce-MyAccount-content .woocommerce-customer-details { margin-top: 28px; }
@media (max-width: 768px) {
  body.woocommerce-account .page-simple .woocommerce table.shop_table_responsive tr { display: block; padding: 12px 0; border-bottom: 1px solid rgba(29, 69, 48, .12); }
  body.woocommerce-account .page-simple .woocommerce table.shop_table_responsive tbody tr:last-child { border-bottom: 0; padding-bottom: 0; }
  body.woocommerce-account .page-simple .woocommerce table.shop_table_responsive :is(th, td) { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 5px 0; border: 0; text-align: right; background: transparent; }
  body.woocommerce-account .page-simple .woocommerce table.shop_table_responsive :is(th, td)::before { float: none; flex: none; font-size: 12px; font-weight: 700; color: rgba(38, 38, 38, .6); }
}

/* adresses */
body.woocommerce-account .page-simple .woocommerce :is(.woocommerce-Addresses, .woocommerce-columns--addresses) { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; width: auto; }
body.woocommerce-account .page-simple .woocommerce :is(.woocommerce-Addresses, .woocommerce-columns--addresses)::before, body.woocommerce-account .page-simple .woocommerce :is(.woocommerce-Addresses, .woocommerce-columns--addresses)::after { content: none; }
body.woocommerce-account .page-simple .woocommerce :is(.woocommerce-Addresses, .woocommerce-columns--addresses) > * { float: none; width: auto; margin: 0; padding: 18px 20px; background: rgba(195, 211, 225, .3); border-radius: 18px; }
body.woocommerce-account .page-simple .woocommerce .woocommerce-Address-title { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 12px; margin: 0 0 8px; }
body.woocommerce-account .page-simple .woocommerce .woocommerce-Address-title::before, body.woocommerce-account .page-simple .woocommerce .woocommerce-Address-title::after { content: none; }
body.woocommerce-account .page-simple .woocommerce .woocommerce-Address-title :is(h2, h3) { margin: 0; font-size: 15px; }
body.woocommerce-account .page-simple .woocommerce .woocommerce-Address-title a.edit { float: none; font-size: 12.5px; }
body.woocommerce-account .page-simple .woocommerce :is(.woocommerce-Addresses, .woocommerce-columns--addresses) address { padding: 0; border: 0; font-size: 13.5px; }

/* formulaires */
body.woocommerce-account .page-simple .woocommerce form .form-row { margin: 0 0 16px; padding: 0; }
body.woocommerce-account .page-simple .woocommerce form .form-row label { display: block; margin: 0 0 7px; font-size: 12.5px; font-weight: 700; line-height: 1.3; letter-spacing: -.01em; color: var(--nuit); }
body.woocommerce-account .page-simple .woocommerce form .form-row :is(.required, abbr.required) { color: var(--sapin); text-decoration: none; border: 0; visibility: visible; }
body.woocommerce-account .page-simple .woocommerce form :is(input.input-text, input[type="text"], input[type="email"], input[type="tel"], input[type="password"], textarea, select),
body.woocommerce-account .page-simple .woocommerce .select2-container .select2-selection--single {
  width: 100%; box-sizing: border-box; min-height: 52px; margin: 0; padding: 13px 16px; font: inherit; font-size: 15px; font-weight: 400; line-height: 1.5; letter-spacing: -.01em; color: var(--nuit);
  background: var(--neige); border: 1.5px solid rgba(29, 69, 48, .22); border-radius: 14px; box-shadow: none; outline: none; transition: border-color .2s ease, box-shadow .2s ease;
}
body.woocommerce-account .page-simple .woocommerce form :is(input.input-text, input[type="text"], input[type="email"], input[type="tel"], input[type="password"], textarea, select):focus,
body.woocommerce-account .page-simple .woocommerce :is(.select2-container--focus, .select2-container--open) .select2-selection--single { border-color: var(--sapin); box-shadow: 0 0 0 4px rgba(180, 215, 189, .7); }
body.woocommerce-account .page-simple .woocommerce .select2-container .select2-selection--single { display: flex; align-items: center; height: auto; }
body.woocommerce-account .page-simple .woocommerce .select2-container .select2-selection--single .select2-selection__rendered { flex: 1; min-width: 0; padding: 0 26px 0 0; line-height: 1.5; color: var(--nuit); }
body.woocommerce-account .page-simple .woocommerce .select2-container--default .select2-selection--single .select2-selection__arrow { top: 0; right: 12px; height: 100%; }
body.woocommerce-account .page-simple .woocommerce form .form-row :is(em, .description) { display: block; margin-top: 6px; font-size: 12px; font-style: normal; line-height: 1.5; color: rgba(38, 38, 38, .62); }
body.woocommerce-account .page-simple .woocommerce form fieldset { margin: 26px 0 0; padding: 0; border: 0; min-width: 0; }
body.woocommerce-account .page-simple .woocommerce form fieldset legend { margin: 0 0 14px; padding: 0; font-size: 16px; font-weight: 800; letter-spacing: -.035em; color: var(--sapin); }
body.woocommerce-account .page-simple .woocommerce form :is(input[type="checkbox"], input[type="radio"]) { width: 18px; height: 18px; margin: 0 8px 0 0; vertical-align: -3px; accent-color: var(--sapin); }
body.woocommerce-account .page-simple .woocommerce form .show-password-input { top: 50%; transform: translateY(-50%); right: 14px; }
@media (max-width: 640px) {
  body.woocommerce-account .page-simple .woocommerce form :is(.form-row-first, .form-row-last) { float: none; width: 100%; }
  body.woocommerce-account .page-simple .woocommerce form :is(input.input-text, input[type="text"], input[type="email"], input[type="tel"], input[type="password"], textarea, select) { font-size: 16px; }
}

/* connexion et mot de passe oublié de WooCommerce (quand ils s'affichent à la place de l'espace client) */
body.woocommerce-account:not(.logged-in) .page-simple > .wrap { max-width: calc(480px + 2 * var(--gout)); }
body.woocommerce-account:not(.logged-in) .page-simple-titre { text-align: center; }
body.woocommerce-account:not(.logged-in) .page-simple .woocommerce { padding: clamp(24px, 4vw, 40px) clamp(20px, 4vw, 40px); background: var(--neige); border-radius: 28px; box-shadow: 0 34px 70px -34px rgba(20, 51, 35, .5), 0 0 0 1px rgba(29, 69, 48, .06); }
body.woocommerce-account:not(.logged-in) .page-simple .woocommerce > h2 { margin: 0 0 16px; font-size: 20px; font-weight: 800; letter-spacing: -.035em; color: var(--sapin); }
body.woocommerce-account:not(.logged-in) .page-simple .woocommerce form:is(.login, .register, .lost_reset_password) { margin: 0; padding: 0; border: 0; border-radius: 0; }
body.woocommerce-account:not(.logged-in) .page-simple .woocommerce form :is(.form-row-first, .form-row-last) { float: none; width: 100%; }
body.woocommerce-account:not(.logged-in) .page-simple .woocommerce form .woocommerce-form-login__rememberme { display: flex; align-items: center; margin: 0 0 14px; font-size: 13px; font-weight: 500; }
body.woocommerce-account:not(.logged-in) .page-simple .woocommerce form button.button[type="submit"] { width: 100%; float: none; }
body.woocommerce-account:not(.logged-in) .page-simple .woocommerce :is(.lost_password, form > p:not(.form-row)) { margin: 14px 0 0; font-size: 13px; }
body.woocommerce-account:not(.logged-in) .page-simple .woocommerce a:not(.button) { font-weight: 600; color: var(--sapin); text-underline-offset: 3px; }
body.woocommerce-account:not(.logged-in) .page-simple .woocommerce form.lost_reset_password > p:first-child { margin: 0 0 16px; font-size: 13.5px; }

/* ==========================================================================
   v1.14.0 — titres factuels, « Le sapin en bref », accessibilité
   ========================================================================== */

/* ---------- héros : le H1 dit de quoi il s'agit (l'ancienne phrase d'accroche, placée dans le titre) ---------- */
.titre-hero .titre-fait { display: block; max-width: 22em; margin-top: 20px; font-size: clamp(16px, 1.35vw, 20px); font-weight: 300; line-height: 1.35; letter-spacing: -.01em; color: var(--sapin-clair); text-wrap: balance; }
html.anim-hero .titre-hero .titre-fait { animation: monte .8s cubic-bezier(.2, .8, .2, 1) calc(var(--decalage) + .62s) both; }
@media (min-width: 861px) and (max-height: 840px) { .titre-hero .titre-fait { margin-top: 14px; } .hero .chapeau { margin-top: 12px; } }
@media (max-width: 640px) {
  .titre-hero .titre-fait { margin-top: 6px; max-width: none; font-size: clamp(10.5px, 3.42vw, 14px); line-height: 1.35; white-space: nowrap; }
  /* le bouton d'achat reste dans le premier écran : le titre gagne une ligne, la composition la rend */
  .hero { padding-top: 90px; }
  .hero-visuel { height: clamp(150px, 24vh, 214px); margin-top: 10px; }
  .hero-achat { margin: 10px 0 12px; }
  .pastille-stock { top: 9%; }
}

/* ---------- pastille factuelle dans un titre de section : la même pastille qu'avant, placée dans le <h2> ---------- */
.wp-block-heading > .surtitre { display: flex; width: fit-content; max-width: 100%; font-size: 13px; font-weight: 600; line-height: 1.72; letter-spacing: 0; text-wrap: wrap; }
.wp-block-heading > .surtitre.surtitre-nuit { color: var(--neige); }
:is(.rarete, .montage, .faq) .wp-block-heading > .surtitre { background: var(--givre); }
.titre-stock > .surtitre { margin-bottom: 30px; }
@media (max-width: 420px) { .wp-block-heading > .surtitre { font-size: 12px; padding: 8px 16px 9px 13px; } }

/* ---------- « Le sapin en bref » : les caractéristiques, sous la définition ---------- */
.bref-titre { margin-top: clamp(34px, 4vw, 52px); font-size: 13px; font-weight: 700; line-height: 1.4; letter-spacing: 0; color: var(--sapin); }
.wp-block-list.bref { list-style: none; padding: 0; margin-top: 14px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.bref li { background: var(--neige); border-radius: 18px; padding: 13px 16px 14px; font-size: 13.5px; font-weight: 500; line-height: 1.4; letter-spacing: 0; }
.bref li strong { display: block; margin-bottom: 3px; font-size: 11px; font-weight: 600; letter-spacing: .01em; color: rgba(38, 38, 38, .74); }
@media (max-width: 980px) { .wp-block-list.bref { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 700px) { .wp-block-list.bref { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .bref li { padding: 11px 13px 12px; font-size: 13px; } }
.tableau-source { margin-top: 18px; max-width: 62em; font-size: 12px; line-height: 1.55; letter-spacing: 0; color: rgba(38, 38, 38, .8); }
.tableau-source a { color: inherit; font-weight: 600; text-underline-offset: 3px; }

/* ---------- comparatif : la première colonne nomme chaque ligne (<th scope="row">) ---------- */
.wp-block-table.tableau tbody th { font-weight: 700; width: 20%; font-size: inherit; }
.screen-reader-text:not(:focus) { border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; white-space: nowrap; }
@media (max-width: 700px) {
  .wp-block-table.tableau.est-cartes tbody th { display: block; width: auto; border: 0; padding: 0 0 8px; background: none; font-size: 16px; font-weight: 800; letter-spacing: -.02em; color: var(--sapin); }
  .wp-block-table.tableau.est-cartes td:not(:first-child)::before { color: rgba(38, 38, 38, .74); }
}

/* ---------- lisibilité : contrastes, petites tailles, zones tactiles ---------- */
.plaque-compteur { color: rgba(38, 38, 38, .74); }
.wp-block-navigation.pied-menu .wp-block-navigation-item__content { display: inline-block; padding-block: 5px; }
.lien-cookies { display: inline-block; padding-block: 6px; }
.pied-mention a[href^="mailto:"], .faq-contact a { display: inline-block; padding-block: 3px; }
@media (max-width: 640px) {
  .wp-block-image.produit-hero figcaption { left: 50%; bottom: 0; padding: 4px 10px 5px; font-size: 10.5px; }
  .pastille-stock { font-size: 10.5px; line-height: 1.2; }
}
@media (max-width: 420px) { .hero .prix-ttc { font-size: 11.5px; } .hero .prix-note { font-size: 11.5px; } }
/* contraste forcé (Windows) : les mots en contour redeviennent du texte plein */
@media (forced-colors: active) {
  .titre-hero em, .titre-final em { -webkit-text-fill-color: CanvasText; color: CanvasText; -webkit-text-stroke-width: 0; text-shadow: none; }
}

/* ---------- bandeau cookies : plus compact sur téléphone, pour laisser voir le prix et le bouton ---------- */
@media (max-width: 640px) {
  .cookies-carte { padding: 13px 14px 10px; border-radius: 20px; }
  .cookies-titre { margin-bottom: 3px; font-size: 14px; }
  .cookies-texte { font-size: 11.5px; line-height: 1.45; }
  .cookies-actions { gap: 4px 8px; margin-top: 10px; }
  .cookies-bouton { padding: 10px 10px 11px; font-size: 12.5px; }
  .cookies-lien { padding: 5px 4px 3px; }
}

/* ---------- fiche produit : description en sections (titres, listes, tableau de caractéristiques) ---------- */
.fiche-description h3 { margin: 1.9em 0 .6em; font-size: clamp(18px, 1.7vw, 22px); font-weight: 800; line-height: 1.2; letter-spacing: -.03em; color: var(--sapin); }
.fiche-description :is(ul, ol) { margin: 0 0 1.1em; padding-left: 1.3em; max-width: 40em; }
.fiche-description ul { list-style: disc; }
.fiche-description ol { list-style: decimal; }
.fiche-description li { margin-bottom: .35em; }
.fiche-description table { width: 100%; max-width: 44em; margin: 0 0 1.2em; border-collapse: collapse; font-size: 14px; line-height: 1.45; letter-spacing: 0; }
.fiche-description :is(th, td) { padding: 11px 14px 11px 0; text-align: left; vertical-align: top; border-bottom: 1.5px solid rgba(38, 38, 38, .16); }
.fiche-description th { width: 34%; font-weight: 700; }
.fiche-description a { color: var(--sapin); font-weight: 600; text-underline-offset: 3px; }

/* ---------- héros sur téléphone, allégé (v1.14.2) : un titre, le sapin, la série, le prix, le bouton ---------- */
@media (max-width: 640px) {
  .hero { padding-top: 56px; }
  .hero::after { height: 74px; background: url("assets/img/doodles/guirlande-claire.svg") left top / 300px auto repeat-x; } /* la guirlande seule, sans les boules qui passaient sur le titre */
  .hero-grille::before { display: none; } /* les gros flocons du premier plan */
  .hero-visuel::before, .hero-visuel::after, .pastille-stock::before { display: none; } /* étoile, flocon et éclat dessinés */
  .hero-visuel :is(.photo-givre, .photo-tricot) { display: none; } /* les deux photos d'ambiance : il reste le sapin et son halo */
  .hero-visuel { height: clamp(176px, 28vh, 250px); margin: 4px 0 0; }
  .produit-hero { height: calc(100% - 20px); bottom: 20px; transform: translateX(-50%) rotate(-2deg); }
  .wp-block-image.produit-hero figcaption { left: 50%; bottom: -21px; padding: 0; font-size: 10.5px; font-weight: 500; color: rgba(251, 239, 207, .74); background: none; box-shadow: none; border-radius: 0; transform: translateX(-50%) rotate(2deg); white-space: nowrap; }
  .pastille-stock { left: 0; top: 2%; }
  .hero-achat { margin: 8px 0 12px; }
  .hero .prix-note .note-detail { display: none; } /* livraison et formule « livré monté » : annoncées dans le panneau d'achat et plus bas dans la page */
  .hero .boutons, .hero .boutons .wp-block-button { width: 100%; }
  .hero .bouton-grand .wp-block-button__link { width: 100%; justify-content: center; white-space: nowrap; font-size: clamp(11.5px, 3.75vw, 16px); padding-inline: 10px; gap: 8px; } /* le bouton occupe la largeur et tient sur une ligne */
}
@media (max-width: 640px) and (prefers-reduced-motion: reduce) {
  .hero::after { background-image: url("assets/img/doodles/guirlande-claire-fixe.svg"); }
}

/* ==========================================================================
   v1.14.3 · page de paiement : bouton et fenêtre « point relais » aux couleurs du thème (le paiement express sur une ligne est réglé plus haut, avec le tunnel)
   ========================================================================== */

/* ---------- livraison en point relais : le bouton « Choisir un point de retrait » et le point choisi ---------- */
.tunnel ul#shipping_method li { flex-wrap: wrap; }
.tunnel ul#shipping_method li label { flex: 1 1 calc(100% - 40px); min-width: 0; }
.tunnel ul#shipping_method li > button[class*="wms_pickup_open_modal"] {
  flex: none; display: inline-flex; align-items: center; gap: 8px; margin: 10px 0 2px 28px; padding: 11px 18px 12px 15px;
  font: inherit; font-size: 13px; font-weight: 650; line-height: 1.2; letter-spacing: -.01em; text-align: left;
  color: var(--sapin); background: var(--neige); border: 1.5px solid rgba(29, 69, 48, .34); border-radius: 999px; cursor: pointer;
  -webkit-appearance: none; appearance: none; transition: background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
}
.tunnel ul#shipping_method li > button[class*="wms_pickup_open_modal"]::before {
  content: ""; flex: none; width: 15px; height: 18px; background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 24'%3E%3Cpath fill-rule='evenodd' d='M10 0C4.5 0 0 4.4 0 9.8c0 6.8 8.7 13.5 9.1 13.9.5.4 1.3.4 1.8 0 .4-.4 9.1-7.1 9.1-13.9C20 4.4 15.5 0 10 0zm0 13.5a3.7 3.7 0 1 0 0-7.4 3.7 3.7 0 0 0 0 7.4z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 24'%3E%3Cpath fill-rule='evenodd' d='M10 0C4.5 0 0 4.4 0 9.8c0 6.8 8.7 13.5 9.1 13.9.5.4 1.3.4 1.8 0 .4-.4 9.1-7.1 9.1-13.9C20 4.4 15.5 0 10 0zm0 13.5a3.7 3.7 0 1 0 0-7.4 3.7 3.7 0 0 0 0 7.4z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.tunnel ul#shipping_method li > button[class*="wms_pickup_open_modal"]:hover { color: var(--neige); background: var(--sapin); border-color: var(--sapin); transform: translateY(-1px); }
.tunnel ul#shipping_method li > button[class*="wms_pickup_open_modal"]:focus-visible { outline: 3px solid var(--sapin-clair); outline-offset: 2px; }
.tunnel ul#shipping_method li > :is(#wms_ajax_error, #wms_selected_pickup_desc) { flex: 0 0 100%; min-width: 0; }
.tunnel ul#shipping_method li #wms_ajax_error:not(:empty) { margin: 8px 0 0 28px; font-size: 12.5px; font-weight: 600; color: #a6402b; }
.tunnel ul#shipping_method li #wms_pickup_selected:has(> div) { margin: 10px 0 2px 28px; padding: 11px 14px 12px; font-size: 12.5px; line-height: 1.5; color: var(--nuit); background: rgba(180, 215, 189, .34); border-radius: 14px; }
.tunnel ul#shipping_method li #wms_pickup_selected:has(> div)::before { content: "Point relais choisi"; display: block; margin-bottom: 3px; font-size: 11px; font-weight: 700; letter-spacing: .02em; color: var(--sapin); }
.tunnel ul#shipping_method li #wms_pickup_selected > div:first-child { font-weight: 700; }
.tunnel ul#shipping_method li #wms_pickup_selected > div:last-child:not(:first-child) { display: none; } /* le code du pays (« FR ») */

/* ---------- la fenêtre de choix du point relais (extension WC Multi Shipping) ---------- */
body .wms_pickup_modal { font-family: "Unbounded", system-ui, sans-serif; color: var(--nuit); }
body .wms_pickup_modal .wc-backbone-modal-backdrop { background: #0c2016; opacity: .72; }
body .wms_pickup_modal .wc-backbone-modal .wc-backbone-modal-content { width: 1120px !important; border-radius: 26px; overflow: hidden; background: var(--neige); box-shadow: 0 50px 110px -40px rgba(5, 20, 12, .85); }
body .wms_pickup_modal .wc-backbone-modal-main .wc-backbone-modal-header { align-items: center; padding: 16px 76px 16px 20px; background: var(--neige); border-bottom: 1px solid rgba(29, 69, 48, .13); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address { grid-template-columns: minmax(0, 1.3fr) minmax(0, .8fr) auto; gap: 10px; margin-right: 0; }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address :is(.wms_pickup_modal_address_city, .wms_pickup_modal_address_zip-code) { width: auto; }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address .wms_pickup_modal_address_country { display: none; } /* la livraison se fait en France : le pays suit celui de la commande */
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address :is(input, select) {
  min-height: 46px; padding: 11px 14px; font: inherit; font-size: 14px; color: var(--nuit); background: var(--neige);
  border: 1.5px solid rgba(29, 69, 48, .22); border-radius: 12px; box-shadow: none; outline: none; transition: border-color .2s ease, box-shadow .2s ease;
}
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address :is(input, select):focus { border-color: var(--sapin); box-shadow: 0 0 0 4px rgba(180, 215, 189, .7); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address_search {
  min-height: 46px; padding: 12px 22px 13px; font: inherit; font-size: 13.5px; font-weight: 650; letter-spacing: -.01em; color: var(--neige); background: var(--sapin);
  border: 0; border-radius: 999px; transition: background-color .2s ease, transform .2s ease;
}
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address_search:hover { background: var(--sapin-nuit); transform: translateY(-1px); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address_search .dashicons { display: none; }
body .wms_pickup_modal .wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link { top: 19px; right: 18px; width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(29, 69, 48, .08); overflow: hidden; transition: background-color .2s ease; }
body .wms_pickup_modal .wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link::before { content: "×"; font: 400 26px/38px system-ui, sans-serif !important; color: var(--sapin); }
body .wms_pickup_modal .wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:is(:hover, :focus) { background: rgba(29, 69, 48, .16); border: 0; }
body .wms_pickup_modal .wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus-visible { outline: 3px solid var(--sapin-clair); outline-offset: 2px; }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing { padding: 14px; background: #eef3f7; border-left: 0; scrollbar-width: thin; scrollbar-color: rgba(29, 69, 48, .35) transparent; }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing .wms_pickup_modal_listing_one { margin-bottom: 12px; padding: 16px 16px 14px; border: 0; border-radius: 18px; background: var(--neige); box-shadow: 0 0 0 1px rgba(29, 69, 48, .08); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing .wms_pickup_modal_listing_one:hover { transform: none; box-shadow: 0 0 0 1.5px rgba(29, 69, 48, .4); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing .wms_pickup_modal_listing_one.wms_is_selected { background: var(--neige); box-shadow: 0 0 0 2px var(--sapin), 0 0 0 6px rgba(180, 215, 189, .7); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_name { margin-bottom: 6px; font-size: 13.5px; font-weight: 800; line-height: 1.3; letter-spacing: -.02em; color: var(--sapin); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing .wms_pickup_modal_listing_one :is(.wms_pickup_address1, .wms_pickup_address2) { margin-bottom: 1px; font-size: 12px; line-height: 1.5; color: rgba(38, 38, 38, .78); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_country { display: none; }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing .wms_pickup_modal_listing_one .wms_pickup_open_time { display: block; width: auto; margin: 10px 0 0; padding-top: 10px; border-top: 1px solid rgba(29, 69, 48, .1); font-size: 10.5px; line-height: 1.4; color: rgba(38, 38, 38, .72); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_open_time tbody { display: flex; flex-wrap: wrap; gap: 3px 14px; } /* deux jours par ligne ; un jour à deux créneaux (« 07:00-13:00 - 14:30-18:00 ») prend sa propre ligne au lieu de déborder */
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_open_time tr { display: flex; flex: 0 1 calc(50% - 7px); min-width: max-content; justify-content: space-between; align-items: baseline; gap: 8px; }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_open_time td { padding: 0; border: 0; white-space: nowrap; }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_open_time td:first-child { width: auto; font-weight: 700; color: var(--nuit); }
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing .wms_pickup_modal_listing_one .wms_pickup_modal_listing_one_button_ship {
  margin-top: 12px; padding: 12px 16px 13px; font: inherit; font-size: 13px; font-weight: 650; letter-spacing: -.01em; color: var(--neige); background: var(--sapin);
  border: 0; border-radius: 999px; transition: background-color .2s ease, transform .2s ease;
}
body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing .wms_pickup_modal_listing_one .wms_pickup_modal_listing_one_button_ship:hover { background: var(--sapin-nuit); transform: translateY(-1px); }
body .wms_pickup_modal .wc-backbone-modal-main .wms-error-message { margin: 14px; padding: 12px 14px; font-size: 12.5px; color: #a6402b; background: rgba(166, 64, 43, .08); border: 0; border-radius: 12px; }
body .wms_pickup_modal .wc-backbone-modal-main .wc-backbone-modal-loader:after { border-color: rgba(29, 69, 48, .25); border-top-color: var(--sapin); }
body .wms_pickup_modal .leaflet-marker-icon { filter: hue-rotate(-62deg) saturate(.9) brightness(.82); } /* repères bleus de la carte, ramenés au vert sapin */
body .wms_pickup_modal .leaflet-bar a { color: var(--sapin); }
/* bulle d'un repère de la carte (v1.14.4) : mêmes informations que dans la liste, dans une bulle étroite — les horaires y vont un jour par ligne */
body .wms_pickup_modal .leaflet-popup-content-wrapper { padding: 0; border-radius: 18px; background: var(--neige); box-shadow: 0 18px 40px -18px rgba(5, 20, 12, .6), 0 0 0 1px rgba(29, 69, 48, .08); }
body .wms_pickup_modal .leaflet-popup-content { margin: 16px 18px; font-family: "Unbounded", system-ui, sans-serif; font-size: 11.5px; line-height: 1.5; color: rgba(38, 38, 38, .78); }
body .wms_pickup_modal .leaflet-popup-content > b { display: block; margin: 0 16px 4px 0; font-size: 13px; font-weight: 800; line-height: 1.3; letter-spacing: -.02em; color: var(--sapin); }
body .wms_pickup_modal .leaflet-popup-content > br { display: none; }
body .wms_pickup_modal .wc-backbone-modal-main .leaflet-popup-content .wms_pickup_open_time { display: block; width: auto; margin: 9px 0 0; padding-top: 9px; border-top: 1px solid rgba(29, 69, 48, .1); font-size: 10.5px; line-height: 1.45; color: rgba(38, 38, 38, .72); }
body .wms_pickup_modal .wc-backbone-modal-main .leaflet-popup-content .wms_pickup_open_time tbody { display: block; }
body .wms_pickup_modal .wc-backbone-modal-main .leaflet-popup-content .wms_pickup_open_time tr { flex: none; min-width: 0; gap: 14px; margin-bottom: 2px; }
body .wms_pickup_modal .wc-backbone-modal-main .leaflet-popup-content .wms_pickup_open_time td:last-child { text-align: right; }
body .wms_pickup_modal .leaflet-popup-content .wms_pickup_modal_infowindow_one_button_ship {
  display: block; width: 100%; margin: 12px 0 0; padding: 11px 14px 12px; font: inherit; font-size: 12.5px; font-weight: 650; letter-spacing: -.01em; text-align: center;
  color: var(--neige); background: var(--sapin); border: 0; border-radius: 999px; cursor: pointer; -webkit-appearance: none; appearance: none; transition: background-color .2s ease;
}
body .wms_pickup_modal .leaflet-popup-content .wms_pickup_modal_infowindow_one_button_ship:hover { background: var(--sapin-nuit); }
body .wms_pickup_modal .leaflet-container a.leaflet-popup-close-button { top: 8px; right: 8px; width: 26px; height: 26px; font: 400 20px/26px system-ui, sans-serif; color: var(--sapin); border-radius: 50%; }
body .wms_pickup_modal .leaflet-container a.leaflet-popup-close-button:hover { color: var(--sapin); background: rgba(29, 69, 48, .1); }
@media screen and (max-width: 782px) {
  body .wms_pickup_modal .wc-backbone-modal .wc-backbone-modal-content { border-radius: 0; }
  body .wms_pickup_modal .wc-backbone-modal-main .wc-backbone-modal-header { align-items: stretch; padding: 14px 14px 12px; }
  body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address { grid-template-columns: minmax(0, 1fr) 104px; padding-right: 50px; }
  body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address .wms_pickup_modal_address_find_pickup { grid-column: 1 / -1; margin-right: -50px; }
  body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address_search { width: 100%; }
  body .wms_pickup_modal .wc-backbone-modal-main .wc-backbone-modal-header > div:last-child { top: 17px; right: 12px; }
  body .wms_pickup_modal .wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link { position: static; box-shadow: none; }
  body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_address :is(input, select) { font-size: 16px; }
  body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing { padding: 10px; }
  body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_name { font-size: 13px; }
  body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_modal_listing .wms_pickup_modal_listing_one .wms_pickup_open_time { font-size: 10px; }
  body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_open_time tbody { column-gap: 10px; }
  body .wms_pickup_modal .wc-backbone-modal-main .wms_pickup_open_time tr { flex-basis: calc(50% - 5px); }
  /* sur téléphone la carte ne fait que 200 px de haut : la bulle garde le nom, l'adresse et le bouton ; les horaires sont dans la liste, juste dessous */
  body .wms_pickup_modal .wc-backbone-modal-main .leaflet-popup-content .wms_pickup_open_time { display: none; }
  body .wms_pickup_modal .leaflet-popup-content { margin: 13px 15px; }
  body .wms_pickup_modal .leaflet-popup-content .wms_pickup_modal_infowindow_one_button_ship { margin-top: 9px; padding: 9px 12px 10px; font-size: 12px; }
}
