/* wz-link-contrast — 2026-10-27 */
/* Lisibilité mobile — contraste des liens sur fond sombre (2026-10-27)
   audit_design : liens #745b34 sur fond #1d1916 = 2.73:1, sous le 4.5:1 requis.
   Contenu uniquement : les boutons et CTA gardent la couleur du thème. */
@media (max-width: 767px) {
  body.body .wiziblocks__item a:not(.btn):not([class*="button"]) {
    color: #e8b57c;
    text-decoration: underline;
    text-underline-offset: 2px;
  }
}
body.body .wiziblocks__item a:not(.btn):not([class*="button"]):hover {
  color: #f5e7cf;
}
body.body.page--cms a:not(.btn):not([class*="button"]),
body.body.page-contact a:not(.btn):not([class*="button"]) {
  color: #e8b57c;
}

/* wz-purchase-light — 2026-10-27 : parcours d'achat sur fond clair.
   La palette sombre reste sur l'accueil et les pages de marque ; prix, bouton
   d'achat et formulaires passent sur fond crème au contraste maximal. */
body.body.page-prod-details,
body.body.page-cart,
body.body.page-validation {
  background: #faf6ee;
  color: #14100d;
}
body.body.page-prod-details .prod-title,
body.body.page-prod-details .prod-info,
body.body.page-prod-details .prod-price,
body.body.page-cart .cart-table,
body.body.page-validation .validation {
  color: #14100d;
}
body.body.page-prod-details .prod-price,
body.body.page-prod-details .price {
  color: #8f5722;
}
body.body.page-prod-details a:not(.btn),
body.body.page-cart a:not(.btn),
body.body.page-validation a:not(.btn) {
  color: #8f5722;
  text-decoration: none;
}

/* wz-foundations */
/* Design foundations derived from the theme. Do not hand-edit: apply_design_foundations rewrites this whole block. */

:root {
    --wz-space-2xs: clamp(8px, 0.5rem + 0.2vw, 12px);
    --wz-space-xs: clamp(12px, 0.75rem + 0.3vw, 16px);
    --wz-space-s: clamp(16px, 1rem + 0.5vw, 24px);
    --wz-space-m: clamp(24px, 1.5rem + 0.8vw, 32px);
    --wz-space-l: clamp(32px, 2rem + 1.2vw, 48px);
    --wz-space-xl: clamp(48px, 3rem + 2vw, 72px);
    --wz-space-2xl: clamp(64px, 4rem + 3vw, 96px);
    --wz-space-3xl: clamp(80px, 5rem + 4vw, 128px);
    --wz-flow: 0.9em;
    --wz-radius-s: 2px;
    --wz-radius-m: 4px;
    --wz-radius-l: 6px;
    --wz-surface: rgba(255, 255, 255, .05);
    --wz-surface-high: rgba(255, 255, 255, .09);
    --wz-border: rgba(255, 255, 255, .16);
    --wz-text-muted: rgba(255, 255, 255, .66);
    --wz-ink: #f4f2f0;
    --wz-ink-on: #14161a;
    --wz-elev-1: 0 1px 2px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .3);
    --wz-elev-2: 0 1px 2px rgba(0, 0, 0, .45), 0 6px 16px rgba(0, 0, 0, .4), 0 16px 40px rgba(0, 0, 0, .35);
}

/* Vertical rhythm between sections. The theme ships 20/30/40/50 px, below the 64-96 px
   a content section needs; margin "none" stays untouched (it is glued on purpose). */
.body__wrapper .wiziblocks__item.small { margin-bottom: var(--wz-space-l); }
.body__wrapper .wiziblocks__item.medium { margin-bottom: var(--wz-space-2xl); }
.body__wrapper .wiziblocks__item.large { margin-bottom: var(--wz-space-3xl); }
.body__wrapper .wiziblocks__item:not(.small):not(.medium):not(.large):not(.none) { margin-bottom: var(--wz-space-2xl); }

/* Flow inside a block. The theme sets margin:0 and padding:0 on headings and paragraphs,
   so two paragraphs touch. The class is repeated to win over the theme rule without !important. */
body.body .wiziblocks__item.wiziblocks__item p + p { margin-top: var(--wz-flow); }
body.body .wiziblocks__item.wiziblocks__item h2 + p,
body.body .wiziblocks__item.wiziblocks__item h3 + p,
body.body .wiziblocks__item.wiziblocks__item h4 + p { margin-top: var(--wz-space-2xs); }
body.body .wiziblocks__item.wiziblocks__item p + h2,
body.body .wiziblocks__item.wiziblocks__item p + h3 { margin-top: var(--wz-space-m); }

/* Display voice "classic": Titles keep the size of the theme (32 to 48 px), fluid instead of stepped. */
/* The theme caps a title at 48 px and font.titleSize does nothing, so the size lives here. */
body.body .wiziblocks__item.wiziblocks__item h1,
body.body .wiziblocks__item.wiziblocks__item h2 {
    font-weight: 600;
    line-height: 1.1;
    letter-spacing: normal;
    text-transform: none;
}
body.body .wiziblocks__item.wiziblocks__item h1 { font-size: clamp(2rem, 1.25rem + 2.4vw, 3rem); }
body.body .wiziblocks__item.wiziblocks__item h2 { font-size: clamp(1.625rem, 1.1rem + 1.7vw, 2.5rem); }

/* Line-height: generous on reading sizes (the theme sets 1.4 on titles and text alike). */
body.body .wiziblocks__item.wiziblocks__item h3 { line-height: 1.2; }
body.body .wiziblocks__item.wiziblocks__item p,
body.body .wiziblocks__item.wiziblocks__item li { line-height: 1.55; }

/* Measure: 45-75 characters per line. A one-column text block spans the whole container otherwise. */
body.body .wiziblocks__item.wiziblocks__item .wizi-txt--one p { max-width: 68ch; margin-inline: auto; }

/* Elevation: layered shadows. A single shadow reads as cheap; the theme ships one at 75% opacity. */
body.body .wiziBtn:hover { box-shadow: var(--wz-elev-2); }

/* Visible focus ring (WCAG 2.4.7). Keyboard only: it never shows on a mouse click. */
body.body a:focus-visible,
body.body button:focus-visible,
body.body input:focus-visible,
body.body select:focus-visible,
body.body textarea:focus-visible,
body.body [tabindex]:focus-visible {
    outline: 3px solid var(--primary-color);
    outline-offset: 2px;
    border-radius: var(--wz-radius-s);
}

/* Every header variant pins itself on mobile, so an anchor or a keyboard focus
   lands under it without this (WCAG 2.4.11 Focus Not Obscured). Values measured
   in a browser, not guessed: docs/tools/header-sticky-probe.mjs. */
html { scroll-padding-top: 70px; }
@media (min-width: 1024px) { html { scroll-padding-top: 97px; } }

/* /wz-foundations */

/* wz-purchase-light — 2026-10-28 */
/* wz-purchase-light — 2026-10-27 : parcours d'achat sur fond clair crème.
   La vitrine reste sombre ; prix, bouton d'achat et formulaires passent
   au contraste maximal (confort des yeux + conversion).
   La fiche produit n'a pas de classe de corps dédiée : :has() la cible. */
body.page-cart,
body.page-validation,
body:has(.prod-details),
body:has(.checkout) {
  background: #faf6ee;
  color: #14100d;
}
body:has(.prod-details) .prod-title,
body:has(.prod-details) .prod-info,
body:has(.prod-details) .prod-price,
body:has(.prod-details) .prod-price .price {
  color: #14100d;
}
body:has(.prod-details) .prod-price,
body:has(.prod-details) .prod-price .price {
  color: #8f5722;
}
body.page-cart a:not(.btn),
body.page-validation a:not(.btn),
body:has(.prod-details) a:not(.btn) {
  color: #8f5722;
  text-decoration: none;
}
/* wz-footer-contrast — 2026-10-27 : liens cuivre foncé sur le pied de page clair (2,9:1 -> 6,4:1). */
body.body #footer a:not(.btn):not([class*="button"]) {
  color: #8f5722;
}
