/**
 * PurePeptide — raccords entre le balisage WordPress et le design system.
 *
 * `css/styles.css` est la référence validée, identique au site statique : on n'y
 * touche pas. Cette feuille corrige uniquement ce que WordPress et WooCommerce
 * imposent en plus, et rien d'autre. Chargée après `pp-main`.
 */

/* ==========================================================================
   1 · Hauteurs d'images écrasées par WooCommerce
   --------------------------------------------------------------------------
   `woocommerce-layout.css` pose `.woocommerce img, .woocommerce-page img
   { height: auto }` — spécificité (0,1,1), qui bat `.pd__photo` ou
   `.brand__mark` (0,1,0). Résultat sur toute page boutique : le flacon de la
   fiche passe de 360 px à plus de 800 px et pousse la page vers le bas, tandis
   que le logo de l'en-tête tombe à 9 px de large.

   On re-épingle avec `img.classe` (0,2,1) : la victoire ne dépend alors plus de
   l'ordre de chargement des feuilles, seulement de la spécificité.
   Les valeurs et les points de rupture recopient `css/styles.css` à l'identique.
   ========================================================================== */

.woocommerce img.brand__mark,
.woocommerce-page img.brand__mark { height: 34px; width: auto; }

.woocommerce img.brand__word-img,
.woocommerce-page img.brand__word-img { height: 15px; width: auto; }

.woocommerce img.pd__photo,
.woocommerce-page img.pd__photo { height: 360px; width: auto; }

.woocommerce img.product__photo,
.woocommerce-page img.product__photo { height: 188px; width: auto; }

.woocommerce .ci__thumb img,
.woocommerce-page .ci__thumb img { height: 88px; width: auto; }

@media (max-width: 900px) {
	.woocommerce img.hero__media,
	.woocommerce-page .hero__media img { max-height: 280px; width: auto; }
}

@media (max-width: 600px) {
	.woocommerce img.pd__photo,
	.woocommerce-page img.pd__photo { height: 280px; }
	.woocommerce .ci__thumb img,
	.woocommerce-page .ci__thumb img { height: 66px; }
}

/* Après le palier 600 px, comme dans styles.css où cette règle vient plus bas. */
@media (max-width: 680px) {
	.woocommerce img.pd__photo,
	.woocommerce-page img.pd__photo { height: 240px; }
	.woocommerce img.product__photo,
	.woocommerce-page img.product__photo { height: 124px; }
}

/* ==========================================================================
   2 · Navigation : wp_nav_menu emballe les liens dans <ul><li>
   --------------------------------------------------------------------------
   Le site statique écrit des `<a>` directement dans `.nav__links`, que le CSS
   dispose en ligne. `wp_nav_menu()` intercale un `<ul>` en `display:block` :
   le `<ul>` devient l'unique enfant flex, et les `<li>` s'empilent
   verticalement, à puces. On rend la liste transparente à la mise en page.
   ========================================================================== */

.nav__links ul {
	display: flex;
	align-items: center;
	gap: 28px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.nav__links li { margin: 0; padding: 0; list-style: none; }
.nav__links li::marker { content: ""; }

/* Menu déplié en petit écran : la liste suit la colonne, comme les `<a>` nus. */
@media (max-width: 900px) {
	.nav.menu-open .nav__links ul {
		flex-direction: column;
		align-items: stretch;
		width: 100%;
		gap: 12px;
	}
}

/* Le pied de page utilise aussi wp_nav_menu quand un menu `footer` est assigné. */
.footer__cols ul { margin: 0; padding: 0; list-style: none; }
.footer__cols li { margin: 0; padding: 0; list-style: none; }

/* ============================================================
   COMPLIANZ — bandeau de consentement à la charte PurePeptide
   ============================================================
   Complianz porte la LOGIQUE (blocage des scripts avant consentement, registre
   des cookies, journal de preuve). On ne touche qu'à l'apparence : aucun
   sélecteur ci-dessous ne masque un bouton, n'en change l'ordre ni n'en modifie
   le comportement — le faire invaliderait le consentement recueilli.

   Règle non négociable, reprise du bandeau maison qu'il remplace :
   « Refuser » garde EXACTEMENT le même poids visuel que « Accepter ». Même
   taille, même graisse, même largeur. Seul le remplissage les distingue, ce que
   la CNIL admet ; un refus grisé ou rapetissé, non.

   Ce bloc vit dans wp-compat.css et non dans styles.css : c'est un raccord vers
   une extension WordPress, pas une pièce du design system partagé avec le site
   statique. ============================================================ */

#cmplz-cookiebanner-container .cmplz-cookiebanner {
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: #fff;
  box-shadow: 0 18px 44px rgba(18, 42, 84, .16);
  padding: 22px 24px;
  font-family: inherit;
  max-width: 1120px;
}
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-header { margin-bottom: 6px; }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-title {
  font-size: 17px; font-weight: 700; letter-spacing: -.01em;
  color: var(--ink); -webkit-text-fill-color: var(--ink); background: none;
}
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-close { color: var(--ink-soft); }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-divider { display: none; }

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-body,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-message {
  font-size: 14px; line-height: 1.6;
  color: var(--ink-soft); -webkit-text-fill-color: var(--ink-soft); background: none;
}

/* ---- Boutons : mêmes dimensions, seul le remplissage change ---- */
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons { gap: 10px; margin-top: 16px; }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn {
  flex: 1 1 0; min-width: 140px;
  padding: 12px 20px;
  font-family: inherit; font-size: 13.5px; font-weight: 600; letter-spacing: .01em;
  border-radius: 999px; border: 1px solid transparent;
  text-transform: none; box-shadow: none;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-accept,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-save-preferences {
  background: var(--grad); background-origin: border-box;
  color: #fff; -webkit-text-fill-color: #fff;
  box-shadow: 0 1px 2px rgba(18, 42, 84, .18), 0 8px 20px rgba(18, 58, 120, .22);
}
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-deny,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences {
  background: #fff; border-color: #cfd8e3;
  color: var(--brand-navy); -webkit-text-fill-color: var(--brand-navy);
}
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn:hover { transform: translateY(-1px); }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn:focus-visible {
  outline: 2px solid var(--brand-blue); outline-offset: 2px;
}

/* ---- Catégories et liens ---- */
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-categories { margin-top: 14px; }
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-category {
  border: 1px solid var(--line); border-radius: 10px; background: var(--bg-soft);
}
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-category-header .cmplz-category-title {
  font-size: 13.5px; font-weight: 600; color: var(--ink); -webkit-text-fill-color: var(--ink);
}
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-links,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-links .cmplz-link {
  font-size: 12.5px; color: var(--brand-blue); -webkit-text-fill-color: var(--brand-blue);
}
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-links .cmplz-link:hover { text-decoration: underline; }

/* ---- Onglet « gérer le consentement » ---- */
#cmplz-manage-consent .cmplz-manage-consent {
  font-family: inherit; font-size: 12.5px; font-weight: 600;
  background: var(--brand-navy); color: #fff; -webkit-text-fill-color: #fff;
  border: none; border-radius: 999px 999px 0 0; padding: 9px 16px;
}

@media (max-width: 640px) {
  #cmplz-cookiebanner-container .cmplz-cookiebanner { padding: 18px 16px; }
  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn { min-width: 0; font-size: 13px; }
}

/* ---------- Complianz : centrage et fermeture ----------
   Deux défauts constatés en production :
   1. Le bandeau était collé en bas à DROITE (classe `cmplz-bottom-right` posée
      par le réglage de l'extension) au lieu d'être centré.
   2. Sa feuille générée applique `height:calc(100vh - 20px)` et `zoom:.6` pour
      les petits écrans ; quand ces règles fuyaient, le bandeau occupait toute
      la hauteur et sa fermeture laissait une zone fantôme.

   ⚠️ On ne touche PAS à `display` sur l'état normal : la fermeture de Complianz
   repose sur `.cmplz-cookiebanner.cmplz-dismissed{display:none}`. Poser un
   `display:flex !important` sur le bandeau rendrait la fermeture inopérante —
   le bandeau resterait affiché après le clic. On agit uniquement sur la
   géométrie, et on réaffirme le masquage à specificité supérieure. */

#cmplz-cookiebanner-container .cmplz-cookiebanner {
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%);
  bottom: 20px !important;
  top: auto !important;
  width: min(1120px, calc(100vw - 32px)) !important;
  max-width: none !important;
  height: auto !important;
  max-height: min(72vh, 660px) !important;
  zoom: 1 !important;
  padding: 22px 24px !important;
  margin: 0 !important;
}

/* Réaffirmé plus spécifique que la règle de géométrie ci-dessus, pour que la
   fermeture l'emporte toujours. */
#cmplz-cookiebanner-container .cmplz-cookiebanner.cmplz-dismissed,
#cmplz-cookiebanner-container .cmplz-cookiebanner.cmplz-hidden {
  display: none !important;
}

/* Le corps ne doit pas imposer sa propre hauteur de défilement une fois le
   bandeau ramené à une taille raisonnable. */
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-body {
  max-height: none !important;
  overflow: visible !important;
  min-width: 0 !important;
}

@media (max-width: 700px) {
  #cmplz-cookiebanner-container .cmplz-cookiebanner {
    width: calc(100vw - 20px) !important;
    bottom: 10px !important;
    padding: 18px 16px !important;
    max-height: 80vh !important;
  }
  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-body {
    overflow-y: auto !important; max-height: 40vh !important;
  }
}

/* ==========================================================================
   Icône de site dans la barre d'admin (visible pour les administrateurs
   connectés uniquement — jamais pour les visiteurs)
   --------------------------------------------------------------------------
   Depuis WordPress 7, `#wp-admin-bar-site-name` embarque un `img.site-icon`
   avec `width="20" height="20"` en attributs. Une règle de reset du design
   system le ramène à sa taille NATIVE (le PNG 100×100 du favicon) : il
   s'affichait en 100 px, pixélisé, par-dessus l'en-tête du site. On
   ré-épingle à la taille prévue par la barre — même motif que la section 1 :
   la spécificité (1,1,1) gagne quel que soit l'ordre de chargement.
   ========================================================================== */

#wpadminbar img.site-icon { width: 20px; height: 20px; }
